Heim >Backend-Entwicklung >PHP-Tutorial >Warum zeigt meine jQuery-Validierung der Remote-Methode immer an, dass ein Benutzername vorhanden ist?
jQuery Validate Remote-Methode: Validieren der Existenz eines Benutzernamens
jQuery Validate bietet eine Remote-Methode, mit der Sie überprüfen können, ob ein Wert bereits in einem vorhanden ist Datenbank. Manchmal kann es jedoch vorkommen, dass die Validierung immer ausgelöst wird, was darauf hinweist, dass der Benutzername verwendet wird, auch wenn dies nicht der Fall ist.
Problemspezifikation
Bedenken Sie die folgende jQuery und PHP-Code, der versucht, die Existenz des Benutzernamens zu überprüfen:
// jQuery $("#signupForm").validate({ rules: { username: { required: true, minlength: 3, remote: "check-username.php" } }, messages: { username:{ remote: "This username is already taken! Try another." } } }); // check-username.php <?php require_once "./source/includes/data.php"; header('Content-type: application/json'); $name = mysql_real_escape_string($_POST['username']); $check_for_username = mysql_query("SELECT username FROM mmh_user_info WHERE username='$name'"); if (mysql_num_rows($check_for_username) > 0) { $output = true; } else { $output = false; } echo json_encode($output); ?>
Dieser Code meldet den Benutzernamen stets als vergeben, auch wenn dies nicht der Fall ist existieren.
Lösung
Um das Problem zu beheben, müssen Sie das PHP-Skript ändern. Insbesondere sollte die Abfrage aktualisiert werden, mit der die Existenz des Benutzernamens überprüft wird:
// check-username.php <?php require_once "./source/includes/data.php"; header('Content-type: application/json'); $request = $_REQUEST['username']; $query = mysql_query("SELECT * FROM mmh_user_info WHERE username ='$username'"); $result = mysql_num_rows($query); if ($result == 0){ $valid = 'true';} else{ $valid = 'false'; } echo $valid; ?>
Das vorherige PHP-Skript verwendete mysql_real_escape_string zum Schutz vor SQL-Injection, enthielt jedoch nicht die Variable $username in der Abfrage. Dies führte zu einer fehlerhaften Prüfung, die immer ein positives Ergebnis lieferte, was darauf hinweist, dass der Benutzername übernommen wurde.
Mit dem überarbeiteten PHP-Skript prüft die Abfrage korrekt die Existenz des spezifischen Benutzernamens und gewährleistet so eine genaue Validierung.
Das obige ist der detaillierte Inhalt vonWarum zeigt meine jQuery-Validierung der Remote-Methode immer an, dass ein Benutzername vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!