Hello,
J'ai différents formulaires simples (contact, newsletter, inscription...) sur différents sites.
Si le formulaire est correctement rempli, sans oublier aucun champ obligatoire, tout va bien, je reçois le formulaire par courriel, no problem.
Par contre, si un champ n'est pas (ou mal) rempli, la page s'ouvre sur un message d'erreur et l'affichage du formulaire partiellement rempli avec mention genre "vous n'avez pas rempli ça..." . Et le bouton "Envoyer" classique.
Le problème c'est que lorsqu'on corrige l'erreur, on peut cliquer 20 fois sur "Envoyer", rien ne se passe, le formulaire est bloqué... Le bouton "Recommencer" ne marche pas non plus...
Une idée du pourquoi de la chose?
Voici un bref apperçu du code (simplifié à une entrée et sans html pour faire simple...)
Voilà... Pourquoi ça ne marche pas lorsque le formulaire se voit à nouveau partiellement rempli (après erreur donc)?
Merci d'avance!
A.
J'ai différents formulaires simples (contact, newsletter, inscription...) sur différents sites.
Si le formulaire est correctement rempli, sans oublier aucun champ obligatoire, tout va bien, je reçois le formulaire par courriel, no problem.
Par contre, si un champ n'est pas (ou mal) rempli, la page s'ouvre sur un message d'erreur et l'affichage du formulaire partiellement rempli avec mention genre "vous n'avez pas rempli ça..." . Et le bouton "Envoyer" classique.
Le problème c'est que lorsqu'on corrige l'erreur, on peut cliquer 20 fois sur "Envoyer", rien ne se passe, le formulaire est bloqué... Le bouton "Recommencer" ne marche pas non plus...
Une idée du pourquoi de la chose?
Voici un bref apperçu du code (simplifié à une entrée et sans html pour faire simple...)
Code:
<?php
if(isset($_POST['envoi']))
{
$email_dest = "machin@machin.com";
$headers ="MIME-Version: 1.0 \n";
$headers .="From: Site internet <webmaster@machin.com>\n";
$headers .="Content-Type: text/html; charset=iso-8859-1 \n";
$subject = "Formulaire de contact depuis le site machin.com";
// Récupération des données du formulaire
$prenom = $_POST['prenom'];
//Définition des variables servant au traitement des info
// Conditions de mauvaises réponses (champ vide par exemple)
if ($prenom == '' )
{
// Action à adopter
?>
Un (ou plusieurs) champ(s) n'a(ont) pas été correctement rempli(s).
<?php
if ($prenom == '')
{
print "<li>Vous n'avez pas précisé votre prénom </li>\n";
}
/* Si les vérifications ont généré des erreurs, affichage du formulaire
contenant les données déjà saisies par l'utilisateur.
Si aucune erreur n'est relevée, alors le script continue et le message part */
?>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
<input type="text" name="prenom" maxlength="40" class="cases" value="<?php echo $prenom ?>" />
<input type="submit" class="verif" name="envoi" value="Envoyer" />
<input name="recommencer" type="reset" class="verif" id="recommencer" value="Recommencer" />
<?php
}
else
{
/* Si aucun des champs obligatoire n'est vide et si les données sont valides : Traitement des données et affichage des infos reçues*/
print "<p>Merci ! Voici la demande d'information reçue : </p>\n";
//etc...
/*envoi de ces mêmes informations par courrier électronique : */
$message = "<p> le message ici...\r\n";
/* On envoie le message */
if(mail($email_dest, $subject, $message, $headers))
{
echo("<p>blablabla, etc....</p>");
}
else
{
echo("<p>Un incident technique s'est produit, Nous n'avons pas reçu votre message. Contactez nous directement à <a href=mailto:contact@machin.com</a></p>\n");
}
}
}
/* Si cette page s'ouvre pour la première fois sans que le bouton soumettant le formulaire n'ait été cliqué, alors on affiche le formulaire normalement */
else
{
?>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
Votre prénom
<input type="text" name="prenom" maxlength="40" class="cases" value="" /></td>
<input type="submit" class="verif" name="envoi" value="Envoyer" /> <input name="recommencer" type="reset" class="verif" id="recommencer" value="Recommencer" />
</form>
<?php
}
?>
Voilà... Pourquoi ça ne marche pas lorsque le formulaire se voit à nouveau partiellement rempli (après erreur donc)?
Merci d'avance!
A.