Formulaire de Contact - Erreur d'acheminement
yves.gdn
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
-
bg62 Messages postés 23735 Date d'inscription Statut Modérateur Dernière intervention -
bg62 Messages postés 23735 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à toutes et tous
Je vous serais reconnaissant et vous remercie par avance de jeter un oeil sur la page de mon site qui contient le formulaire de contact, et me dire s'il vous plaît ce qui ne colle pas dans mon SCRIPT CGI. Lorsque mon visiteur remplit le formulaire, celui-ci est posté avec toutes les données telles que saisies, mais il reporte l'intégralité des informations sur une page internet blanche au lieu d'aller sur mon adresse mail qui est :
Adresse mail supprimée Modération CCM
Ma page du formulaire ESSAYEZ-LA, VOUS VERREZ OU SE SITUE LE PROBLEME :
http://www.gundermann.fr/Contact.htm
Nom de mon script (enregistré dans le dossier "cgi-bin" chez OVH au niveau zéro de mon site, avec droits-chmod 755) :
formyv.cgi
Voici le script en question, vous remerciant par avance de m'avoir lu, peut-être même arriverez-vous à me sortir de cette mauvaise passe.
Bien cordialement, Yves
#!/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) = 'Adresse mail supprimée Modération CCM';
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";
Je vous serais reconnaissant et vous remercie par avance de jeter un oeil sur la page de mon site qui contient le formulaire de contact, et me dire s'il vous plaît ce qui ne colle pas dans mon SCRIPT CGI. Lorsque mon visiteur remplit le formulaire, celui-ci est posté avec toutes les données telles que saisies, mais il reporte l'intégralité des informations sur une page internet blanche au lieu d'aller sur mon adresse mail qui est :
Adresse mail supprimée Modération CCM
Ma page du formulaire ESSAYEZ-LA, VOUS VERREZ OU SE SITUE LE PROBLEME :
http://www.gundermann.fr/Contact.htm
Nom de mon script (enregistré dans le dossier "cgi-bin" chez OVH au niveau zéro de mon site, avec droits-chmod 755) :
formyv.cgi
Voici le script en question, vous remerciant par avance de m'avoir lu, peut-être même arriverez-vous à me sortir de cette mauvaise passe.
Bien cordialement, Yves
#!/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) = 'Adresse mail supprimée Modération CCM';
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";
A voir également:
- Formulaire de Contact - Erreur d'acheminement
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de contact le bon coin introuvable - Forum Réseaux sociaux
- Formulaire de reclamation instagram - Guide
- Erreur 3005 france tv - Forum TV & Vidéo
4 réponses
1 - éviter le 'htm l' dans ce cas, mieux vaut le php
2 - pas de "cgi" .... !!
3 - si tu veux créer un formulaire :
https://www.unesourisetmoi.info/formulaire/nuls2.php
ou
https://www.commentcamarche.net/faq/4516-webmaster-un-formulaire-de-contact-pour-votre-site
;)
2 - pas de "cgi" .... !!
3 - si tu veux créer un formulaire :
https://www.unesourisetmoi.info/formulaire/nuls2.php
ou
https://www.commentcamarche.net/faq/4516-webmaster-un-formulaire-de-contact-pour-votre-site
;)
Eh bien, quelle chance j'ai, encore une réponse de votre part. C'est gentil et sypma, merci de votre aide.
J'avais en effet jusqu'ici rédigé le script en php. Dans ce cas, le formulaire m'était bien transmis sur mon adresse Email, mais sans aucune donnée du visiteur. De plus, la page de redirection pour remercier le visiteur fonctionnait.
Comme cela ne fonctionnait pas en php pour la réception sur mon adresse mail, sur les conseils de OVH je suis revenu au cgi.
Voilà. Tout simplement
J'avais en effet jusqu'ici rédigé le script en php. Dans ce cas, le formulaire m'était bien transmis sur mon adresse Email, mais sans aucune donnée du visiteur. De plus, la page de redirection pour remercier le visiteur fonctionnait.
Comme cela ne fonctionnait pas en php pour la réception sur mon adresse mail, sur les conseils de OVH je suis revenu au cgi.
Voilà. Tout simplement
les deux liens donnés sont testés ET approuvés, fonctionnent quasiment partout y compris chez ovh
reste à refaire le fichier et tester ... on finit toujours par y arriver ;)
reste à refaire le fichier et tester ... on finit toujours par y arriver ;)
Re-Bonjour BG62
J'ai profité d'un petit moment pour jeter un oeil à votre "fiche". CHAPEAU BAS !!! Vous êtes très doué, c'est le moins que je puisse dire. Nous avons, à peu de choses près, le même âge, est-il permis de se tutoyer ?
En attendant, comme vous semblez vous interesser à ce que je fais et que je vous avais parlé de mon script préalable en PHP, le voici, sachant que là par contre je ne reçois AUCUNE DONNEE de mon VISITEUR, tout les reste fonctionnant (je reçois le mail, mais vide ; la page d'accusé de réception est retournée correctement au visiteur.
Voici donc le PHP en question. Qu'est-ce qui coince ? MERCI D'AVANCE. Yves
<?php
define('MAIL_DESTINATAIRE','Adresse mail supprimée Modération CCM'); // 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();
}
?>
J'ai profité d'un petit moment pour jeter un oeil à votre "fiche". CHAPEAU BAS !!! Vous êtes très doué, c'est le moins que je puisse dire. Nous avons, à peu de choses près, le même âge, est-il permis de se tutoyer ?
En attendant, comme vous semblez vous interesser à ce que je fais et que je vous avais parlé de mon script préalable en PHP, le voici, sachant que là par contre je ne reçois AUCUNE DONNEE de mon VISITEUR, tout les reste fonctionnant (je reçois le mail, mais vide ; la page d'accusé de réception est retournée correctement au visiteur.
Voici donc le PHP en question. Qu'est-ce qui coince ? MERCI D'AVANCE. Yves
<?php
define('MAIL_DESTINATAIRE','Adresse mail supprimée Modération CCM'); // 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();
}
?>
Je souhaiterais ajouter que mon Site comporte une centaine de pages, actuellement réduit à deux pages pour faciliter la gestion de mon souci technique de Formulaire.
Publicité supprimée Modération CCM
Voilà pourquoi je tiens tant à résoudre mon problème CGI ou PHP, de sorte à pouvoir être joint facilement.
MERCI A TOUTES ET TOUS. Et bien cordialement. Yves
Publicité supprimée Modération CCM
Voilà pourquoi je tiens tant à résoudre mon problème CGI ou PHP, de sorte à pouvoir être joint facilement.
MERCI A TOUTES ET TOUS. Et bien cordialement. Yves