Inscription zone membres, vérifications.

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 zone membres, vérifications.

Re: Inscription zone membres, vérifications.

par AB » 23 juil. 2012, 19:55

Pour partir sur de bonnes bases tu peux regarder ce tuto

Re: Inscription zone membres, vérifications.

par Loden » 23 juil. 2012, 16:58

Bonjour,

j'ai essayé d'appliquer ce que tu m'a dit :
<?php
function connectRankOne(){
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('RankOne', $base) ;
}
?> 
<html>
    <head>
    <title>Inscription</title>
    </head>
    <body>
	<p>Inscription au site</p>

	<form name="inscription" method="post" action="membres.php">
   	<p>
    <label for="pseudo">Votre pseudo :</label>
    <input type="text" name="pseudo" id="pseudo" required />
       
    <br />
    <label for="pass">Votre mot de passe :</label>
    <input type="password" name="pass" id="pass" required />
           
    <br />
    <label for="confirmpass">Confirmer le mot de pass :</label>
    <input type="password" name="confirmpass" id="confirmpass" required />
       
	<br />
	<label for="email">Votre adresse email :</label>
	<input type="email" name="email" id"email" required />

	<br />
	    <input type="submit" name="submit" value="Envoyer" />
       
   	</p>
	</form>
<?php
        if (isset($_POST['submit'])){
($pseudo= mysql_real_escape_string(htmlentities($_POST['pseudo'])));
($pass= mysql_real_escape_string(htmlentities($_POST['pass'])));
($confirmpass= mysql_real_escape_string(htmlentities($_POST['confirmpass'])));
($email= mysql_real_escape_string(htmlentities($_POST['email'])));
            connectRankOne();

		$requete_pseudo = "SELECT COUNT(*) FROM membres WHERE pseudo = '".$pseudo."'";
		$resultat = mysql_query($requete_pseudo);
		
		if( mysql_num_rows() > 0 )
			{
			echo 'Le pseudo ' . $pseudo . ' est déjà pris.';
			}
		else
			{
		$sql = "INSERT INTO Membres VALUES('','$pseudo','$pass','$email',NOW())";
		
            mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
                            
            mysql_close();
			}
		}
        ?>
	</body>
    </html> 

Re: Inscription zone membres, vérifications.

par xTG » 20 juil. 2012, 11:30

C'est pas bien d'oublier les leçons qu'on te donne d'un post à l'autre...
Je te renvoie à mon premier message quand à la récupération du pseudo et sa protection avant l'injection dans une requête.
Et c'est aussi à cause de cette récupération que tu ne fais pas que ton script n'insère rien, pas à cause de la vérif (qui ne renvoie rien et ne bloque rien).
Ton insert doit se faire dans une clause "else" du test.
Sinon ce que je t'ai donné ne bloque rien du tout.

Re: Inscription zone membres, vérifications.

par Loden » 20 juil. 2012, 11:28

Bonjour,

merci sa marche sa bloque l'inscription si un on veux s'inscrire avec un pseudo déjà existant, mais le problème je n'arrive pas à afficher le résultat si le pseudo est déjà existant :
<?php
function connectRankOne(){
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('RankOne', $base) ;
}
?> 
<html>
    <head>
    <title>Inscription</title>
    </head>
    <body>
	<p>Inscription au site</p>

	<form name="inscription" method="post" action="membres.php">
   	<p>
    <label for="pseudo">Votre pseudo :</label>
    <input type="text" name="pseudo" id="pseudo" required />
       
    <br />
    <label for="pass">Votre mot de passe :</label>
    <input type="password" name="pass" id="pass" required />
           
    <br />
    <label for="confirmpass">Confirmer le mot de pass :</label>
    <input type="password" name="confirmpass" id="confirmpass" required />
       
	<br />
	<label for="email">Votre adresse email :</label>
	<input type="email" name="email" id"email" required />

	<br />
	    <input type="submit" name="submit" value="Envoyer" />
       
   	</p>
	</form>
<?php
        if (isset($_POST['submit'])){
            connectRankOne();

		$requete_pseudo = "SELECT COUNT(*) FROM membres WHERE pseudo = '".$pseudo."'";
		$resultat = mysql_query($requete_pseudo);
		
		if( mysql_num_rows() > 0 ){
			echo 'Le pseudo ' . $pseudo . ' est déjà pris.';
		}
			
                            
$sql = "INSERT INTO Membres VALUES('','$pseudo','$pass','$email',NOW())";
                            
            mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
                            
            mysql_close();
        }
        ?>
	</body>
    </html> 
echo 'Le pseudo ' . $pseudo . ' est déjà pris.';
Ne s'affiche pas sur la page, je ne sais pas trop comment faire.

Merci,
Loden.

Re: Inscription zone membres, vérifications.

par xTG » 20 juil. 2012, 08:39

Déjà attention, ton utilisation de mysql_real_escape_string() est mauvaise.
On l'utilise ainsi :
$pseudo = mysql_real_escape_string(htmlentities($_POST['pseudo']));
Pour une vérification voilà une façon de faire :
$sql = "SELECT id FROM Membres WHERE pseudo = '$pseudo'";
$res = mysql_query($sql);
if( mysql_num_rows() > 0 ){ // on compte le nombre de résultat
  echo 'Le pseudo ' . $pseudo . ' est déjà pris.';
}

Inscription zone membres, vérifications.

par Loden » 20 juil. 2012, 00:51

Bonsoir,

alors voilà débutant en PhP je créé en ce moment une "zone membres" pour mon site mais je suis bloqué à un endroit, la validations des infos (pour éviter d'avoir deux membres avec le même pseudo, pour confirmer le mot de passe et évité qu'un membre ce réinscrive deux fois avec le même email), j'ai essayer de chercher sur google toute tentative échoue. :o
Voici mon code pour le moment :
<?php
function connectRankOne(){
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('RankOne', $base) ;
}
?> 
<html>
    <head>
    <title>Inscription</title>
    </head>
    <body>
	<p>Inscription au site</p>

	<form name="inscription" method="post" action="membres.php">
   	<p>
    <label for="pseudo">Votre pseudo :</label>
    <input type="text" name="pseudo" id="pseudo" required />
       
    <br />
    <label for="pass">Votre mot de passe :</label>
    <input type="password" name="pass" id="pass" required />
           
    <br />
    <label for="confirmpass">Confirmer le mot de pass :</label>
    <input type="password" name="confirmpass" id="confirmpass" required />
       
	<br />
	<label for="email">Votre adresse email :</label>
	<input type="email" name="email" id"email" required />

	<br />
	    <input type="submit" name="envoyer" value="Envoyer" />
       
   	</p>
	</form>
<?php
        if (isset($_POST['envoyer'])){
mysql_real_escape_string($pseudo=htmlentities($_POST['pseudo']));
mysql_real_escape_string($pass=htmlentities($_POST['pass']));
mysql_real_escape_string($confirmpass=htmlentities($_POST['confirmpass']));
mysql_real_escape_string($email=htmlentities($_POST['email']));
            connectRankOne();
                            
$sql = "INSERT INTO Membres VALUES('','$pseudo','$pass','$email',NOW())";
                            
            mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
                            
            mysql_close();
        }
        ?>
	</body>
    </html> 
Voilà j'ai essayé de faire les vérifs avec des requête sql mais pour le moment je n'ai pas réussis.

Merci,
Loden.