[RESOLU] Problème sur formulaire inscription membre

Mammouth du PHP | 643 Messages

15 déc. 2015, 18:56

Salut à tous.
J'ai un formulaire qui permet a mes visiteurs de s'inscrire sur mon site.

Tt marche très bien, cependant j'ai un message qui permet de dire à l'internaute que le mail saisie est déjà existant après une vérification.
Le problème est que même si le mail n'existe pas ca lui affiche le message ( mais il est bien inscrit quand même ).

page du formulaire ou je fait les vérif
<?php include('include/header.php');

// Vérification de la validité des informations

$erreurs = array();   //tableau contenant des messages d'erreurs

if(!empty($_POST)) {//soumission du formulaire
  
   //Verification pseudo
  if(empty($_POST['pseudo'])) {
   $erreurs['pseudo'] = 'Renseigner un pseudo';
  }
 
 //Verification departements
  if(empty($_POST['departements']))
  {
   $erreurs['departements'] = 'Séléctionner un departement';
  }
 
 	//Verification du champ email( on vérifie si le champ n'est pas vide )
  if(!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#",$_POST['email'])){
	$erreurs['email'] = "Veuillez verifier la saisie de votre e-mail";
	
	}

  
   //Verification email
  if(empty($_POST['email'])) {
    $erreurs['email'] = 'Renseigner un adresse email';
  }
  
    //Verification conditions
  if(empty($_POST['conditions'])) {
    $erreurs['conditions'] = 'Veillez accepter les conditions générales';
  }
  
   //Verification password
  if(empty($_POST['password'])) {
    $erreurs['password'] = 'Renseigner un mot de passe';
  }
  
  



	//le tableau d'erreurs est vide alors on insère les données
	if(count($erreurs) == 0) {

		// On vérifie si l'email existe en bdd
		$chech_mail = $bdd->prepare("SELECT email from simply_user WHERE email = ?");
		$chech_mail->execute(array($_POST['email']));
		if($chech_mail->rowCount() == 0) {
			
					

		// Hachage du mot de passe
		$password = sha1($_POST['password']);
		
		// Insertion
		$req = $bdd->prepare('INSERT INTO simply_user (id_region, id_departements, pseudo, interet, email, password, date_inscription) VALUES(:id_region, :id_departements, :pseudo, :interet, :email, :password, CURDATE())');
		
		$req->execute(array(
				  'id_region'=>regionIdByDepartement($_POST['departements']),
				  'id_departements'=>$_POST['departements'],
				  'pseudo'=>$_POST['pseudo'],
				  'email'=>$_POST['email'],
				  'interet' => serialize($_POST['interet']),
				  'password'=>$password
				  )) or die('Problème lors de l\'insertion');
		
		

				
			
		
			
					// Envoie du mail
					$entetedate  = date("D, j M Y H:i:s +0200"); // avec offset horaire
					$entetemail  = "From: La Sortie <[email protected]>\n"; // Adresse expéditeur
					$entetemail .= "Cc: \n"; 
					$entetemail .= "Bcc: \n"; // Copies cachées
					$entetemail .= "Reply-To: [email protected]\n"; // Adresse de retour
					$entetemail .= "MIME-version: 1.0\n"; 
					$entetemail .= "Content-type: text/html; charset=UTF-8;\n"; 
					$entetemail .= "X-Mailer: PHP/".phpversion()."\n" ;
					$entetemail .= "Date: ".$entetedate;
					
					$search = array('[email]', '[password]');
					$replace = array($_POST['email'], $_POST['password']);
	
					$message = str_replace($search, $replace, file_get_contents('include/creation_compte.html'));
					
					
					mail($_POST['email'], '[LASORTIE] Votre compte', $message, $entetemail);
					
					// envoie du mail au nouvel utilisateur.
			
					echo '<p>Merci pour votre inscription.</p>';
			
			// Si me mec est inscrit donc identifié faut créé les sessions ou appelle la fonction identificationPro()
			authentificationPro($_POST['pseudo'], $password);
		   			
			}	

		}

	echo '<div class="container"><div class="col-md-6 col-md-offset-3 col-sm-8 col-sm-offset-2">
			<div class="alert alert-danger okay" role="alert"> <i class="fa fa-frown-o"></i> Cet email est déjà associé à un compte</div></div></div>';

}

 
?>
et une partie avec un include ( une autre page ou je vérifie encore :)
// Vérification des identifiants
  $req = $bdd->prepare('SELECT * FROM simply_user WHERE pseudo = :pseudo AND password = :password');
  $req->execute(array(
                        'pseudo' => $pseudo,
                        'password' => $password
			));
						
			
						
  if($req->rowCount() > 0) {
	  
  	$resultat = $req->fetch();
	$_SESSION['membre'] = $resultat;
	$_SESSION['pseudo'] = $resultat['pseudo'];
	$_SESSION['password'] = $resultat['password'];
	$_SESSION['id_region'] = $resultat['id_region']; 
	$_SESSION['type'] = 'client';
	$_SESSION['statut'] = $resultat['statut'];
		
	if(!empty($_POST['remember'])) setcookie('identification', serialize(array($pseudo, $password)), mktime(0, 0, 0, date('m'), date('d'), date('Y')+1), '/');
		

	
  } else {
     $return = '<div class="alert alert-danger" role="alert"><i class="fa fa-frown-o"></i> Mauvais identifiant ou mot de passe !</div>';

  }
  

  return $return;
 
}

Mammouth du PHP | 2703 Messages

15 déc. 2015, 19:27

if(count($erreurs) == 0) {

il n'y a pas de else à ce if, donc cela affiche le message dans tous les cas.

Mammouth du PHP | 643 Messages

15 déc. 2015, 19:53

meme en rajoutant la.
J'ai toujours la meme chose:
$search = array('[email]', '[password]');
					$replace = array($_POST['email'], $_POST['password']);
	
					$message = str_replace($search, $replace, file_get_contents('include/creation_compte.html'));
					
					
					mail($_POST['email'], '[LASORTIE] Votre compte', $message, $entetemail);
					
					// envoie du mail au nouvel utilisateur.
			
					echo '<p>Merci pour votre inscription.</p>';
			
			// Si me mec est inscrit donc identifié faut créé les sessions ou appelle la fonction identificationPro()
			authentificationPro($_POST['pseudo'], $password);
		   			
			}	
			echo "j'ai le meme message";

		}

	echo '<div class="container"><div class="col-md-6 col-md-offset-3 col-sm-8 col-sm-offset-2">
			<div class="alert alert-danger okay" role="alert"> <i class="fa fa-frown-o"></i> Cet email est déjà associé à un compte</div></div></div>';

}

 
?>

Mammouth du PHP | 2703 Messages

15 déc. 2015, 19:59

en fait c'est if($chech_mail->rowCount() == 0) { qui a besoin d'un else :
if($chech_mail->rowCount() == 0) {

}
else{
echo '<div class="container"><div class="col-md-6 col-md-offset-3 col-sm-8 col-sm-offset-2">
<div class="alert alert-danger okay" role="alert"> <i class="fa fa-frown-o"></i> Cet email est déjà associé à un compte</div></div></div>';
}

Mammouth du PHP | 643 Messages

15 déc. 2015, 21:52

C'est mieux effectivement.
Merci