Problème formulaire d'inscription

Nouveau WRInaute
Bonjour,
je suis actuellement en train de développer un nouveau site mais je rencontre un léger soucis au niveau d'un formulaire d'inscription. C'est un formulaire assez simple sur un seul fichier et j'ai voulu l'améliorer avec une vérification de tous les champs. S'il le formulaire a été envoyé et que par exemple on a oublié de remplir un champ il devrait s'afficher l'erreur mais le soucis c'est que la page est rechargée tel quel sans aucune modification, même pas une petite erreur pour me montrer la voie :lol:
J'ai cherché l'erreur au niveau du code mais je n'ai rien trouvé, alors je viens vous demander de l'aide.
Voici le code :
Avant <html> :
Code:
<?php

// === traitement des données du formulaire ============================================================
if (isset($_POST["submit"])){
// le formulaire a été soumis
        $etat = "erreur";
// Valeur par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
// --- mise en forme des champs saisis dans le formulaire lors de sa soumission ---
        if (isset($_POST["name"])) {
                 $_POST["name"]=trim(stripslashes($_POST["name"]));
        }
        if (isset($_POST["preneame"])) {
                 $_POST["prename"]=trim(stripslashes($_POST["prename"]));
        }
		if (isset($_POST["email"])) {
                 $_POST["email"]=trim(stripslashes($_POST["email"]));
        }
        if (isset($_POST["url"])) {
                 $_POST["url"]=trim(stripslashes($_POST["url"]));
        }
		if (isset($_POST["password"])) {
                 $_POST["password"]=trim(stripslashes($_POST["password"]));
        }
        // --- test de la validité des champs saisis ---
        if (empty($_POST["name"])) {
// il manque le pseudo
                 $erreur="Vous avez oubli&eacute; de remplir une case. Saisissez votre pseudo...";
        }
		elseif (empty($_POST["prename"])) {
// il manque le prénom et le nom
                 $erreur="Vous avez oubli&eacute; de remplir une case. Saisissez votre Pr&eacute;nom et votre NOM...";
        }
		elseif (empty($_POST["email"])) {
// il manque l'adresse email
                 $erreur="Vous avez oubli&eacute; de remplir une case. Saisissez votre adresse email...";
        }
        elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email"])){
// l'adresse e-mail n'est pas valide
                 $erreur="Votre adresse e-mail n'est pas valide...";
        }
		elseif (empty($_POST["url"])) {
// il manque l'url
                 $erreur="Vous avez oubli&eacute; de remplir une case. Saisissez l'adresse de votre site...";
        }
		elseif (empty($_POST["password"])) {
// il manque le mot de passe
                 $erreur="Vous avez oubli&eacute; de remplir une case. Saisissez votre mot de passe...";
        }
		elseif (empty($_POST["cgu"])) {
// les C.G.U ne sont pas acceptées
                 $erreur="Vous devez accepter les Conditions G&eacute;n&eacute;rales d'Utilisation pour vous inscrire.";
        }
        else {
// --- tous les champs sont correctement remplis: on pourra s'incrire ---
                 $etat="ok";
        }
}
else {
// --- le formulaire n'a pas été soumis ---
           $etat="attente";
}
// === fin de traitement des données du formulaire =======================================================
?>

Et Entre <body> et </body>:
Code:
<?php
if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur
?>
<div id="titre">S'enregistrer</div><br />

<form method="post" action="?pg=register<?php // echo $_SERVER["PHP_SELF"]; ?>">      => La page est un include dans index.php donc je suis obligé de mettre l'adresse de la page sinon je reviens sur l'accueil. J'ai déja essayé de rendre ?pg=register indépendant en register.php mais ca n'a rien changé.

<input type="hidden" name="referer" value="<?php echo $referer ?>">
<?php
         if ($etat=="erreur"){
//le formulaire a été soumis avec une erreur
                         echo "<center><div id='redtext'><strong>".$erreur."</strong></div></center>\n\n";
// afficher le message d'erreur
         }

?>
<center><div><b> Attention : Tous les champs sont obligatoires !</b></div><br /><br /><table width="75%" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td><b>Pseudo</b></td>
<td>
<input type="text" name="name" id="name" value="<?php echo stripslashes($name); ?>">
</td>
</tr>
<tr>
<td><b>Pr&eacute;nom et NOM</b></td>
<td>
<input type="text" name="prename" id="prename" value="<?php echo stripslashes($prename); ?>">
</td>
</tr>
<tr>
<td height="30"><b>E-mail :</b></td>
<td height="30">
<input type="text" name="email" id="email" value="<?php echo stripslashes($email); ?>">
</td>
</tr>
<tr>
<td><b>Url de votre site&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b></td>
<td>
<input type="text" name="url" id="url" value="http://<?php echo stripslashes($url); ?>">
</td>
</tr>
<tr height="5">
</tr>
<tr>
<td><b>Mot de passe</b></td>
<td>
<input type="password" name="password" id="password" value="<?php echo stripslashes($password); ?>">
</td>
</tr>
<td colspan="2"><br /><br /><center>
<b><INPUT TYPE="checkbox" NAME="cgu" VALUE="1" id="cgu"> J'accepte les <a href="?pg=regeln">Conditions G&eacute;n&eacute;rales d'Utilisation</a></b>
</center>
</td>
</tr>
<tr>
<td colspan="2"><center><br />
  <input type="submit" value="S'inscrire">
</center></td>
<b>
</tr>
</table></center>
</form><?php
}
else {
        if($name && $prename && $password && $email && $url)
			{
			$sid=mt_srand((double)microtime()*1000000);
			$sid=md5(str_replace('.', '', getenv('REMOTE_ADDR') + mt_rand(100000, 999999)));
			if(account_add($name, $prename, $password, $email, $url, 2, $points_register, $sid, $referer))
			{
			mail($email, $email_welcome_title, $email_welcome, $email_header);
			mail($email_notifynewmember, $email_notifynewmember_title, $email_notifynewmember_msg, $email_header);
			// header("Location: $url_register_succesfull");
			?>
			<div id="titre">Inscription termin&eacute;e</div><br />
			<center>Merci d'avoir pris le temps etc etc etc.</center>
			<?php
			exit;
		}
		}
        else {
                echo "Un probl&egrave;me s'est produit lors de l'envoi des donn&eacute;es.\n";
                echo "Veuillez <a href=\"".$_SERVER["PHP_SELF"]."\">r&eacute;&eacute;ssayer</a> ou revenir à l'accueil.\n";
        }
}
?>

J'ai coupé tout ce qui est en rapport avec l'envoi des saisis dans la BDD parce que j'ai testé et ca fonctionne correctement.
Ca reste assez long comme code donc s'il vous plait ne vous découragez pas parce que je serai assez embêté sinon :oops:

Merci d'avance pour votre aide !
 
WRInaute passionné
Humm ton code est pas très propre (pourquoi ne pas utiliser des booléens?) mais je ne vois pas d'erreur flagrante.

Si tu fais un print_r($_POST); ça te dit quoi?
et un print_r($etat) avant ton test?
 
Nouveau WRInaute
Hmm never mind, merci d'avoir pris le temps de lire mon post, mais je viens de voir le problème: j'avais oublié de donner un nom à <input type="submit" value="S'inscrire"> (name="submit").
 
Nouveau WRInaute
Bacteries a dit:
Hummph, je vois pas en quoi ça change qqchose...
Le vérificateur ne s'enclenche que si le formulaire a été soumis :
Code:
if (isset($_POST["submit"])){
submit doit donc être le nom du <input>, mais j'avais oublié de le mettre.
 
Discussions similaires
Haut