Maison > développement back-end > tutoriel php > Pourquoi ma méthode de validation jQuery à distance indique-t-elle toujours la disponibilité du nom d'utilisateur ?

Pourquoi ma méthode de validation jQuery à distance indique-t-elle toujours la disponibilité du nom d'utilisateur ?

Barbara Streisand
Libérer: 2024-12-15 04:47:15
original
832 Les gens l'ont consulté

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

La méthode distante de validation jQuery ne parvient pas à vérifier la disponibilité du nom d'utilisateur

Description du problème

Lors de la tentative de validation de l'existence d'un nom d'utilisateur dans une base de données à l'aide de jQuery.validate, l'erreur est toujours déclenchée, indiquant que le nom d'utilisateur est déjà pris, même si ce n'est pas le cas. Le problème se pose avec le code PHP utilisé pour la validation.

Implémentation initiale

L'implémentation initiale a utilisé le code jQuery suivant :

$("#signupForm").validate({
  rules: {
    username: {
      required: true,
      minlength: 3,
      remote: "check-username.php",
    },
  },
  messages: {
    username: {
      remote: "This username is already taken! Try another.",
    },
  },
});
Copier après la connexion

Et le script PHP suivant pour la validation :

<?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);
?>
Copier après la connexion

Implémentation résolue

Le problème a été résolu en révisant le script PHP. Le code modifié :

<?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;
?>
Copier après la connexion

Analyse

Le code PHP initial utilisait mysql_real_escape_string pour nettoyer la variable $name. Cependant, une approche plus globale pour nettoyer les entrées était nécessaire. De plus, la logique de l'instruction if-else a été inversée pour produire la réponse correcte : if ($result != 0) aurait indiqué que le nom d'utilisateur existe.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal