Test formulaire PHP

gummybear Messages postés 31 Statut Membre -  
 eddy -
Salut, j'ai un prob avec un script PHP qui détecte des zones de formulaire non ou mal remplies. Quand on fait précédent pour revenir au formulaire de saisie, ce dernier ne contient plus les infos saisies. Mais cela ne se produit qu'a la première tentative. La deuxième tentative, si elle est toujours incomplète, permet de retourner au formulaire sans perdre les infos précédemment saisies. J'ai également remarqué que si on accède directement à la page html du formulaire ( en tapant www.monsite.fr/contact.html, au lieu d'y accéder par le site ) le phénomène ne se produit pas.
Est-ce que quelqu'un a une idée de ce qui est à l'origine de ce disfonctionnement ?
ci-dessous le script utilisé :
<?
$societe=trim($societe);
$nom=trim($nom);
$prenom=trim($prenom);
$fonction=trim($fonction);
$adresse=trim($adresse);
$cp=trim($cp);
$ville=trim($ville);
$pays=trim($pays);
$tel=trim($tel);
$fax=trim($fax);
$email=trim($email);

$toaddress = "mail@mail"; // the default value

$subject = "Formulaire";
$mailcontent = "societe: ".$societe."\n"
."nom: ".$nom."\n"
."prenom: ".$prenom."\n"
."fonction: ".$fonction."\n"
."adresse: ".$adresse."\n"
."codepostal: ".$cp."\n"
."ville: ".$ville."\n"
."pays: ".$pays."\n"
."tel: ".$tel."\n"
."fax: ".$fax."\n"
."email: ".$email."\n"
."renseignements: ".$rens."\n"
."devis: ".$devis."\n"
."rdv: ".$rdv."\n"
."projet: ".$projet."\n"
."échéance: ".$ech."\n"
."demande: \n".$demande."\n";
$fromaddress = "Message envoyé par: $email";

if($societe && $nom && $prenom && $tel && $email){ // si les champs sont remplis

}else{
echo "Veuillez remplir les champs obligatoires en fond sombre<br>";
echo "en retournant à la page précédente";
exit;
}

if (!ereg("^[a-zA-Z0-9_.\-]+@[a-zA-Z0-9_.\-]+\.[a-zA-Z0-9\ -\.]+$", $email))
{
echo "L'adresse E-mail que vous avez saisie n'est pas valide.<br>";
echo "Veuillez retourner à la page précédente et essayer à nouveau.";
exit;
}

mail($toaddress, $subject, $mailcontent, $fromaddress);
?>
<html>
<head>
<title>Formulaire </title>
</head>
<body bgcolor="#BBBBBB" text="white">
<h3>votre demande a été envoyée à XXX </h3>
<p><? echo nl2br($mailcontent); ?> </p>

</body>
</html>

@+

Gummybear ;-)
A voir également:

3 réponses

asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Je sais pas d'ou viens le probleme... :(
mais pourquoi laisses tu à l'utilisateur le soin de revenir sur le formulaire ? je veux dire que tel qu'est ton script ici, tu pourrait remplacer
echo "Veuillez remplir les champs obligatoires en fond sombre<br>";
echo "en retournant à la page précédente";
exit;

par un truc du genre Header: Location "lapage de ton formulaire"
nb: c'est surment pas la bonne syntaxe... a voir sur php.net

puis dans ton formulaire tu rapel les variables precedentes

(<input type="text" name="nom" value="<?echo $nom;?>">)

bon courage
@+

Na kaer eo va Breizh,                   
gand ar mor glaz èn-dro dezi ! 
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
moui en me relisant je me rencompte que c pas clair du tout ce que je raconte ;-)
en fait, tu verifi tout tes champs et a la fin si 'il y a le moindre pb et avant de faire un echo tu tape 'header("Location: [l'url de ton form]?societe=$societe&nom=$nom&prenom=$prenom...");'

et dans ton formulaire tu fais ca pour tout les champs...
<input type="text" name="nom" value="<?echo $nom;?>">

et la ca doit marcher sans risque de bugs plus ou moins aleatoires...

J'espere que je suis plus clair mais j'ai un doute...

Na kaer eo va Breizh,                   
gand ar mor glaz èn-dro dezi ! 
0
JEROMAX Messages postés 275 Statut Membre 10
 
à la place de :

if (!ereg("^[a-zA-Z0-9_.\-]+@[a-zA-Z0-9_.\-]+\.[a-zA-Z0-9\ -\.]+$", $email))
{
echo "L'adresse E-mail que vous avez saisie n'est pas valide.<br>";
echo "Veuillez retourner à la page précédente et essayer à nouveau.";
exit;
}

fais:

if (!ereg("^[a-zA-Z0-9_.\-]+@[a-zA-Z0-9_.\-]+\.[a-zA-Z0-9\ -\.]+$", $email))
{
echo "<script language=javascript>alert('L\'adresse E-mail que vous avez saisie n'est pas valide.');";
echo "window.history.go(-1);</script>";
exit;
}

le type voit la boite de message et c'est le navigateur qui fait un "back" en conservant les infos...

[ JEROMAX ] http://www.jeromax.free.fr
0
JEROMAX Messages postés 275 Statut Membre 10
 
oups il manque un antislash dans le texte du alert

[ JEROMAX ] http://www.jeromax.free.fr
0
eddy
 
Bonjour,

Je suis débutant et je n'arrive pas a faire fonctionner mon formulaire newsletter. Pouvez vous me donner un coup de main sur ce problème de premier choix.

Je ne reçois pas l' Email de confirmation

Pouvez-vous adapter <?php……?> avec <form>……</form>

Le lien de ma page: http://www.cijoint.fr/cjlink.php?file=cj200910/cijyw5NMrK.txt

<head>

<?php if($_POST['action'] == "formok")
{
$e_mail = $_POST['email'];
if($e_mail == ""|| $e_mail == "e-mail")
{
$txt = " votre e-mail";
}
else
{
$destinataire= "bwba@hotmail.fr";
$objet = "Demande d'inscription";
$headers = "From: bwba@hotmail.fr \n\r";
$headers.= "Content-Type: text/html; charset=utf-8";
$headers .= "MIME-Version: 1.0 ";
$msg = "Nous vous informons d'une demande d'inscription suivant : ". $e_mail ."";
$msg = nl2br($msg);
mail($destinataire, $objet, $msg, $headers);
$msg2= "
Nous avons bien pris en compte votre demande d'inscription ? la newsletter.
Pour vous d?sinscrire, contactez nous

";
mail($e_mail, $objet, $msg2, $headers);
$txt = "Vous avez un message";
}
}
?>
</head>

<style type="text/css">
body {
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:60%;
margin:50px;
color:#666666;}
.fieldset {
width:300px;
border: 0px solid red;
}
.fieldset label {
text-align:right;
width:70px;
float:left;
padding:0.2em;
margin:0;
margin-top:0.3em;
}
.fieldset .nobr {display:none;} .fieldset .textfield {
margin:3px;
height:20px;
width:200px;
border:solid 1px #8caf10;
background: transparent url("http://") no-repeat;
}
.fieldset .textarea {
margin:3px;
height:165px;
width:200px;
border:solid 0 #fff;
}
.submit {
margin:3px;
height:20px;
border:solid 1px #8caf10;
width:80px;
font:1.1em Verdana, Arial, Helvetica, sans-serif;
color:#000000;
text-transform:uppercase;
background: transparent url("http://") no-repeat;
}
}
</style>

<body>

<form action="" method="post">
<fieldset class="fieldset"><br>
<span class="" style="direction: ltr; text-align: left;"><label
for="email"></label></span> <br class="nobr">
<input name="email" class="textfield" id="email"
type="text"> <span class=""
style="direction: ltr; text-align: left;"><br>
<span class="" style="direction: ltr; text-align: left;">
<br class="nobr">
<br>
<label for="submit"> </label><br
class="nobr">
<input name="submit" class="submit" id="submit"
value="envoyer" type="submit"></span></span></fieldset>
</form>

</body>
0