Beim Versuch, die Existenz eines Benutzernamens in einer Datenbank mit jQuery.validate zu überprüfen, Der Fehler wird immer ausgelöst und zeigt an, dass der Benutzername bereits vergeben ist, auch wenn dies nicht der Fall ist. Das Problem entsteht durch den zur Validierung verwendeten PHP-Code.
Die erste Implementierung verwendete den folgenden jQuery-Code:
$("#signupForm").validate({ rules: { username: { required: true, minlength: 3, remote: "check-username.php", }, }, messages: { username: { remote: "This username is already taken! Try another.", }, }, });
Und das folgende PHP-Skript zur Validierung :
<?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); ?>
Das Problem wurde durch Überarbeitung des PHP behoben Skript. Der geänderte Code:
<?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; ?>
Der ursprüngliche PHP-Code verwendete mysql_real_escape_string, um die Variable $name zu bereinigen. Es war jedoch ein umfassenderer Ansatz zur Bereinigung der Eingabe erforderlich. Darüber hinaus wurde die Logik der if-else-Anweisung invertiert, um die richtige Antwort zu erzeugen: if ($result != 0) hätte angezeigt, dass der Benutzername existiert.
Das obige ist der detaillierte Inhalt vonWarum zeigt meine jQuery-Validierung der Remote-Methode immer die Verfügbarkeit des Benutzernamens an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!