Probème traitement formulaire en php

Fermé
bizerte77 - 22 mai 2009 à 17:06
halbo5 Messages postés 5 Date d'inscription lundi 1 juin 2009 Statut Membre Dernière intervention 12 juillet 2009 - 2 juin 2009 à 14:26
Bonjour,

J'ai créé un formulaire d'inscription, il y a quelques vérifications à faire avant d'accepter l'inscription... Le problème c'est que je débute, je n'ai pas encore les bons réflexes pour que mon code fonctionne correctement...

J'aimerai vérifier le code postal: je veux 4 chiffres minimum et 5 chiffres maximum sinon un message s'affiche en disant que le code postal est invalide (si c'est bon, on affiche rien), quand je teste en mettant un code postal invalide, le message s'affiche mais la personne peut quand même s'inscrire ce qui n'est pas bon!

J'aimerai également vérifier si le pseudo est déjà pris (existe dans mas BDD), quand je teste avec un pseudo existant dans ma BDD, il y a bien le message qui s'affiche qui dit que le pseudo existe déjà mais la personne peut quand même s'inscrire ce qui n'est pas bon non plus.

Et dernière petite chose, j'aimerai que le mot de passe contient au minimum 5 caractères sinon un message s'affiche qui dit 5 caractères minimum, quand je teste le message s'affiche mais on peut quand même s'inscrire.

Je pense que j'ai des problèmes avec mes variables mais je ne sais pas comment mettre tout ça en place...

Si quelqu'un peut m'aider...

Ligne 50: vérifier caractère minimum du mot de passe
Ligne 56: vérifier le code postal
Ligne 64: vérifier le pseudo

Voici mon code php en entier :

<?php
function connectgratuit(){
	$base= mysql_connect ('localhost','root','');
	mysql_select_db ('gratuit',$base);
}


if(isset($_POST['valider'])){
	$champs_vide=array();
		
	if (empty($_POST['prenom'])){
		 $champs_vide[]='"prenom"';
	}
	
	if (empty ($_POST['pseudo'])){ 
		 $champs_vide[]='"pseudo"';
	}
			
	if (empty ($_POST['postal'])){
		 $champs_vide[]='"code postal"';	
	}
	
						
	if (empty($_POST['email'])) {  
	 	  $champs_vide[] = '"Email"';		 	  			 
	}
	
	if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
		$champs_mail[] = array();
		$champs_mail[] = "invalide";
		 echo '<div style="position:absolute; margin-top: 235px; margin-left:490px; color:red">Email invalide</div>';
	}
	
	if (empty ($_POST['pass'])){ 
		 $champs_vide[]='"mot de passe"';    
	}
	
	if (empty ($_POST['confirm_pass'])){
		 $champs_vide[]='"confirmer mot de passe"';
	}
	

   if ( $_POST['confirm_pass'] != $_POST['pass'] ) {
	
      echo '<div style="color:red; position:absolute; margin-top: 287px; margin-left:490px ">Les 2 mots de passe sont différents! </div>';
      $champs_double = array();
	  $champs_double[] = "doublons";
}

// VERIFIER CARACTERE MINIMUM MOT DE PASSE
if ( strlen( $_POST['pass'] ) < 5 ) {
  echo '<div style="position:absolute; margin-top:305px; margin-left:490px; color:red">5 caractères minimum!</div>' ;
}
//FIN DE VERIFICATION

//VERIFIER LE CODE POSTAL 
if (!eregi("^([0-9]{4,5})$", $_POST['postal'] )) {	
echo '<div style="position:absolute; margin-top: 200px; margin-left:490px; color:red">Code postal invalide</div>';
}
//FIN DE VERIFICATION	

connectgratuit();

//VERIFIER LE PSEUDO
$pseudo = $_POST['pseudo'];
$verif_pseudo = mysql_query("SELECT pseudo FROM inscription WHERE pseudo='$pseudo'");
if (mysql_num_rows($verif_pseudo) != 0)
{
	echo '<div style="position:absolute; margin-top:165px; margin-left:490px; color:red">Le pseudo existe déjà</div>';
}
//FIN DE VERIFICATION


   if (empty ($champs_vide) && empty($champs_double) && empty($champs_mail)){		
		
      $prenom=$_POST['prenom'];
	  $pseudo=$_POST['pseudo'];
	  $postal=$_POST['postal'];
	  $email=$_POST['email'];
	  $pass=$_POST['pass'];
	  $confirm_pass=$_POST['confirm_pass'];	
	  
	echo ' <div style="padding-left:240px; margin-top: 10px; margin-bottom:-10px">Votre inscription a bien été pris en compte.</div>';

	
       $sql='INSERT INTO inscription VALUES("","'.$prenom.'","'.$pseudo.'", "'.$postal.'", "'.$email.'","'.$pass.'", "'.$confirm_pass.'",NOW())';
	   
	   	
	   mysql_query($sql) or die('Erreur SQL!'.$sql. '<br>' .mysql_error());
	
	   mysql_close();
	                       } //champs_vide
	
  else {
	  if (!empty($champs_vide)){
		echo '<div style="padding-left:150px; color:red; margin-bottom: -15px"><h4 style="padding-left:90px; padding-bottom:10px;">Merci de remplir le champs suivant:</h4> <span style="text-align:center">' .implode($champs_vide). '</span></div>';	
	   }
  }
	   
} //valider

	
?>


Merci pour votre aide très précieuse

Bonne journée
A voir également:

1 réponse

halbo5 Messages postés 5 Date d'inscription lundi 1 juin 2009 Statut Membre Dernière intervention 12 juillet 2009
2 juin 2009 à 14:26
Bonjour,

Le problème vient de tes tests, pas de tes variables.

Si tu testes :
if (condition==vrai)
{ alors je fais ceci}

La condition if est exécutée si la condition est vraie. Mais si elle est fausse, elle est simplement ignorée et la suite du code est traitée.

Par contre si tu testes :
if (condition==vrai)
{ alors je fais ceci}
else
{je fais cela}

Dans ce cas, un code est exécutée si la condition est fausse.

Dans ton cas la difficulté vient du fait que tu as beaucoup de tests, donc une structure if ... else ne suffit pas.

Plusieurs pistes possibles :
If (mot de passe < 5 caractères)
{
trop court
}
else { je continue le script
if (code postal pas correct)
{
code postal pas correct, j'envoie un message
}
else {je continue le script
ainsi de suite et je fais tous les tests
}
}

Autre solution, que je préfère personnellement (mais c'est affaire de gout :-) ) :
Tu crées au début une variable $erreur et tu lui donnes la valeur 0.
Ensuite dans chaque test, tu donne la valeur 1 à cette variable s'il y a une erreur.

Exemple :
If (mot de passe < 5 caractères)
{
message qui dit que c'est trop court
$erreur=1;
}

A la fin de tes tests, il te restera à faire un dernier test :
if ($erreur!=1)
{
lancer la procédure d'inscription (mettre ici ton code qui gère l'inscription)
}
else
{
message pour indiquer qu'il y a des erreurs
}

En espérant que cela te sera utile.

Si cela t'intéresse, j'ai mis en place un cours sur le PHP :
http://www.cdprof.com/moodle/course/view.php?id=8

A+
Alain
0