Ich habe ein paar Methoden ausprobiert, ich habe bestätigt, dass es ein spezielles Charakterproblem ist, dh. Ich versuchte eine einfache Passwortkombination, die nur Buchstaben/Zahlen enthielt und das funktionierte.Was ist der richtige Weg, um ein Passwort über JavaScript AJAX zu PHP zu senden?
Seit ich mit jQuery aufgehört habe, ist dies das erste Mal, dass ich ein Problem hatte, wo password_verify nicht funktionieren würde. Ich habe sichergestellt, dass, wie ich oben erwähnt habe, mit password_verify nichts falsch war.
So bekomme ich mein Passwort-Eingabe und ich verbinden es mit dem Benutzernamen wie folgt aus:
var params = null,
paramObj = {};
paramObj['user'] = loginInpUser.value;
paramObj['pass'] = loginInpPass.value;
params = encodeURI('post_params='+JSON.stringify(paramObj));
Auf der PHP-Seite ich dies wie so in POST erhalten:
$post_params = json_decode($_POST['post_params'], true);
$user = $post_params['user'];
$pass = $post_params['pass'];
ich sicher machte Ich bekomme passende Werte von dem, was ich auf der Client-Seite sende, zu dem, was PHP bekommt, dh. $ User Echo und $ passieren, sie passen genau ... die Sonderzeichen in Frage sind:
)(#$$%)(
Ich habe nicht einmal in einem & dort zu werfen versucht, die Probleme mit verursachen können, wie Sie die verketten Parameter vor dem Senden mit einer XMLHttpRequest.
Also was ist der richtige Weg, dies zu tun, wo Sonderzeichen noch korrekt geparst werden (password_verify stimmt mit Hash mit Passwort überein)?
Es gibt einen Grund, keine jQuery für mich zu verwenden, um die Downloadgeschwindigkeit der Datei zu senken - verwenden Sie asynchrone Tags.
Edit:
Seltsame mit Hashes:
Ich brauchte nur ein einfaches Login-System, so dass ich nicht mit einem Register Form stören, ich habe eine Hash-Funktion erstellt, die password_hash verwendet und steckte ihn in ein db. Ich bemerkte, dass
$pass = "password with special chars";
Würde nicht verwenden, würde der Fehler sagen, dass etwas in der Zeichenfolge war eine nicht definierte Variable (string ist zerschneiden, ich denke, ein Parsing-Fehler).
Aber
$pass = 'password with special chars';
mit diesem war in Ordnung.
https: //developer.mozilla.org/de-DE/docs/Web/JavaScript/Referenz/Global_Objects/encodeURI "Beachten Sie, dass encodeURI selbst keine richtigen HTTP-GET- und POST-Anfragen erstellen kann, z. B. für XMLHTTPRequests, weil" & "," + "und" = " sind nicht codiert, die in GET- und POST-Anfragen als Sonderzeichen behandelt werden. encodeURIComponent kodiert diese Zeichen jedoch. " – ceejayoz
Randnotiz: Das ist ein seltsamer Grund, jQuery nicht zu verwenden. Sie könnten eine andere, kleinere Bibliothek wie Axios verwenden - es ist dumm, Ihre eigenen XMLHTTPRequests zu erstellen. – ceejayoz
Ich habe das auch versucht, encodeURIComponent, danke für den Link, den ich überprüfen werde. Es gibt auch die Frage, ob ich dann URL-Code auf der PHP-Seite mit einem dieser Fälle verwenden. Ich denke nicht für den ersten Fall (mit Urlencode). – subalublub