Page 1 sur 1

Espace membre (verifier si le pseudo ou le mail existe déjà)

Posté : 10 avr. 2007, 23:41
par Vergil
Bonsoir.
J'ai un problème avec mon code. L'inscription se déroule très bien mais mon code ne verifie pas si le pseudo ou le mail entrés existent déjà dans la table.

Voici mon code :
<?php
    //*********************************************************//
	//******** Verification d'existance des variables *********//
	//*********************************************************//
	if (isset($_POST['login']) && isset($_POST['pass']) && isset($_POST['pass_confirme']) && isset($_POST['mail']))
		{
			 if	(!empty($_POST['login']) && !empty($_POST['pass']) && !empty($_POST['pass_confirme']) && !empty($_POST['mail']))
				 {
					 //****************************************************//
					 //***** Déclaration des variables et des erreurs *****//
					 //****************************************************//
					 if ($_POST['pass'] == $_POST['pass_confirme'])
						 {
							 $pass = $_POST['pass'];
							 $pass_confirme = $_POST['pass_confirme'];
						 }
					 
					 else
						 {
							 $error = 'Les deux mot de passe sont différents';
						 }
						 
					 if (preg_match("#[a-z0-9._-]{2,10}#i", $_POST['login']))
						 {
							 $login = htmlentities($_POST['login']);
						 }
						 
					 else
						 {
							 $error = 'Le pseudo doit contenir entre 4 et 10 caractéres !';
						 }
						 
					 if (preg_match("#[a-z0-9._-]{6,}#i", $_POST['pass']))
						 {
							 $mot_de_passe = htmlentities($pass);
						 }
						 
					 else
						 {	
							 $error = 'Le mot de passe doit contenir aumoins 6 caractére !';
						 }	
						 
					 if (preg_match("#[a-z0-9._-]{6,}#i", $_POST['pass_confirme']))
						 {
							 $mot_de_passe_confirmation = htmlentities($pass_confirme);
						 }
						 
					 elseif (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['mail']))
						 {
							 $mail = htmlentities($_POST['mail']);
						 }
						 
					 else
						 {
							 $error = 'L\'adresse e-mail que vous avez entrée n\'est pas valide !';
						 }
						 
					 if ($login == htmlentities($_POST['login']) && $mot_de_passe == htmlentities($pass) && $mot_de_passe_confirmation = htmlentities($pass_confirme) && $mail == htmlentities($_POST['mail']))
						 {
							 $bdd = mysql_connect('localhost', '*******', '************');
							 mysql_select_db('******', $bdd);
							 $sql = 'SELECT count(*) FROM membres WHERE login="'.addslashes($login).'" AND mail="'.addslashes($mail).'"';
							 $reponse = mysql_query($sql) or die ('<span style="color:red"><em>Une erreur est survenue lors de la requête SqL !</em></span><br />'.$sql.'<br />'.mysql_error());
							 $donnees = mysql_fetch_array($reponse);
							 //***************************************************//
							 //********** Inscription d'un nouveau login *********//
							 //***************************************************//
							 if ($donnees['login'] == 0 && $donnees['mail'] == 0)
								 {
									 $SQL = 'INSERT INTO membres VALUES("", "'.addslashes($login).'", "'.addslashes(md5($mot_de_passe)).'", "'.addslashes($mail).'", "0", "'.addslashes(md5($login)).'")';
									 mysql_query($SQL) or die ('<span style="color:red"><em>Une erreur est survenue lors de la requête SqL !</em></span><br />'.$SQL.'<br />'.mysql_error());
									 $mail_destinataire = $mail;
									 $sujet = 'Validation du compte';
									 $message = '*********** vous souhaite la bienvenue. Pour vous connecter sur le site, vous devez d\'abord valider votre compte en cliquant sur le lien ci dessous :
									             http://**********.***/validation.php?login='.md5($login).'
												 
												 Cordialement, ********.';
									 mail($mail_destinataire, $sujet, $message);
									 header('Location: validation.php');
									 exit(); 	
								 }	
								 
							 else
								 {	 
									 if ($donnees['login'] == 1)
										 {
											 $error = 'Ce pseudo est déjà utilisé par un autre membre !';
										 }
										 
									 elseif ($donnees['mail'] == 1)
										 {
											 $error = 'Cette adresse e-mail est déjà utilisée par un autre membre !';
										 }
								 }
						 }
						 
				 }
				 
			 else
				 {
					 $error = 'Tous les champs sont obligatoires !';
				 }
		}
?>
	
<!-- inscription.php, créé le 09/04/2007 à 22h14 -->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
	<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
		<head>
		
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Inscription</title>

		</head>

			<body>
				<!-- Création du formulaire -->
				<form action="inscription.php" method="post">
					<p>
						Pseudo : <input type="text" name="login" value="<?php if (isset($_POST['login'])) { echo $_POST['login']; } ?>" />*<br />
						Mot de passe : <input type="password" name="pass" />*<br />
						Confirmer le mot de passe : <input type="password" name="pass_confirme" />*<br />
						Adresse e-mail : <input type="text" name="mail" />*<br />
						<input type="submit" value="S'inscrire" /><br />
					</p>
				</form>
				<!-- Fin du formulaire -->
						<p>
							<?php
								if (isset($error))
									{
										echo '<span style="color:red;"><em>'.$error.'</em></span><br />';
									}
							?>
						</p>
									
			</body>
	</html>
Est-ce que quelqu'un pourrai m'aider ? Je suis passionné par ce language et ça m'énerve d'être bloqué comme ça !

Merci.

Posté : 13 avr. 2007, 15:47
par rakizm
$sql = 'SELECT count(*) FROM membres WHERE login="'.addslashes($login).'" AND mail="'.addslashes($mail).'"';
remplaces le AND par OR
parce que le AND vérifie les deux critères ensembles
alors que le OR vérifie le premier ou le deuxième