Vérifier si le pseudo et mail existe déjà avant inscription

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 : Vérifier si le pseudo et mail existe déjà avant inscription

par solodown » 08 déc. 2007, 14:24

je vais test le code de Victor BRITO en 1er :wink:

Volkow ton site fait parti des sites de jeux gratuit rémunerateur, non?

par Volkow » 08 déc. 2007, 01:37


edit Volkow ahhh !! tu fait une vérif dans une vérif, pas con sa, je vais voir(je vois qu'on est dans la même categorie de site, sympa sa)
Merci ^^.

La même catégorie? Heu...niveau système de parrainage je pense que oui, niveau thème, je doute fort ^^.

par Power Web » 08 déc. 2007, 01:07

Moi je fais quelque chose d'assez simple :
<?php
// Requête SQL
$membre_sql = mysql_query("SELECT pseudo, email FROM membre_tbl WHERE pseudo='$pseudo' AND email='$email'") or die('Erreur SQL : '. $membre_sql . '<br /> ' . mysql_error()); 
$membre_data = mysql_fetch_assoc($membre_sql);

// On vérifie
if( $pseudo == $membre_data['pseudo'] ) // Si $pseudo est égal à $membre_data['pseudo'] 
{ echo "Erreur : le pseudo '$pseudo' est déjà utilisé !"; }

if( $email == $membre_data['email']) { echo "Erreur : l'adresse email '$email' est déjà utilisée !"; }

else { ... }
?>
C'est surement pas la meilleure méthode mais ça marche impec' :wink:

par Truc » 08 déc. 2007, 01:04

Pour la vérifier si le pseudo et mail existe déjà avec d'inscrire un membre
Le détail qui doit t'écharpper est l'option "UNIQUE" sur le champ pseudo que te propose Victor BRITO

Code : Tout sélectionner

ALTER TABLE ta_table ADD UNIQUE pseudo (pseudo), ADD UNIQUE email (email);
SI le champ est déclaré unique impossible d'y insérer une valeur qui existe déjà... donc un pseudo qui existe déjà.

par solodown » 08 déc. 2007, 00:31

Pardon :oops: truc

Pour la vérifier si le pseudo et mail existe déjà avec d'inscrire un membre

edit Volkow ahhh !! tu fait une vérif dans une vérif, pas con sa, je vais voir(je vois qu'on est dans la même categorie de site, sympa sa)

par Volkow » 07 déc. 2007, 23:31

Moi pour la vérification d'un pseudo, d'un email déjà existant et d'un champ "parrainage" j'utilise cela:

$pseudo = $_POST['pseudo'];
$mdp = $_POST['mdp'];
$email = $_POST['email'];
$date = date("d-m-Y");
$parrain = $_POST['parrain'];
$pays = $_POST['pays'];

// on regarde si le pseudo existe déjà
    $sql = "SELECT id FROM membre_tbl WHERE pseudo='$pseudo'";
    $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
    
    // on compte le nombre de résultats
    $res = mysql_num_rows($req);

    if($res!=0)  // le pseudo existe déjà, on affiche un message d'erreur
        {
        ?>
		<script language="JavaScript">
document.location.href="inscription.php?pseud=Le pseudo existe déjà!&#haut";
</script>
<?php
        }
    else  // Le pseudo n'existe pas, on continue la vérification
        {
		
		$sql = "SELECT id FROM membre_tbl WHERE email='$email'";
    $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
    
    // on compte le nombre de résultats
    $res = mysql_num_rows($req);

    if($res!=0)  // l'email existe déjà, on affiche un message d'erreur
        {
        ?>
		<script language="JavaScript">
document.location.href="inscription.php?mail=Cette e-mail est déjà pris!&#haut";
</script>
<?php
        }
    else  // L'email n'existe pas, on continue la vérification
        {
		$sql = "SELECT id FROM membre_tbl WHERE pseudo='$parrain'";
    $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
    
    // on compte le nombre de résultats
    $res = mysql_num_rows($req);

    if($res==0)  // le parrain n'existe pas, on affiche un message d'erreur
        {
        ?>
		<script language="JavaScript">
document.location.href="inscription.php?parra=Ce parrain n'existe pas!&#haut";
</script>
<?php
        }
    else  
        {

		// on crée la requête SQL
$sql = "INSERT INTO membre_tbl(id,pseudo,mdp,email,date,parrain,points,pays) VALUES('','$pseudo','$mdp','$email','$date','$parrain','','$pays')";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

		// on crée la requête SQL
$sql = "UPDATE membre_tbl SET points=points+500 WHERE pseudo='$parrain'";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// on ferme la connexion à mysql
mysql_close();
Bon après je ne sais pas si c'est très sécurisé mais c'est ce que j'utilise et ça marche très bien! CHez moi en tout cas...^^

par Truc » 07 déc. 2007, 23:25

c'est quoi "l'autre chose" :-k

par solodown » 07 déc. 2007, 23:23

merci du conseil Truc

Pour l'autre chose, j'ai pas tres bien compris :oops:

par Truc » 07 déc. 2007, 22:03

la a ce que je comprends bien la

Il insert puis vérife :?:
Oui si tu as suivis les conseils de Victor BRITO l'insertion en base ne se fera pas puisque le champ pseudo est décalré "unique" donc qui dit pas d'insertion dit mysql_insert_id() renvoit 0.

Pour l'ajout tu fais erreur:

Code : Tout sélectionner

set points += 500
fonctionnera mieux... avant tu ajoutais la chaine de caractère "+500" au champ points

par solodown » 07 déc. 2007, 21:29

la a ce que je comprends bien la

Il insert puis vérife :?:

Par contre à quoi correspond ceci dans la requête UPDATE

Code : Tout sélectionner

set points='+500'

un "+500" :-k
ajout 500 points au filleul

par Truc » 07 déc. 2007, 21:18

La vous avez carrement viré un if(vérif des passe) non ?
J'en ai viré un pour en mettre un autre, qui vérifie s'il y a eu insertion ou non. :wink:
Faudrait peut être tout de même le remettre ce test sur la vérification (égalité) des 2 mots de passes "saisis" par l'utilisateur. :wink:

Par contre à quoi correspond ceci dans la requête UPDATE

Code : Tout sélectionner

set points='+500'

un "+500" :-k

par Victor BRITO » 07 déc. 2007, 21:09

La vous avez carrement viré un if(vérif des passe) non ?
J'en ai viré un pour en mettre un autre, qui vérifie s'il y a eu insertion ou non. :wink:

par solodown » 07 déc. 2007, 21:08

La vous avez carrement viré un if(vérif des passe) non ?

par Victor BRITO » 07 déc. 2007, 20:20

mais sa mettre un msg a l'utilisateur :?:
Avec le code ci-dessous
<?php
$pseudo = htmlspecialchars($_POST['pseudo']);
$pass = htmlspecialchars($_POST['pass']);
$pass2 = htmlspecialchars($_POST['pass2']);
$email = $_POST['email'];
$parrain = $_POST['parrain'];
$ip = $_SERVER['REMOTE_ADDR'];
$inscription = time();

if (isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['pass']) && !empty($_POST['email'])) {
	extract($_POST);
	include("configdebdd.php");
	$resultat = mysql_query("INSERT INTO membres (username,pass,email,argents,points,inscription, connexion,ip,affichage,statut,idparrain) values ('$pseudo','$pass','$email','','1000','$inscription','','$ip','','1','$parrain')") or die("Erreur SQL:" . mysql_error()) ;
	if (mysql_insert_id () == 0)
	{
		echo '<p>Pseudo d&eacute;j&agrave; pris</p>';
	}else{
		mysql_query("update membres set points='+500' WHERE username='$parrain'") or die("Erreur màj :" . mysql_error()) ;
		echo '<p>Votre inscription c\'est bien deroule<br />vous pouvez vous connecté <a href=\'my.php\'>Retour</a></p>';
		$Sujet = "Vos identifiants";
		$Message = "<p>Bonjour <b>$pseudo</b> et bienvenue sur .........</p><p>&Agrave; bient&ocirc;t,<br>Le staff</p>";
		envoimail($email,$Sujet,$Message);
	}
} else {
	echo '<p>Vous avez oublié de remplir un champ. <a href=\'javascript:history.go(-1)\'>Retour</a></p>';
	exit;
}

?>
Le message "Pseudo déjà pris" s'affichera.

par solodown » 07 déc. 2007, 20:12

mais sa mettre un msg a l'utilisateur :?: