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

Vergil
Invité n'ayant pas de compte PHPfrance

10 avr. 2007, 23:41

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.

Eléphant du PHP | 120 Messages

13 avr. 2007, 15:47

$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