Inscription - vérification des pseudos

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Inscription - vérification des pseudos

Re: Inscription - vérification des pseudos

par moogli » 20 juil. 2011, 14:23

Le as sert a donner un alias (autre nom) a une colonne, lancera permet de nommer le resultat du count et l'utiliser plus simplement apres avec php.
Essai la requete avec phpmyadmin (sans le mysql_real_escape_string). Pur voir le resultat ;)
Coté php
$r = mysql_query($sql);
$data = mysql_fetch_assoc($r);
le nombre de membre ayant le meme pseudo est dans $data['nbpseudo'], si === 0 c'est bon sinon faut changer ;)

@+

Re: Inscription - vérification des pseudos

par Sylsky » 20 juil. 2011, 13:15

$sql='
Select count(pseudo) as nbpseudo from membres where pseudo=\''.mysql_real_escape_string($_POST['pseudo']).'\'';
Ok donc j'entre ça tel quel ou je dois modifier quelque chose? Parce que le nbpseudo me semble étrange :P

Re: Inscription - vérification des pseudos

par moogli » 20 juil. 2011, 10:07

Justement c'est ca qui est interressant si tu recherche le pseudo exact dans la table tu aura ou pas de reponse ;)

Le count permet de compter le nombre de tulles que l'on trouve. Donc avec ma requete tu va avoir le nombre de fois le pseudo du nouveau membre se trouve dans la table membres. Si la reponse est zero c'est bon sinon, faut changer de lot de passe ;)

@+

Re: Inscription - vérification des pseudos

par Sylsky » 19 juil. 2011, 23:51

Et comment je fais la vérification?

Le code qui traduirait:
reprends tous les pseudos (where?)
si $POST_PSEUDO est présent dans la table
...

C'est le "est présent dans" qui me dérange...

Re: Inscription - vérification des pseudos

par moogli » 19 juil. 2011, 23:45

Salut,

C'est parce que tu ne connais pas la clause where de SQL.
$sql='
Select count(pseudo) as nbpseudo from membres where pseudo=\''.mysql_real_escape_string($_POST['pseudo']).'\'';

@+

Inscription - vérification des pseudos

par Sylsky » 19 juil. 2011, 23:33

Bonjour!
J'ai commencé le PHP/SQL il y a 2 jours seulement. J'ai tenté de créer un script d'inscription avec quelques sécurités (vérification du mail, des champs vides,...). Mon soucis c'est que maintenant je souhaiterais vérifier si le pseudo entré par les gens est déjà existant dans la bdd ou pas, sinon: erreur et pas d'insertion.

Je vois pas vraiment comment faire ça, alors je vous partage mon code, en espérant obtenir un petit coup de pouce:
<?php
//connexion à la bdd
include("connexionbdd.php");
//fin de connexion à la bdd 
$drap = 0;
$_POST['pseudo'] = trim($_POST['pseudo']);
if (empty($_POST['pseudo'])) {
echo "<style>body{background-color:#FC3;}</style>Certains champs n'ont pas été remplis!<br>Veuillez <a href='formulaireinsc.php'>réessayer</a>.";
}
elseif (empty($_POST['mdp'])) {
echo "<style> body{background-color:#FC3;}</style>Certains champs n'ont pas été remplis!<br>Veuillez <a href='formulaireinsc.php'>réessayer</a>.";
}
elseif (empty($_POST['email'])) {
echo "<style>body{background-color:#FC3;}</style>Certains champs n'ont pas été remplis!<br>Veuillez <a href='formulaireinsc.php'>réessayer</a>.";
}

//anti doublon (not working)
// $listedespseudos = mysql_query("SELECT pseudo FROM membres");
// $pseudos = mysql_fetch_assoc($listedespseudos);
// elseif (ereg($_POST['pseudo'],$pseudos['pseudo'])) {
// echo "Pseudo déjà utilisé!";
// }
//fin anti doublon

//Sinon si TOUT (le mail aussi) EST OK, on exécute:
elseif (filter_var(($_POST['email']), FILTER_VALIDATE_EMAIL)) {
$drap = 1;
mysql_select_db("apprentissage", $con);
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$mdp = mysql_real_escape_string($_POST['mdp']);
$email = mysql_real_escape_string($_POST['email']);
//retrait des espaces
include("antiespaces.php");
//fin retrait des espaces
mysql_query("INSERT INTO membres (pseudo,mdp,email) VALUES ('$pseudo', '$mdp', '$email')");
echo "<style>body{background-color:#FC3;}</style>Vous êtes bien inscrit! <br><br>Bienvenue <b>".$pseudo."</b>!<br><br>Revenir à l'<a href='formulaireinsc.php'>accueil</a>.";
}
elseif ($drap == 0) {
echo "<style>body{background-color:#FC3;}</style>L'adresse mail est invalide! <br>Veuillez <a href='formulaireinsc.php'>réessayer</a>.";
}

//on ferme la connexion à la bdd
mysql_close($con);
?>
Vous pouvez remarquer la partie anti doublon insérée en commentaire qui ne fonctionnait pas :(

Merci d'avance :)