Vérification pseudo existant
parousky
Messages postés
325
Date d'inscription
Statut
Membre
Dernière intervention
-
torskint -
torskint -
Bonjour, je suis face à un problème vraiment VRAIMENT saoulant ! Ca fait des heures que j'essaie de faire comprendre à mon ordi que si un pseudo est déjà pris, il doit afficher "pseudo déjà pris" et dans le cas contraire "pseudo valide". Alors j'ai un formulaire sur une page qui envoie le pseudo à une autre page qui doit traiter tout ça. Voilà le code de la deuxième page :
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$ps = $_POST['nom'];
$req = $bdd->query('SELECT pseudo FROM utilisateur WHERE pseudo=$ps');
if(isset($req))
{
echo "Le pseudo est pris par un autre membre";
}
if(!isset($req))
{
echo "Le pseudo n'est pas déjà pris par un autre membre.";
}
?>
Le formulaire envoie le pseudo sous le nom "nom". J'ai essayé je ne sais combien de méthodes différentes et aucune ne marche alors si quelqu'un trouvait le problème dans mon code, je lui en serait très reconnaissant !
Merci d'avance !
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$ps = $_POST['nom'];
$req = $bdd->query('SELECT pseudo FROM utilisateur WHERE pseudo=$ps');
if(isset($req))
{
echo "Le pseudo est pris par un autre membre";
}
if(!isset($req))
{
echo "Le pseudo n'est pas déjà pris par un autre membre.";
}
?>
Le formulaire envoie le pseudo sous le nom "nom". J'ai essayé je ne sais combien de méthodes différentes et aucune ne marche alors si quelqu'un trouvait le problème dans mon code, je lui en serait très reconnaissant !
Merci d'avance !
A voir également:
- Vérification pseudo existant
- Pseudo whatsapp - Accueil - Messagerie instantanée
- Pseudo facebook - Guide
- Verification lien internet - Guide
- Verification windows 11 - Guide
- Retrouver son compte epic games avec son pseudo - Forum Jeux vidéo
1 réponse
Salut,
Je commence avec un exemple :
Entre simple quotes, PHP considère la chaîne comme étant purement du texte.
Entre double quotes, PHP analyse le contenu de la chaîne espérant trouver quelque chose a interpréter.
Donc puisque tu as utiliser un simple quotes, alors ta variable $ps n'est pas interprété comme étant le nom d'une variable, mais est plutôt considéré comme une chaîne de caractère.
Alors la solution est :
Les deux méthodes sont déconseillé car passible d'une injection SQL, c'est possible d'utiliser des fonctions afin d'éviter cela, mais ... puisque tu utilises PDO, c'est vraiment du gâchis de ne pas utiliser les requêtes préparés !
Lorsqu'une requête doit recevoir des paramètres en entrés, on utilise les requêtes préparés afin d'éviter tout danger ...
Exemple d'une requête préparés rapide :
Le reste de ton code est faux, car la variable $req existe dans tout les cas, parce qu'elle retourne un résultat dans tout les cas.
Donc, il faut en premier temps récupérer le résultat, et normalement, puisque le pseudo est unique, alors on attend au plus 1 seul résultat.
Donc :
Mettez en résolu quand c'est résolu -.- ...
Je commence avec un exemple :
$pseudo = 'parousky'; echo '$pseudo'; // Ceci affichera : $pseudo echo "$pseudo"; // Ceci affichera : parousky
Entre simple quotes, PHP considère la chaîne comme étant purement du texte.
Entre double quotes, PHP analyse le contenu de la chaîne espérant trouver quelque chose a interpréter.
Donc puisque tu as utiliser un simple quotes, alors ta variable $ps n'est pas interprété comme étant le nom d'une variable, mais est plutôt considéré comme une chaîne de caractère.
Alors la solution est :
$req = $bdd->query("SELECT pseudo FROM utilisateur WHERE pseudo = '$ps'"); // Ou $req = $bdd->query('SELECT pseudo FROM utilisateur WHERE pseudo = \'' . $ps . '\'');
Les deux méthodes sont déconseillé car passible d'une injection SQL, c'est possible d'utiliser des fonctions afin d'éviter cela, mais ... puisque tu utilises PDO, c'est vraiment du gâchis de ne pas utiliser les requêtes préparés !
Lorsqu'une requête doit recevoir des paramètres en entrés, on utilise les requêtes préparés afin d'éviter tout danger ...
Exemple d'une requête préparés rapide :
$req = $bdd->prepare('SELECT pseudo FROM utilisateur WHERE pseudo = :ps'); $req->execute(array(':ps' => $ps));
Le reste de ton code est faux, car la variable $req existe dans tout les cas, parce qu'elle retourne un résultat dans tout les cas.
Donc, il faut en premier temps récupérer le résultat, et normalement, puisque le pseudo est unique, alors on attend au plus 1 seul résultat.
Donc :
$result = $req->fetch(); if(!empty($result)) { echo "Le pseudo est pris par un autre membre"; } else { echo "Le pseudo n'est pas déjà pris par un autre membre."; }
Mettez en résolu quand c'est résolu -.- ...
<?php
//requêtes
if($req->rowCount()>0){
echo 'pseudo deja pris';
}
else {
echo 'pseudo valide';
}
?>