Traitement FORMULAIRE PHP
J'ai créé un site Internet (http://www.gundermann.fr) avec un formulaire tout simple, de base. Lorsque mon visiteur m'écrit, je ne reçois pas les informations qu'il a saisies dans les champs du formulaire, C'EST VIDE. Qui peut m'aider ?
Tout ce que je reçois, c'est :
MESSAGE VENANT DE : avec rien derrière
"TELEPHONE : avec rien derrière
LE MESSAGE EST LE SUIVANT : avec rien derrière
Le formulaire de départ fonctionne, gestion automatique par QuarkXPress. Ce qui ne fonctionne pas, c'est le traitement des informations. Voici le script de traitement php que j'ai créé. Qu'est-ce qui coince ?
Merci beaucoup
Pour info :
Configuration: Mac OS X / Safari 533.19.4
SCRIPT PHP de TRAITEMENT DE FORMULAIRE
<?php
$subject="Message venant du site";
$destinataire="contact@gundermann.fr";
header("Location: http://www.gundermann.fr/Reception.htm");
$genre = $_POST['genre'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['email'];
$telephone = $_POST['telephone'];
$mobile = $_POST['mobile'];
$textemail = $_POST['textemail'];
//voici la version Mine
$headers = "MIME-Version: 1.0\r\n";
//ici on détermine le mail en format texte
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$body ="MESSAGE VENANT DE : ".$genre." ".$prenom." ".$snom.".\n";
$body .= "TELEPHONE : ".$telephone." ".$mobile.".\n";
$body .= "LE MESSAGE EST LE SUIVANT : ".$textemail.".\n";
//Envoie du mail
mail($destinataire,$subject,$body,$headers);
?>
26 réponses
Le problème central est que les champs du formulaire ne transmettent pas leurs valeurs dans l'e-mail reçu, malgré l'envoi du formulaire et le script de traitement. Les échanges soulignent des erreurs potentielles dans le script PHP, comme une variable mal nommée ($snom au lieu de $nom), l'envoi du mail après une redirection et une configuration d'en-têtes inadaptée. D'autres points soulevés invitent à afficher les valeurs des variables lors de l'exécution et à vérifier que l'attribut action du formulaire pointe vers le bon script et le bon type d'encodage. En pratique, il est recommandé d'envoyer le mail avant toute redirection et de corriger les noms de champs pour garantir l'envoi fiable des données du formulaire.
-
Erreur sur l'adresse ci-dessus
http://www.gundermann.fr/Contact.htm -
à
HOSTOFSERAPHIM
JARVISS
A.NONYMOUS
Merci pour votre aide. Il va sans dire, à titre de remerciement, que je vous ferai parvenir le script complet aussitôt que celui-ci fonctionnera (faites-moi parvenir votre adresse email s'il vous plaît).
A l'heure actuelle, si vous essayez le formulaire sur
http://www.gundermann.fr/contact.htm
vous verrez que (malgré le dernier rajout proposé (if empty...) le résultat est surprenant, vous obtiendrez un autre formulaire que le mien, vide.
Bonne soirée, encore tous mes remerciements et bien cordialement. Yves -
A insérer en début de script :
if(empty($_POST))
{
header('Location: /');
die();
}
A priori, aucun des scripts proposés n'interrompait le traitement quand le contenu de $_POST est vide, d'où la possibilité d'envoyer un mail avec des infos vides. -
Merci encore mais cela ne fonctionne pas. Votre script m'envoie sur un formulaire vide. Bonne journée.
-
merci, j'essaye et vous tiens au courant
-
Je pense que vous trouverez toutes les informations directement sur ma page de formulaire :
http://www.gundermann.fr/contact.htm
Cordialement, et désolé car vous bloquez la possibilité à d'autres de m'apporter les réponses que j'attends.
Si vous avez des questions précises, utilisez s'il vous plaît la fonction ci-dessous :
Créer un nouveau sujet-
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Formulaire de Contact</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="" />
</head>
<body>
<h1 align=center > Formulaire de Contact </h1>
<form type="formulaire" method="post" action="http://www.gundermann.fr/cgi-bin/formyv.cgi">
Quel est votre civilité:
<input name="genre" type="radio" value="m"/>M.
<input name="genre" type="radio" value="mme"/>Mme
<input name="genre" type="radio" value="mlle"/>Mlle
<br/>
Votre nom:
<input type="text" name="nom" size="40"/>
Votre prénom:
<input type="text" name="prenom" size="40"/>
<br/>
Votre adresse e-mail:
<input type="text" name="email" size="50"/>
<br/>
Votre n° de téléphone:
<input type="text" name="telephone" size="10"/>
Votre mobile:
<input type="text" name="mobile" size="10"/>
<br/>
Votre texte:<br/>
<textarea name="textemail" cols="100" rows="5"/>
<input value="Envoyer" type="submit"/><br/>
<input value="Annulation" type="reset"/><br/><br/>
</form>
<?php
if(isset($_POST['Envoyer'])){
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$email=$_POST['email'];
$telephone=$_POST['telephone'];
$mobile=$_POST['mobile'];
$textemail=$_POST['textemail'];
}
voila je pense que se code fonctionne inserer le a votre site et ajouter y les fonction manquante et cela devrait fonctionnait
-
-
oui, bouton "envoyer"
-
Bonjour
Non, le formulaire est prévu pour être transmis directement sur mon mail. Le problème c'est que les informations saisies ne me parviennent pas, en l'état actuel.
Bien cordialement. -
tres bien votre formulaire envoi t'il les donné entrez dans une base de donné?
-
je suis là
-
Merci de ton aide du matin, c'était super sympa. Dommage que tu n'as pas réussi à résoudre mon problème.
Bon après-midi, bon week-end. Et bien cordialement. Yves -
Je suis vraiment désolé, je suis en train de te faire devenir dingue avec mon souci, cela fait des heures que tu te penches sur mon script...
Je ne sais même pas quoi dire pour m'en excuser... et te remercier sincèrement et chaleureusement.
Yves -
Je l'avais déjà fait, ça ne fonctionne pas davantage, et OVH m'a demandé de mettre le fichier "contact.php" dans un dossier "cgi-bin" au niveau zéro de mon site
-
ContributeurEssaye de mettre le fichier contact.php au même niveau que le fichier du formulaire, j'suis pas sûr que ça influe, mais on ne sait jamais...
(et pense à changer le chemin du coup dans la balise FORM)
-
Je suis revenu, actuellement, au script suivant (merci d'oublier tous les autres scripts sinon nous ne parlerons pas de la même chose)
Voici mon script PHP de contact<?php
define('MAIL_DESTINATAIRE','contact@gundermann.fr'); // remplacez par votre email
define('MAIL_SUJET','Formulaire de contact');
foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}
$pref = $_POST['pref'];
$sqlpref = '';
for ($i=0; $i<count($pref); $i++)
{
$sqlpref .= $pref[$i];
$sqlpref .= ', ';
}
$genre = $_POST['genre'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['email'];
$telephone = $_POST['telephone'];
$mobile = $_POST['mobile'];
$textemail = $_POST['textemail'];
//Préparation de l entête du mail:
$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['nom']} "
."<{$_POST['email']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['email']."\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";
// préparation du corps du mail
$mail_corps .= "CIVILITE :".$genre."\n\n";
$mail_corps .= "NOM :".$nom."\n\n";
$mail_corps .= "PRENOM :".$prenom."\n\n";
$mail_corps .= "ADRESSE EMAIL :".$email."\n\n";
$mail_corps .= "TELEPHONE :".$telephone."\n\n";
$mail_corps .= "MOBILE :".$mobile."\n\n";
$mail_corps .= "VOTRE TEXTE :".$textemail."\n\n";
// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete))
{
// si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables.
$genre = (isset($_POST['genre'])) ? Rec($_POST['genre']) : '';
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$prenom = (isset($_POST['prenom'])) ? Rec($_POST['prenom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$telephone = (isset($_POST['telephone'])) ? Rec($_POST['telephone']) : '';
$mobile = (isset($_POST['mobile'])) ? Rec($_POST['mobile']) : '';
$textemail = (isset($_POST['textemail'])) ? Rec($_POST['textemail']) : '';
if (isset($_POST['envoi']))
{
// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
$err_formulaire = (IsEmail($email)) ? false : true;
if (($nom != '') && ($prenom != '') && ($email != '') && ($mobile != '') && ($textemail != ''))
{
// les 5 variables sont remplies, on génère puis envoie le mail
$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";
// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};
// Remplacement de certains caractères spéciaux
$message = html_entity_decode($message);
$message = str_replace(''',"'",$message);
$message = str_replace('’',"'",$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
// Envoi du mail
if (mail($genre, $nom, $prenom, $email, $telephone, $mobile, $textemail))
{
echo '<p>'.$message_envoye.'</p>'."\n";
}
else
{
echo '<p>'.$message_non_envoye.'</p>'."\n";
};
};
}; // fin du if (!isset($_POST['envoi']))
if (($err_formulaire) || (!isset($_POST['envoi'])))
//Le mail est bien expédié
header("Status: 301 Moved Permanently", false, 301);
header("Location: http://www.gundermann.fr/Reception.htm");
exit();
}
?>
SACHANT que ce script m'envoie le mail suivant :
CIVILITE :
NOM :
PRENOM :
ADRESSE EMAIL :
TELEPHONE :
MOBILE :
VOTRE TEXTE : -
La page PHP où le traitement du formulaire est fait s'appelle :
contact.php
La page HTML où le formulaire est saisi s'appelle :
http://www.gundermann.fr/Contact.htm
La page de retour après réception du mail s'appelle :
http://www.gundermann.fr/Reception.htm
Mon adresse mail directe est :
contact@gundermann.fr -
ContributeurComment s'appelle la page PHP où le traitement du formulaire est fait ? La page .cgi mise dans la propriété "ACTION" ne semble pas exister sur le serveur...
-
Voici le formulaire d'origine
<HTML>
<HEAD>
<TITLE>
Formulaire de Contact
</TITLE>
</HEAD>
<BODY>
<H1 align=center>
Formulaire de Contact
</H1>
<P>
<FORM METHOD="POST" ACTION="http://www.gundermann.fr/cgi-bin/formyv.cgi" ENCTYPE="PLAIN">
<INPUT TYPE=HIDDEN NAME="recipient" VALUE="contact@gundermann.fr">
<INPUT TYPE=HIDDEN NAME="from" VALUE="Visiteur">
<INPUT TYPE=HIDDEN NAME="email" VALUE="visiteur@toto.com">
<INPUT TYPE=HIDDEN NAME="subject" VALUE="Réponses de ma page Web">
<INPUT TYPE=HIDDEN NAME="required" VALUE="nom,prenom,email,textemail">
<INPUT TYPE=HIDDEN NAME="redirect" VALUE="http://www.gundermann.fr/Reception.htm">
<br><br>
<tr>
<INPUT NAME="genre" TYPE="radio" VALUE="m">M.
<INPUT NAME="genre" TYPE="radio" VALUE="mme">Mme
<INPUT NAME="genre" TYPE="radio" VALUE="mlle">Mlle<br><br>
</tr>
<tr>
<td>Votre nom</td><br>
<td>
<INPUT TYPE=TEXT NAME="nom" SIZE="40"><br><br>
</td>
</tr>
<tr>
<td>Votre prénom</td><br>
<td>
<INPUT TYPE=TEXT NAME="prenom" SIZE="40"><br><br>
</td>
</tr>
<tr>
<td>Votre adresse e-mail</td><br>
<td>
<INPUT TYPE=TEXT NAME="email" SIZE="50"><br><br>
</td>
</tr>
<tr>
<td>Votre texte</td><br>
<td>
<TEXTAREA NAME="textemail" COLS="100" ROWS="5">
Tapez ici le texte de votre mail</TEXTAREA><br><br>
</td>
</tr>
<tr>
<td>
<INPUT VALUE="Envoyer" TYPE="submit"><br>
<INPUT VALUE="Annulation" TYPE="reset"><br><br>
</td>
</tr>
</FORM>
</P>
</BODY>
</HTML> -
ContributeurDonc tes variables sont vides.
Tu peux faire un copier / coller du formulaire ? (entre les balises <form> et </form>, celles-ci comprises ?)
-
Voilà, c'est fait
Résultat : UNE PAGE BLANCHE en effet, et effectivement, PAS DE MAIL
- 1
- 2