Méthode à distance jQuery Validate : validation de l'existence du nom d'utilisateur
jQuery Validate fournit une méthode à distance qui vous permet de vérifier si une valeur existe déjà dans un base de données. Cependant, vous pouvez parfois rencontrer des scénarios dans lesquels la validation se déclenche toujours, indiquant que le nom d'utilisateur est pris même s'il ne l'est pas.
Spécification du problème
Considérez le jQuery suivant et code PHP tentant de valider l'existence du nom d'utilisateur :
// 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); ?>
Ce code signale systématiquement le nom d'utilisateur comme pris, même s'il ne le fait pas. existe.
Solution
Pour résoudre le problème, vous devez modifier le script PHP. Plus précisément, la requête utilisée pour vérifier l'existence du nom d'utilisateur doit être mise à jour :
// 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; ?>
Le script PHP précédent utilisait mysql_real_escape_string pour se protéger contre l'injection SQL, mais il n'incluait pas la variable $username dans la requête. Cela a entraîné une vérification incorrecte qui a toujours renvoyé un résultat positif, indiquant que le nom d'utilisateur a été pris.
Avec le script PHP révisé, la requête vérifie correctement l'existence du nom d'utilisateur spécifique, garantissant une validation précise.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!