Traitement FORMULAIRE PHP

yves.gdn Messages postés 56 Statut Membre -  
 malor -
Bonjour,
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

HostOfSeraphim Messages postés 7340 Statut Contributeur 1 608
 
Il y a des chances pour que tes variables soient vides. Vérifie les noms des champs dans ton formulaire.

0
yves.gdn Messages postés 56 Statut Membre 2
 
Merci HostofSeraphim, sympa de m'avoir répondu

J'avais évidemment vérifié au préalable, tout est parfaitement compatible, le problème se situe ailleurs. J'avais fait un autre script, qui me pose les mêmes difficultés, je reçois le mail, il est VIDE.

Voici l'autre script : (et MERCI encore)


<?php

define('MAIL_DESTINATAIRE','contact@gundermann.fr');
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 .= ', ';
}

$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";

$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";


if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete))

{
function Rec($text)
{
$text = trim($text);
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}

$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES);
$text = nl2br($text);
return $text;
};

function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};

$err_formulaire = false;

$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['submit']))

$email = (IsEmail($email)) ? $email : '';

if (($genre != '') && ($nom != '') && ($prenom != '') && ($email != '') && ($telephone != '') && ($mobile != '') && ($textemail != ''))
{

$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";

};

header("Status: 301 Moved Permanently", false, 301);
header("Location: http://www.gundermann.fr/Reception.htm");
exit();

}
?>
0
HostOfSeraphim Messages postés 7340 Statut Contributeur 1 608
 
Vérifie de cette façon histoire de voir où se situe à peu près le problème :

$genre = $_POST['genre'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['email'];
$telephone = $_POST['telephone'];
$mobile = $_POST['mobile'];
$textemail = $_POST['textemail'];

echo $genre;
echo $nom;
echo $prenom;
echo $email;
echo $telephone;
echo $mobile;
echo $textemail;


Et éventuellement, mets le reste du script en commentaire. Ensuite, lance le, et regarde si il y a quelque chose d'affiché ou non.


0
yves.gdn Messages postés 56 Statut Membre 2
 
Encore merci. J'ai ajouté les "echo...", et testé, cela ne change rien pour l'instant. Voici le résultat du mail que je reçois, TOUJOURS VIDE :

CIVILITE :

NOM :

PRENOM :

ADRESSE EMAIL :

TELEPHONE :

MOBILE :

VOTRE TEXTE :
0
HostOfSeraphim Messages postés 7340 Statut Contributeur 1 608
 
Refais-le, mais en mettant le reste du script en commentaire, histoire de voir si ça s'affiche ou non.
0

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

Posez votre question
yves.gdn Messages postés 56 Statut Membre 2
 
Encore et encore MERCI.

... sauf que, je ne sais pas faire cela, désolé. As-tu la possibilité de copier-coller mon script actuel que je reporte modifié suite à tes conseils, et me proposer la modification ?

Le souci majeur est que je suis retraité, j'étais infographiste et me suis laissé dépasser par la programmation !
J'étais déjà bien content d'en arriver jusque là. Merci de ta compréhension. Voici le script tel qu'il se présente maintenant.

ET J'ESPERE NE PAS GACHER TON WEEK-END PAR L'AIDE QUE TU M'APPORTES


<?php

define('MAIL_DESTINATAIRE','contact@gundermann.fr');
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 .= ', ';
}

$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";

$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";

echo $genre;
echo $nom;
echo $prenom;
echo $email;
echo $telephone;
echo $mobile;
echo $textemail;


if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete))

{
function Rec($text)
{
$text = trim($text);
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}

$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES);
$text = nl2br($text);
return $text;
};

function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};

$err_formulaire = false;

$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['submit']))

$email = (IsEmail($email)) ? $email : '';

if (($genre != '') && ($nom != '') && ($prenom != '') && ($email != '') && ($telephone != '') && ($mobile != '') && ($textemail != ''))
{

$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";

};

header("Status: 301 Moved Permanently", false, 301);
header("Location: http://www.gundermann.fr/Reception.htm");
exit();

}
?>
0
HostOfSeraphim Messages postés 7340 Statut Contributeur 1 608
 
Dans ce cas, le plus simple :

Admettons que ton fichier s'appelle traitement.php. Renomme-le traitement2.php.

Fais un nouveau fichier traitement.php, et colle le code suivant :

<?php
$genre = $_POST['genre'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['email'];
$telephone = $_POST['telephone'];
$mobile = $_POST['mobile'];
$textemail = $_POST['textemail'];

echo $genre;
echo $nom;
echo $prenom;
echo $email;
echo $telephone;
echo $mobile;
echo $textemail;
?>


Ensuite, refais le test avec ton formulaire : il n'y aura pas de mail envoyé, juste une page vierge ou avec quelques données. En fonction du résultat, on pourra voir où est à peu près le problème.

(Une fois les tests finis, on supprimera traitement.php et on renommera traitement2.php en traitement.php pour retourner à l'état d'origine)

0
yves.gdn Messages postés 56 Statut Membre 2
 
Voilà, c'est fait

Résultat : UNE PAGE BLANCHE en effet, et effectivement, PAS DE MAIL
0
HostOfSeraphim Messages postés 7340 Statut Contributeur 1 608
 
Donc tes variables sont vides.

Tu peux faire un copier / coller du formulaire ? (entre les balises <form> et </form>, celles-ci comprises ?)

0
yves.gdn Messages postés 56 Statut Membre 2
 
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>
0
HostOfSeraphim Messages postés 7340 Statut Contributeur 1 608
 
Comment 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...

0
yves.gdn Messages postés 56 Statut Membre 2
 
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
0
yves.gdn Messages postés 56 Statut Membre 2
 
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 :
0
HostOfSeraphim Messages postés 7340 Statut Contributeur 1 608
 
Essaye 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)

0
yves.gdn Messages postés 56 Statut Membre 2
 
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
0
HostOfSeraphim Messages postés 7340 Statut Contributeur 1 608
 
Le "formyv.cgi" qui apparaît plus haut, c'est quoi, en fait ?
0
yves.gdn Messages postés 56 Statut Membre 2
 
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
0
yves.gdn Messages postés 56 Statut Membre 2
 
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
0
jarviss Messages postés 35 Statut Membre
 
yves?
0
yves.gdn Messages postés 56 Statut Membre 2
 
je suis là
0
jarviss Messages postés 35 Statut Membre
 
tres bien votre formulaire envoi t'il les donné entrez dans une base de donné?
0
yves.gdn Messages postés 56 Statut Membre 2
 
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.
0
jarviss Messages postés 35 Statut Membre
 
d'accord une autre question a la fin du formulaire y a t'il un bouton pour valider le formulaire?
0
yves.gdn Messages postés 56 Statut Membre 2
 
oui, bouton "envoyer"
0
jarviss Messages postés 35 Statut Membre
 
ok quel son les differentes information que vous demander et quel est la page d'action suivant la validation dut au bouton envoyer?
0