Espace membres : probleme test doublons

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 : Espace membres : probleme test doublons

par supercanard » 11 mai 2007, 10:45

Merci pou l'astuce =) ça m'évite une boucle

et je rajoute la suite au cas ou ça serve a quelqun :

Code : Tout sélectionner

if ($data['login'] != '0') { // VERIF DOUBLON echo 'double !'; exit(); }

par Ryle » 11 mai 2007, 08:36

Tu peux même, au lieu de ramener tous les enregistements de ta table et les tester un par un, simplement compter le nombre d'enregistrement correspondant :
$req= "SELECT COUNT(*) FROM ipi_users WHERE login = '".$login2."'"; 
S'il compte 1 ou plus de résultat, c'est que ton login est en doublon ;)

Quant au strip_tags, bah c'est juste une question de logique... dans ta base les enregistrement sont "stripés" ou pas ? Si oui, ben tu le fais dès le début pour les comparer, s'ils ne le sont pas, tu ne le fais pas :)


Edit : tant que j'y pense et avant que tu ne poses la question, en cas d'update, pour vérifie l'anti-doublon, il faut retirer de la liste des résultats l'id du user que tu es en train de mettre à jour (parce que sinon, c'est normal que son login existe déjà ;))
$req= "SELECT COUNT(*) 
  FROM ipi_users 
  WHERE login = '".$login2."'
  AND id_du_user != ". $idDuUser; 

par supercanard » 11 mai 2007, 00:54

Je viens de donner la réponse a ma question en fait :lol:

Sinon pour strip_tags ? Avant ou aprés la verif des doublons :roll:

Espace membres : probleme test doublons

par supercanard » 11 mai 2007, 00:48

Bonsoir
Voilà mon chtit probleme :

J'ai un formulaire d'inscription, un code php derriere qui controle si l'identifiant n'existe pas déjà dans la BSD avant l'insertion.
Je test avec mon email comme identifiant, pas de problème il me detecte le doublon.
Ensuite je refait la manip avec comme identifiant "test", et là pof il me l'ajoute dans la BSD, alors qu'une ligne ayant "test" comme identifiant existe déjà...

Donc ça semble marcher un coup sur deux, j'avou que je comprend pas :?

Code : Tout sélectionner

// INSCRIPTION if (isset($_POST['login2'])) { // RECUP DES LOGINS EXISTANTS $req= "SELECT login FROM ipi_users"; $result= mysql_query($req); $data= mysql_fetch_array($result); if ($data['login'] == $login2) { // TEST DOUBLON echo '<script type="text/javascript">document.location.href="index.php?alerte='.$alerte3.'"</script>'; } else { // SI C'EST BON ON AJOUTE $login= strip_tags($_POST['login']); $pwd= strip_tags($_POST['pass2']); $req= "INSERT INTO ipi_users (id_user,login,pwd) VALUES ('','$login','$pwd')"; $result= mysql_query($req); $to= $login; $subject= 'Inscription à iPost-it'; $message= 'Bonjour, Votre inscription c\'est déroulée avec succès. Voici les informations de votre compte : Identifiant : '.$login.' Mot de passe : '.$pwd.' http://ipost-it.go.dyndns.org/'; $headers= 'From: [email protected]' . "\r\n" . 'Reply-To: [email protected]' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); echo '<script type="text/javascript">document.location.href="index.php?alerte='.$alerte5.'"</script>'; } }
En passant, peut être que strip_tags je devrais le faire dès le départ, avant le test doublon ?

Sinon pour le problème je vois pas du tout... A moins qu'il faille faire un while sur l test doublon, car la il me teste peut être seulement la première ligne de la BSD ... ? :roll: