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

Pourquoi ma méthode de validation jQuery à distance indique-t-elle toujours l'existence d'un nom d'utilisateur ?

Susan Sarandon
Libérer: 2024-12-27 17:54:12
original
429 Les gens l'ont consulté

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

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

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

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!

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