2017-11-29 4 views
1

anmelden Ich habe eine benutzerdefinierte Registrierungsseite in meiner WordPress-Website für Besucher zur Anmeldung erstellt. Auf dieser Seite sammle ich das Passwort des Benutzers und speichere es, nachdem ich einen Passwort-Hash gemacht habe, $password_hash = wp_hash_password($password). Aber wenn ich versuche, mich an wp-admin anzumelden, heißt es Falsches Passwort. HierKann nicht in WordPress Admin mit manuell hashed Passwort in benutzerdefinierten Benutzerregistrierung in WordPress

ist der Code-Snippet ich verwende für das Speichern von Benutzerdaten:

function process_registration() { 
    $password = sanitize_text_field($_POST['signup_password']); 
    //Grabbing other values like firstname, lastname etc. 

    $password_hash = wp_hash_password($password); 

    $user_data = array(
    //other fields... 
    'user_pass' => $password_hash, 
    'role' => 'contributor', 
); 

    $new_user_id = wp_insert_user($user_data); 

    if(is_wp_error($new_user_id)) { 
    //Do some stuff 
    } else { 
    // Do something else 
    } 
} 

jedoch erstellte Benutzer von wp-admin Panel ist in der Lage fein einzuloggen. Ist es nicht möglich, das Passwort des Benutzers zu erfassen und mit dem benutzerdefinierten Registrierungsformular zu speichern und später für die Anmeldung zu verwenden?

Ich bin noch neu in WordPress. Jeder Rat würde sehr helfen!

UPDATE:

Nach einem Blick in einige Artikel und Threads Ich habe erkannt, dass selbst für den gleichen Text gehasht Zeichenfolge zu erzeugen immer anders sein, und das ist, warum es nicht in der Lage, das Hash-Passwort übereinstimmen der aktuelle. Wenn ja, wie kann ein anderer Benutzer, der in WordPress Admin erstellt wurde, sich anmelden? Verwendet das einen anderen Ansatz? Wenn ja, was? Aber es nicht, was ich vermisse?

+0

Diese Funktion 'sanitize_text_field()' könnte das Problem normalerweise, wenn Sie mit 'password_hash()' Sie einen anderen Mechanismus zu entkommen/Reinigungsmechanismus nicht verwenden Umgang –

+0

* "Ich habe erkannt, dass für String gehasht Erzeugen selbst der gleiche Text wird immer anders sein, und deshalb ist es nicht möglich, das gehashte Passwort mit dem aktuellen zu vergleichen. "* - Wie es sein sollte. Du erwartest nicht, dass du den gleichen Hash hast? MD5 hingegen erzeugt den gleichen Hash. Deine Frage ist ein bisschen unklar; Wie lang ist die Länge der Passwortspalte? –

+0

@MasivuyeCokile Ich habe deine Lösung versucht, aber kein Glück. –

Antwort

1
function process_registration() { 

    global $wpdb; 
    $password_converter=wp_hash_password('tara123451'); 
     $user_insert_query=$wpdb->insert('wp_users', array(
     'user_login' =>'username1', 
     'user_pass' =>$password_converter, 
     'user_email' =>'[email protected]', 
     )); 

     $user_id = $wpdb->insert_id; 
     wp_update_user(array(
     'ID' =>$user_id, 
     'role' => 'contributor' 
     )); 
}    
+0

Danke! Aber könnte ich bitte erzählen, wie sich das von meinem Ansatz unterscheidet? Ich mache "wahrscheinlich" dasselbe, außer dass du ein Update benutzt hast, während ich es nicht benutze und die Einfügung auf einmal mache. Wie wird dies das Problem lösen? –

+0

Whoa! Es funktionierte!! Es wäre toll, wenn du mir sagst warum. –

+0

Ich habe es !! Das Problem ist, dass ich eine Hash-Zeichenfolge für das Passwort basierend auf Benutzereingaben im Voraus erstellt habe, bevor ich es in das Array übertrage. Die 'wp_insert_user'-Funktion selbst kümmert sich um den Passwort-Hash und wir müssen uns nicht darum kümmern. Aber in Ihrer Lösung, weil Sie die Daten unter Verwendung einer direkten Einfügeabfrage einfügen, müssen Sie den Hash zuerst erstellen :) Unterste Zeile ist 'wp_insert_user 'Funktion benötigt ein Klartext-Passwort. Jetzt funktioniert mein Ansatz auch gut. Ihre Lösung hat mich tatsächlich in die richtige Richtung getrieben, um das Problem herauszufinden. Vielen Dank für deine Hilfe !! –

Verwandte Themen