Test si formulaire validé ou pas [Résolu]

Signaler
Messages postés
103
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
30 avril 2007
-
Messages postés
103
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
30 avril 2007
-
Salut !

Le problème du jour : comment tester si l'utilisateur a déjà validé le formulaire.

Je veux dire que j'ai mes messages d'erreur si tel ou tel champ n'a pas
été saisi mais ils s'affichent dés le chargement de ma page
(inscription).

J'ai essayé ça mais ça passe pas :



if (isset($_POST['espace_membre.php?page=2']) && $_POST['espace_membre.php?page=2'] == 'espace_membre.php?page=2') //page 2 renvoie à mon fichier Inscription

{....

8 réponses

Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
if (isset($_POST['mail']) && $_POST['mail'] == 'mail')
En écrivant ça, tu testes
-1. S'il existe une variable 'mail' dans le tableau $_POST, c'est-à-dire, si un formulaire contenant un champ 'mail' a été posté
et
2-. Si le champ posté contenait la chaine 'mail' => je ne pense pas que ce soit ce que tu cherches à faire !

Pour savoir si un mail a été posté, il suffit de tester
if (isset($_POST['mail']))
{...}

Sinon, pour la suite, il me semble inutile de commencer à tester si une variable existe, si ensuite tu vérifies qu'elle n'est pas nulle :
if ( (isset($mdp) ) && (!empty($mdp)) ) => à remplacer par => if (!empty($mdp))

En espérant t'avoir aidé,
Arn;o)
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
Bonjour,

Tu mélanges les méthodes POST et GET, est-ce volontaire ?

Lorsque tu passes des variables dans l'adresse, par exemple 'espace_membre.php?page=2', tu utilises la méthode get. à partir de la page 'espace_membre.php' tu peux lire la valeur de la variable page dans le tableau GET : $_GET['page'].

La méthode post, quant à elle, s'utilises avec un formulaire dans lequel on définit une page de destination (action), et des champs. Par exemple :
<form method="post" action="espace_membre.php">

</form>
Alors, à partir de la page espace_membre.php, tu peux lire les valeurs des champs dans le tableau POST : $_POST['champ1']

Ainsi, lorsque tu écris "$_POST['espace_membre.php?page=2']", cela voudrait dire que, dans ton formulaire, tu as un champ qui s'appelle "espace_membre.php?page=2", mais je ne pense pas que ce soit le cas...

Essaie en utilisant $_POST avec les noms de tes champs...

Arnaud
Messages postés
103
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
30 avril 2007

Aprés tes indications (j'ai pris le premier champ de mon formulaire ou je demande le mail, name = mail

// on teste si le visiteur a soumis le formulaire

if (isset($_POST['mail']) && $_POST['mail'] == 'mail')

{..}

Mais ça marche pas, ça me valide même pas le formulaire.

Je te met la suite du code, pt'être t'y verra plus clair.



//si les variables existent et ne sont pas vides


if(isset($mdp) && !empty($mdp) && isset($mdp2) && !empty($mdp2)


&& isset($mail) && !empty($mail)


&& isset($age) && !empty($age) && isset($sexe) && !empty($sexe))


{


$mdp=addslashes(htmlspecialchars($_POST['mdp']));


$mdp2=addslashes(htmlspecialchars($_POST['mdp2']));


$mail=addslashes(htmlspecialchars($_POST['mail']));


$age=addslashes(htmlspecialchars($_POST['age']));


$sexe=addslashes(htmlspecialchars($_POST['sexe']));




// on teste les deux mots de passe


if ($_POST['mdp'] != $_POST['mdp2']) {


$erreur = 'Les 2 mots de passe sont différents.';


}


else


{


connecter();


$query="SELECT * FROM `membres` WHERE `mail` LIKE '$mail'";


$result=mysql_query($query);


$num=mysql_num_rows($result);


if($num==0)


{



$query="INSERT INTO `membres` VALUES
('','$mdp','$mail',$age,'$sexe','')";


$result=mysql_query($query);






echo
"

Inscription réussie
Vous pouvez désormais
vous connecter
ici
";


}


else


{



$erreur = 'Un autre membre
utilise déjà cet adresse mail !';


}


}


}


else


{


$erreur = "Vous n'avez pas renseigné tous les champs obligatoires.";


}


}


?>


Messages postés
103
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
30 avril 2007

c'est à dire,tu veux que je remplace



if(isset($mdp) && !empty($mdp) && isset($mdp2) && !empty($mdp2)

&& isset($mail) && !empty($mail)

&& isset($age) && !empty($age) && isset($sexe) && !empty($sexe))

{...}



par



if (!empty($mdp)) && (!empty($mdp2)) &&
(!empty($mail)) && (!empty($mdp)) && (!empty($age))
&& (!empty($sexe))



?



Au fait merci pour ça : if (isset($_POST['mail'])) ça marche bien
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
Oui, c'est ce que je voulais dire.

D'ailleurs, je ne comprends pas très bien pourquoi tu commences par tester si tes variables ne sont pas vides, pour ensuite les remplir.
Je pense que tu testes les variables $mdp (par exemple) au lieu des variables $_POST['mdp']. Dans les anciennes versions de php, par défaut register_global était à On, c'est-à-dire que les variables postées dans un formulaires (par exemlpe dans un champ "nom") pouvaient se lire en utilisant directement $nomDuCham (exemple : $nom). Aujourd'hui, il est conseillé de mettre register_global à off (dans php.ini), et de n'accéder aux variables postées que par $_POST['nomDuChamp'] (exemple : $_POOST['nom']).

Arn;o)
Messages postés
103
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
30 avril 2007

Le remplacement que tu m'as demandé me fait planter la page, elle affiche rien, page blanche.
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
De nouvelles erreurs ont du se révéler, mais elles ne doivent pas s'afficher.

Une page blanche sans erreur, c'est probablement que l'affichage des erreurs est désactivé dans php.ini : error_display->On, pour la phase de développement, c'est indispensable me semble-t-il (mais ensuite, pour la phase de production, il faut remettre l'affichage des erreurs à Off).

Si tu n'as tjs pas d'erreur affichée, essaie de mettre des echo "test 1"; à différents endroits de ta page, pour voir jusqu'où le code s'exécute...

Arn;o)
Messages postés
103
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
30 avril 2007

C'est pas le plus grave, je passe à autre chose je te remercie pour ton aide, c'est cool.