Heim > Backend-Entwicklung > PHP-Tutorial > Warum zeigt meine jQuery-Validierung der Remote-Methode immer die Verfügbarkeit des Benutzernamens an?

Warum zeigt meine jQuery-Validierung der Remote-Methode immer die Verfügbarkeit des Benutzernamens an?

Barbara Streisand
Freigeben: 2024-12-15 04:47:15
Original
832 Leute haben es durchsucht

Why Does My jQuery Validate Remote Method Always Indicate Username Availability?

jQuery Validate Remote Method kann die Verfügbarkeit des Benutzernamens nicht überprüfen

Problembeschreibung

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.

Erste Implementierung

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.",
    },
  },
});
Nach dem Login kopieren

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);
?>
Nach dem Login kopieren

Gelöste Implementierung

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;
?>
Nach dem Login kopieren

Analyse

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage