Test si formulaire validé ou pas

Résolu
crazykamel Messages postés 103 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 30 avril 2007 - 6 juil. 2005 à 14:47
crazykamel Messages postés 103 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 30 avril 2007 - 7 juil. 2005 à 11:17
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

arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
6 juil. 2005 à 18:15
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)
3
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
6 juil. 2005 à 15:57
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
0
crazykamel Messages postés 103 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 30 avril 2007
6 juil. 2005 à 16:53
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.";


}


}


?>


0
crazykamel Messages postés 103 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 30 avril 2007
7 juil. 2005 à 09:47
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
7 juil. 2005 à 10:10
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)
0
crazykamel Messages postés 103 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 30 avril 2007
7 juil. 2005 à 10:20
Le remplacement que tu m'as demandé me fait planter la page, elle affiche rien, page blanche.
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
7 juil. 2005 à 10:41
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)
0
crazykamel Messages postés 103 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 30 avril 2007
7 juil. 2005 à 11:17
C'est pas le plus grave, je passe à autre chose je te remercie pour ton aide, c'est cool.
0
Rejoignez-nous