FORMULAIRE : les données ne m'arrivent pas.

yves.gdn Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -  
bg62 Messages postés 23734 Date d'inscription   Statut Modérateur Dernière intervention   -
Madame, Monsieur, BONJOUR

J'ai créé un formulaire de contact. Si vous l'essayez :
http://www.gundermann.fr/Contact.htm
vous remarquerez que toutes les données de mon visiteur sont bien prises en compte. Le problème, c'est que le formulaire rempli ne me parvient pas sur mon adresse mail, il est orienté sur une page qui n'a rien à voir avec mon adresse email. Ici le formulaire est traité en.cgi (script ci-dessous).

Lorsque je passe en .php, le mail m'est transmis, mon visiteur reçoit une page de conformation de réception (pour l'instant j'y indique une erreur). Problème dans ce cas, les données saisies par mon visiteur me sont invisibles, je ne reçois que le nom des champs, mais rien derrière. Tout ce qui a été saisi par mon visiteur n'apparaît pas.

Je vous serais reconnaissant de bien vouloir jeter un oeil à mes deux scripts, dans l'un (le cgi) c'est sans doute mon adressage qui n'est pas correct. Dans l'autre (en php) c'est la récupération des données qui ne colle pas.

Merci de ne pas me renvoyer sur des sites de formation, ni de me communiquer des listes d'exemple, j'en ai déjà reçues beaucoup mais je n'y comprends rien. La programmation n'est pas mon truc du tout, ni ma formation. Je suis retraité, j'étais infographiste.

Bien cordialement, mes remerciements anticipés, et bonne journée à vous. Merci d'accepter de me donner un peu de votre temps. Yves



SCRIPT CGI : C'est ACTUELLEMENT LE SCRIPT CGI qui est ACTIF SUR MON SITE

#!/usr/local/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

read(STDIN, my $donnees, $ENV{'CONTENT_LENGTH'});
my $url = "http://gundermann.fr/";
my($mailTo) = 'contact@gundermann.fr';
my @champs_formulaire = split(/&/, $donnees);
my ($champ, $nom, $valeur);
my %formulaire;
foreach $champ (@champs_formulaire) {
(my $nom, my $valeur) = split(/=/, $champ);
$valeur =~ tr/+/ /;
$valeur =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$valeur =~ s/</</g;
$valeur =~ s/>/>/g;
$formulaire{$nom} = $valeur;
}

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>CGI-Feedback</title></head>\n";
print "<body><h1>FORMULAIRE DE CONTACT </h1>\n";
print "<p><b>CIVILITE :</b> $formulaire{genre}</p>\n";
print "<p><b>NOM :</b> $formulaire{nom}</p>\n";
print "<p><b>PRENOM :</b> $formulaire{prenom}</p>\n";
print "<p><b>ADRESSE E-Mail :</b> $formulaire{email}</p>\n";
print "<p><b>TELEPHONE FIXE :</b> $formulaire{telephone}</p>\n";
print "<p><b>TELEPHONE MOBILE :</b> $formulaire{mobile}</p>\n";
print "<p><b>TEXTE :</b> $formulaire{textemail}</p>\n";

print "</body></html>\n";



SCRIPT PHP :

<?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();

}
?>

Voilà, et merci à vous. Quelle ligne manquante ou qu'est-ce qui est en trop ?

13 réponses

Profil bloqué
 
$to=tonadresse;
$subject=tonsujet;
$message=$nom.$prenom.$email etc;
$message = html_entity_decode($message);
$message = str_replace(''',"'",$message);
$message = str_replace(''',"'",$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
mail ( $to , $subject , $message );
echo '<p>'.$message_envoye.'</p>'."\n";

c'est plutot un truc de ce style qu'il te faudrait mettre
1
yves.gdn Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci beaucoup.

Alors, concrètement, je dois faire quoi s'il vous (te) plaît ? Je n'y connais rien et suis bloqué depuis des semaines entières. Jusque là, impossible d'avoir une vraie piste. La vôtre me paraît très cohérente, j'apprécie, énormément.

Merci encore. Super plus que sympa...
Cordialement. Yves
0
yves.gdn Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   2
 
Bonjour Monsieur Varaldi

Merci infiniment d'avoir encore pris du temps. J'ai essayé vos lignes de programmation mais cela ne colle pas. Sans doute suis-je trop novice pour le faire correctement. A mon avis, lorsque je colle et adapte vos lignes, je dois laisser des doublons qui font que cela coince.
Si je n'abuse pas, pourriez-vous un copier-coller de tout mon script, l'adapter et me le retourner.
Bonne journée. Bien cordialement. Yves (ici dans l'Est de la France, temps pourri, vous avez bien de la chance d'habiter à Valence).
0
Profil bloqué
 
Malheureusement cela fait bien longtemps que je n'ai pas programmé, et j'avoue avoir un peu de mal ... ^^'

Mais sinon, peut-être que vous pourriez essayer de remplacer

// 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(); 

} 
?> 


par

// envoi du mail 
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 
mail($genre, $nom, $prenom, $email, $telephone, $mobile, $textemail))
echo '<p>'.$message_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(); 

} 
?> 


Mais ça fait trop longtemps que je n'y ait pas mis le nez dedans... ^^'

Au fait, un truc me parait étrange, 2 lignes correspondent à l'envoi du mail.
0
yves.gdn Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   2
 
Encore un grand merci

OUI, c'est étrange et anormal, deux lignes correspondent à l'envoi du mail. Comme j'ai récupéré et adapté le script ailleurs, je ne sais pas ce qu'il faut conserver. Comme je l'ai dit, je n'y connais rien, je n'y comprends rien.
Et je reste persuadé que allez trouver mon script, si vous acceptez de persévérer et de me donner de votre temps.

Bien cordialement, et je vous souhaite un excellent week-end. Ou vacances ? Yves
0

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

Posez votre question
Profil bloqué
 
Si vous désirez simplement envoyer le petit formulaire dans un mail, regardez ici, vous devriez trouver votre bonheur.

www.salemioche.net/script-php-1.php

Varaldi Q.
Laisse moi 2 minutes que j'te trouve un autre truc...
0
yves.gdn Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   2
 
Bonsoir Monsieur Varaldi

Merci pour ce que vous m'avez transmis. J'ai mis tout cela en oeuvre, exactement tel qu'indiqué.
Mon visiteur reçoit la page de réception après avoir validé le mail (bouton envoyer). Quant à moi, je reçois un mail entièrement vide dont l'expéditeur est moi-même.

Que se passe-t-il ? Voici le script en question. Encore merci pour toute votre précieuse aide. Bonne soiré, bon week-end et bien cordialement.
Yves

<?php
$TO = "contact@gundermann.fr";

$h = "From: " . $TO;

$message = "";

while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}

mail($TO, $subject, $message, $h);

header("Location: http://www.gundermann.fr/Reception.htm");

?>
0
Profil bloqué
 
Je vous ai envoyé un message privé.
0
bg62 Messages postés 23734 Date d'inscription   Statut Modérateur Dernière intervention   2 409
 
ben voyons !!!
encore un de plus ;)
0
yves.gdn Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci, mais quelle est la procédure pour consulter un message privé ? Je ne trouve pas où cliquer...
0
Profil bloqué
 
En haut à droite, la petite enveloppe à côté de votre pseudo
0
cheese42 Messages postés 860 Date d'inscription   Statut Membre Dernière intervention   120
 
Bonjour, voici un formulaire que j'utilise sur tous mes sites et qui fonctionne très bien, nommez bien votre page (contact.php),
ensuite dans cette page, copiez collez ce code=>



<strong><font color="#000000">Contactez-nous en remplissant le formulaire,<br />
nous vous répondrons<br /> dans les plus brefs délais.</font></strong>
<?php
$CONFIG['email_reponse'] = 'vous@votresite.com'; // votre email
if(isset($_POST['envoi']) && ( $_POST['envoi'] == 'Envoyer le message'))
{
$sujet = $_POST['sujet'];
$email = $_POST['email'];
$message = $_POST['message'];
$date = date('d-m-Y');
$ip = $_SERVER['REMOTE_ADDR'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];

if($message != null and $message != "")
{
$corps = 'De : '.$email.'
----Adresse IP : '.$ip.'
----Nom : '.$nom.'
----Prenom : '.$prenom.'
----Date : '.$date.'
----Sujet : '.$sujet.'
----Message : '.$message.'';

$entete = "Content-type:text/html\nFrom:$email\r\nReply-To:$email";


if(mail($CONFIG['email_reponse'],'Contact : '.$sujet,$corps,$entete))
{
echo '<font color="#000000" size="+2"><br />Votre message nous a bien été envoyé,<br />merci.</font>';
}
}
else
{
echo '<br /><font color="#FF0000" size="+2"><strong>Vous n\'avez pas entré de message !</strong></font>';
}
}
?>
<form action="contact.php" method="post" name="formulaire">

<center><font color="#FF0000">Sélectionnez un sujet</font><br />
<select name="sujet">
<option value="Question générale">Question générale</option>
<option value="Question commerciale">Question commerciale</option>
<option value="Problème compte">Problème compte</option>
<option value="Signalement d'un bugg">Signaler un bugg</option>
<option value="Publicité / Partenariats">Publicité / Partenariats</option>
<option value="Suggestion">Suggestion</option>
<option value="Autre">Autre</option>
</select>
<br /><br />
<font color="#000000">Votre nom :</font><br />

<input type="text" name="nom" id="nom" value=""/>
<br /><br />
<font color="#000000">Votre prénom :</font><br />

<input type="text" name="prenom" id="prenom" value=""/>
<br /><br />
<font color="#000000">Votre adresse mail :</font><br />
<input name="email" type="text" value="" />
<br /><br />
<font color="#000000">Votre message :</font><br />

<textarea cols="30" rows="5" name="message" class="textarea"></textarea>
<br /><br />
<input type="submit" value="Envoyer le message" name="envoi"/></center>
</form>


-----------------------
voilà le code.....
0
yves.gdn Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci beaucoup. Bonne journée à vous, et bien cordialement. J'adapte votre script à mes données, j'essaye et je vous tiens au courant.
0
yves.gdn Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   2
 
Re-Bonjour Cheese42

Qu'ai-je fait comme boulette ? J'ai adapté votre script (essayez sur :
http://www.gundermann.fr/Contact.htm) vous verrez, les champs restent vides et je ne reçois aucun mail.

Si vous voulez bien prendre un peu de temps pour jeter un oeil, bien cordialement et bonne après-midi. Yves


<strong><font color="#000000">Formulaire de Contact</font></strong>
<?php
$CONFIG['email_reponse'] = 'contact@gundermann.fr'; // votre email
if(isset($_POST['envoi']) && ( $_POST['envoi'] == 'Envoyer le message'))
{
$subject = $_POST['subject'];
$email = $_POST['email'];
$message = $_POST['message'];
$date = date('d-m-Y');
$ip = $_SERVER['REMOTE_ADDR'];
$genre = $_POST['genre'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$telephone = $_POST['telephone'];
$mobile = $_POST['mobile'];

if($message != null and $message != "")
{
$corps = 'De : '.$email.'
----Adresse IP : '.$ip.'
----Civilité : '.$genre.'
----Nom : '.$nom.'
----Prénom : '.$prenom.'
----Votre adresse E-Mail : '.$email.'
----Téléphone fixe : '.$telephone.'
----Téléphone mobile : '.$mobile.'
----Sujet de votre mail : '.$subject.'
----Date : '.$date.'
----Message : '.$message.'';

$entete = "Content-type:text/html\nFrom:$email\r\nReply-To:$email";


if(mail($CONFIG['email_reponse'],'Contact : '.$subject,$corps,$entete))
{
echo '<font color="#000000" size="+2"><br />Votre message nous a bien été envoyé,<br />merci.</font>';
}
}
else
{
echo '<br /><font color="#FF0000" size="+2"><strong>Vous n\'avez pas entré de message !</strong></font>';
}
}
?>
<form action="contact.php" method="post" name="formulaire">


<font color="#000000">Votre civilité :</font><br />
<input type="text" name="genre" id="genre" value=""/>
<br /><br />

<font color="#000000">Votre nom :</font><br />
<input type="text" name="nom" id="nom" value=""/>
<br /><br />

<font color="#000000">Votre prénom :</font><br />
<input type="text" name="prenom" id="prenom" value=""/>
<br /><br />

<font color="#000000">Votre adresse mail :</font><br />
<input name="email" type="text" value="" />
<br /><br />

<font color="#000000">Votre téléphone fixe :</font><br />
<input type="text" name="telephone" id="telephone" value=""/>
<br /><br />

<font color="#000000">Votre téléphone mobile :</font><br />
<input type="text" name="mobile" id="mobile" value=""/>
<br /><br />

<font color="#000000">Sujet de votre mail :</font><br />
<input type="text" name="subject" id="subject" value=""/>
<br /><br />

<font color="#000000">Votre message :</font><br />

<textarea cols="30" rows="5" name="message" class="textarea"></textarea>
<br /><br />

<input type="submit" value="Envoyer" name="envoi"/></center>
</form>
0
cheese42 Messages postés 860 Date d'inscription   Statut Membre Dernière intervention   120
 
Rebonjour, lisez bien mon message,
veuillez nommer votre page contact.PHP et non pas html ,
il y a du php dans la page, et si vous mettez html,
le script ne pourra pas s'exécuter ;)
donc pas=> Contact.htm
ni=> contact.htm,
ni=> Contact.html
mais=>contact.php
0
yves.gdn Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   2
 
Re-Bonjour

Oui, j'avais bien lu votre message. Votre script se nommait bien (en minuscules et avec la bonne extension) "contact.htm. Fichier placé au niveau zéro de mon Site chez OVH dans un dossier "cgi-bin".

Le fichier "Contact.htm" qui à présent est en minuscules aussi est en fait généré automatiquement, ainsi que la création proprement dite du formulaire, par mon logiciel de PAO "QuarkXPress". Je ne peux donc absolument pas intervenir là-dessus.

Le script PHP que je n'arrive pas à trouver consiste donc uniquement au traitement des données, puisque le formulaire est déjà créé. Il s'agit du script de traitement lorsque mon visiteur a déjà rempli tous les champs et qu'il valide par le bouton "submit".
Je crois que je n'étais pas très clair. Désolé. Qu'en pensez-vous ? Bien cordialement et encore un énorme merci pour tout le temps que vous m'avez déjà consacré.

Yves
0