aventurier19
Messages postés102Date d'inscriptionmercredi 14 novembre 2007StatutMembreDernière intervention23 juillet 2013 15 mai 2013 à 09:24
Bonjour philifour,
Quel(s) champs n'avez-vous pas ?
Vers quel service de messagerie vous avez envoyé un mail (hotmail, orange, laposte, sfr, bouygues, free, ...)
Le formulaire fonctionne, mais dans le mail de réception, je n'ai pas tous les champs, je n'ai que le message.
Cordialement
Philippe FOURDRINIER
aventurier19
Messages postés102Date d'inscriptionmercredi 14 novembre 2007StatutMembreDernière intervention23 juillet 2013 12 déc. 2012 à 20:31
Pour Ninja83:
Dans le fichier reponse.php, remplace
session_destroy;
par
unset($destinataire, $nom, $prenom, $email, $sujet, $message);
ainsi seules les variables utilisées dans le formulaire seront effacées.
Attention cependant car si suite à ton login, tu définis une/les variable(s) $destinataire, $nom, $prenom, $email, $sujet et/ou $message ; elles seront aussi effacées. Si c'est le cas personnalise le unset(); ci-dessus avec tes contraintes.
Je trouve se script très bien fait par contre je rencontre juste un petit
soucis en faite l'envoie des mails se passe très bien
sauf pour la parti résultat en faite des que j'ai la page résultat
cela me déconnecte au niveau login obliger de me reconnecter
comment faire pour rester connecter ?
aventurier19
Messages postés102Date d'inscriptionmercredi 14 novembre 2007StatutMembreDernière intervention23 juillet 2013 26 sept. 2012 à 11:09
Oui c'est possible, j'avais l'intention de le faire rapidement après les dernières modif mais faute de temps ; c'est pas encore fait.
Je vais essayer de me pencher dessus prochainement
Bonjour,
Y aurait il un moyen de pouvoir le securiser un peu plus
notament rendre invisible les emails des destinataires (evite le spam)
et justement de ne pas voir la liste des destinataire si on affiche la source
Cdt Jean
Bravo pour ce script en tout cas
cs_oliver26
Messages postés4Date d'inscriptionvendredi 28 août 2009StatutMembreDernière intervention 5 juin 2012 5 juin 2012 à 22:03
formulaire pas mal je trouve
nickg
Messages postés9Date d'inscriptionmercredi 16 octobre 2002StatutMembreDernière intervention31 août 2017 27 mars 2011 à 16:03
Ce script se démarque des autres . Avoir la possibilité envoyer un mel en sélectionnant un destinataire est super .
Ca donne l'air d'avoir un carnet d'adresse en permanence avec le formulaire.
Pour avoir cherché des heures sur le web , les formulaires de ce type sont extrêmement rares.
Super idée et encore merci pour ce travail
cod57
Messages postés1653Date d'inscriptiondimanche 7 septembre 2008StatutMembreDernière intervention11 septembre 201319 5 janv. 2011 à 13:55
bonjour
oui le code je l'ai changé pour plus avoir les erreurs de variables non definies ... (en php5 strict) c'est pour ça que je le reposte. Bon je te poste un exemple essaie le.
tu evites le repostage ainsi
a++
<?php
/* cod57 pour phpcs 2011*/
/* change $destinataire */
while (list($key,$val) = each($_POST)){
$message .= "$key :\n$val\n\n";
}
if(mail($destinataire,$hidden_sujet,$message,$header)){
//echo '<script>alert("E-mail envoyé")</script>';
Header('Location:'.$_SERVER['PHP_SELF'].'?confirmation=ok');exit;
}else{
echo 'Problème avec la fonction mail sur le serveur !';exit;
}
}else{
echo $form;exit;
}
?>
aventurier19
Messages postés102Date d'inscriptionmercredi 14 novembre 2007StatutMembreDernière intervention23 juillet 2013 5 janv. 2011 à 12:17
Merci COD57 d'avoir jeter un oeil sur le code.
Commme tu as pu le voir la 1ère fois les variables ne sont pas initialisées, pourquoi.
Si je les initialise au début en faisant $nom=''; :
- en cliquant sur envoyer le script efface les variables entrées par l'expéditeur et de ce fait ne veut pas m'envoyer le mail et mets que les champs sont vide
Si je les initialise au début en faisant $nom=(isset($nom)); :
- en cliqant sur envoyer le script ne peut plus voir si des variable sont vide.
Je suis débutant, si tu sais comment, peux-tu m'aider.
PS : Tu as recopier le code ; avait-tu fais une modif ?
Pour l'anti F5 j'aimerai qu'il soit dans le fichier, donc je cherche et prog.
cod57
Messages postés1653Date d'inscriptiondimanche 7 septembre 2008StatutMembreDernière intervention11 septembre 201319 4 janv. 2011 à 21:01
bonsoir
je te reposte ton script
plusieurs variables non definies
il faut utiliser isset
le script fonctionne
mais je pense que tu peux l'ameliorer
as tu pensé à une technique anti double postage (f5 et c'est reparti ...) tu devrais rediriger vers une page de remerciement
et mettre une variable de controle a false apres l'envoi ...
pense aux sessions
si tu appuies sur f5 apres l'envoi ton mail est renvoyé et renvoyé ...
*/
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
// destinataire est l'adresse mail de destination. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
// $destinataire = 'destinataire';
// copie ? (envoie une copie au visiteur)
$copie = 'oui';
// Action du formulaire (si votre page a des paramètres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = '';
// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !
Vous allez recevoir une copie de votre message dans la boîte email que vous avez écrit.";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer ultérieurement SVP.";
// Liste des messages d'erreur
$error_msg=array(); // intialisation du tableau
if (isset($nom) && $nom=="") // Test si la chaïne de texte est vide
$error_msg[]="Entrez votre nom svp!";
if (isset($prenom) && $prenom=="") // Test si la chaïne de texte est vide
$error_msg[]="Entrez votre prénom svp!"; // Ajouter à la liste
if (isset($email) && $email=="") // Test si la chaïne de texte est vide
$error_msg[]="Entrez votre email svp! S'il n'est pas valide, il sera effacé."; // Ajouter à la liste
/* Vérifier le destinataire (permet la non-acceptation d'envoi avec le choix 'Faites votre choix...') */
if(isset($_POST['destinataire'])) {$destinataire = stripslashes(htmlentities($_POST['destinataire']));} else {$destinataire="";}
if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',str_replace('&','&',$destinataire)))
$err_formulaire = false;
else
{
$error_msg[]="Choisissez un destinataire svp!"; // Ajouter à la liste
$err_formulaire = true;
}
if (isset($sujet) && $sujet=="") // Test si la chaine de texte est vide
$error_msg[]="Entrez le sujet de votre message svp!"; // Ajouter à la liste
if (isset($message) && $message=="") // Test si la chaine de texte est vide
$error_msg[]="N'oubliez pas d'écrire votre message!"; // Ajouter à la liste
// Message d'erreur du formulaire
// $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis"."
";
/*
********************************************************************************************
FIN DE LA CONFIGURATION
********************************************************************************************
*/
/* cette fonction sert à nettoyer et enregistrer un texte */
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}
// Citation magiques ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // convertion en chaîne avec " et ' aussi
$text = nl2br($text);
return $text;
};
/* Cette fonction sert à vérifier la syntaxe d'un email saisi */
function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
// si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$prenom = (isset($_POST['prenom'])) ? Rec($_POST['prenom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$sujet = (isset($_POST['sujet'])) ? Rec($_POST['sujet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
if (isset($_POST['envoi']))
{
// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vidé si erroné, soit il vaut l'email entré
if (IsEmail($email))
$err_formulaire = false;
else
$err_formulaire = true;
// affichage des éventuels erreurs à cause de champs vide
if ($error_msg) {
echo "
\n"; // Ouvre la liste
foreach ($error_msg as $err) { //Ecrit chaque erreur de la liste
echo " * ".$err."
\n";
}
echo "
"; // Ferme la liste
}
// Envoi du mail
if (mail($cible, $sujet, $message, $headers))
{
echo ''.$message_envoye.'
'."\n";
}
else
{
echo ''.$message_non_envoye.'
'."\n";
};
}
else
{
$message_formulaire_invalide="ton message";
// une des 3 variables (ou plus) est vide ...
echo ''.$message_formulaire_invalide."\n";
$err_formulaire = true;
};
}; // fin du if (!isset($_POST['envoi']))
if (($err_formulaire) || (!isset($_POST['envoi'])))
{
// ne pas modifier les lignes <option selected="choix" ... et <option value="" ...
// Ecrire les choix suivant cette syntaxe <option value="pseudo@domaine.fr">Personne</option> où pseudo@domaine.fr est une adresse mail de destination
// et Personne ce qui sera affiché dans la liste déroulante
// Possibilité de mettre autant de <option value="pseudo@domaine.fr">Personne</option> que souhaité
23 oct. 2014 à 17:28
15 mai 2013 à 18:13
J'ai résolu le problème pour les champs,en ajoutant du code ($msg) et tant que j'y étais j'en ai rajouté quelques uns (des champs) URL ci- dessous
http://colleges.ac-rouen.fr/louisphilippe/Formulairesecur/Formulairetcmeu.php
Merci pour ton travail.
15 mai 2013 à 09:24
Quel(s) champs n'avez-vous pas ?
Vers quel service de messagerie vous avez envoyé un mail (hotmail, orange, laposte, sfr, bouygues, free, ...)
12 mai 2013 à 15:19
Le formulaire fonctionne, mais dans le mail de réception, je n'ai pas tous les champs, je n'ai que le message.
Cordialement
Philippe FOURDRINIER
12 déc. 2012 à 20:31
Dans le fichier reponse.php, remplace
session_destroy;
par
unset($destinataire, $nom, $prenom, $email, $sujet, $message);
ainsi seules les variables utilisées dans le formulaire seront effacées.
Attention cependant car si suite à ton login, tu définis une/les variable(s) $destinataire, $nom, $prenom, $email, $sujet et/ou $message ; elles seront aussi effacées. Si c'est le cas personnalise le unset(); ci-dessus avec tes contraintes.
@+ et merci d'utiliser mon script.
24 nov. 2012 à 15:25
Je trouve se script très bien fait par contre je rencontre juste un petit
soucis en faite l'envoie des mails se passe très bien
sauf pour la parti résultat en faite des que j'ai la page résultat
cela me déconnecte au niveau login obliger de me reconnecter
comment faire pour rester connecter ?
26 sept. 2012 à 11:09
Je vais essayer de me pencher dessus prochainement
21 août 2012 à 19:50
Y aurait il un moyen de pouvoir le securiser un peu plus
notament rendre invisible les emails des destinataires (evite le spam)
et justement de ne pas voir la liste des destinataire si on affiche la source
Cdt Jean
Bravo pour ce script en tout cas
5 juin 2012 à 22:03
27 mars 2011 à 16:03
Ca donne l'air d'avoir un carnet d'adresse en permanence avec le formulaire.
Pour avoir cherché des heures sur le web , les formulaires de ce type sont extrêmement rares.
Super idée et encore merci pour ce travail
5 janv. 2011 à 13:55
oui le code je l'ai changé pour plus avoir les erreurs de variables non definies ... (en php5 strict) c'est pour ça que je le reposte. Bon je te poste un exemple essaie le.
tu evites le repostage ainsi
a++
<?php
/* cod57 pour phpcs 2011*/
/* change $destinataire */
if(isset($_GET['confirmation']) && $_GET['confirmation']=='ok'){
echo 'Message envoyé !
Un autre message cliquer ["? ici]
<hr />';
$_GET['confirmation']="";
exit;
}else{
echo 'Merci de nous écrire
<hr />';
}
$form='<form method="post" action="'.$_SERVER['PHP_SELF'].'">
Votre nom :,
,
----
Votre e-mail :,
,
----
Votre sujet :,
,
----
Vos commentaires :
<textarea cols="50" rows="6" name="message"></textarea>
-
</form>';
if(isset($_POST['sub']) && $_POST['sub']=="Envoyer"){
$destinataire="???@free.fr";
$header="From: ".$destinataire;
$hidden_sujet=$_POST['subject'];
unset($_POST['sub']);
unset($_POST['subject']);
$message="";
while (list($key,$val) = each($_POST)){
$message .= "$key :\n$val\n\n";
}
if(mail($destinataire,$hidden_sujet,$message,$header)){
//echo '<script>alert("E-mail envoyé")</script>';
Header('Location:'.$_SERVER['PHP_SELF'].'?confirmation=ok');exit;
}else{
echo 'Problème avec la fonction mail sur le serveur !';exit;
}
}else{
echo $form;exit;
}
?>
5 janv. 2011 à 12:17
Commme tu as pu le voir la 1ère fois les variables ne sont pas initialisées, pourquoi.
Si je les initialise au début en faisant $nom=''; :
- en cliquant sur envoyer le script efface les variables entrées par l'expéditeur et de ce fait ne veut pas m'envoyer le mail et mets que les champs sont vide
Si je les initialise au début en faisant $nom=(isset($nom)); :
- en cliqant sur envoyer le script ne peut plus voir si des variable sont vide.
Je suis débutant, si tu sais comment, peux-tu m'aider.
PS : Tu as recopier le code ; avait-tu fais une modif ?
Pour l'anti F5 j'aimerai qu'il soit dans le fichier, donc je cherche et prog.
4 janv. 2011 à 21:01
je te reposte ton script
plusieurs variables non definies
il faut utiliser isset
le script fonctionne
mais je pense que tu peux l'ameliorer
as tu pensé à une technique anti double postage (f5 et c'est reparti ...) tu devrais rediriger vers une page de remerciement
et mettre une variable de controle a false apres l'envoi ...
pense aux sessions
si tu appuies sur f5 apres l'envoi ton mail est renvoyé et renvoyé ...
bne prog
a++
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Envoyer un mail</title>
</head>
Envoyer un mail
<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
// destinataire est l'adresse mail de destination. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
// $destinataire = 'destinataire';
// copie ? (envoie une copie au visiteur)
$copie = 'oui';
// Action du formulaire (si votre page a des paramètres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = '';
// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !
Vous allez recevoir une copie de votre message dans la boîte email que vous avez écrit.";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer ultérieurement SVP.";
// Liste des messages d'erreur
$error_msg=array(); // intialisation du tableau
if (isset($nom) && $nom=="") // Test si la chaïne de texte est vide
$error_msg[]="Entrez votre nom svp!";
if (isset($prenom) && $prenom=="") // Test si la chaïne de texte est vide
$error_msg[]="Entrez votre prénom svp!"; // Ajouter à la liste
if (isset($email) && $email=="") // Test si la chaïne de texte est vide
$error_msg[]="Entrez votre email svp! S'il n'est pas valide, il sera effacé."; // Ajouter à la liste
/* Vérifier le destinataire (permet la non-acceptation d'envoi avec le choix 'Faites votre choix...') */
if(isset($_POST['destinataire'])) {$destinataire = stripslashes(htmlentities($_POST['destinataire']));} else {$destinataire="";}
if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',str_replace('&','&',$destinataire)))
$err_formulaire = false;
else
{
$error_msg[]="Choisissez un destinataire svp!"; // Ajouter à la liste
$err_formulaire = true;
}
if (isset($sujet) && $sujet=="") // Test si la chaine de texte est vide
$error_msg[]="Entrez le sujet de votre message svp!"; // Ajouter à la liste
if (isset($message) && $message=="") // Test si la chaine de texte est vide
$error_msg[]="N'oubliez pas d'écrire votre message!"; // Ajouter à la liste
// Message d'erreur du formulaire
// $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis"."
";
/*
********************************************************************************************
FIN DE LA CONFIGURATION
********************************************************************************************
*/
/* cette fonction sert à nettoyer et enregistrer un texte */
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}
// Citation magiques ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // convertion en chaîne avec " et ' aussi
$text = nl2br($text);
return $text;
};
/* Cette fonction sert à vérifier la syntaxe d'un email saisi */
function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
// si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$prenom = (isset($_POST['prenom'])) ? Rec($_POST['prenom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$sujet = (isset($_POST['sujet'])) ? Rec($_POST['sujet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
if (isset($_POST['envoi']))
{
// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vidé si erroné, soit il vaut l'email entré
if (IsEmail($email))
$err_formulaire = false;
else
$err_formulaire = true;
// affichage des éventuels erreurs à cause de champs vide
if ($error_msg) {
echo "
\n"; // Ouvre la liste
foreach ($error_msg as $err) { //Ecrit chaque erreur de la liste
echo " * ".$err."
\n";
}
echo "
"; // Ferme la liste
}
if (($nom != '') && ($email != '') && ($sujet != '') && ($message != ''))
{
// les 4 variables sont remplies, on génère puis envoie le mail
$headers = 'De: '.$nom.'_'.$prenom.' <'.$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(""",'"',$message);
$message = str_replace('
','',$message);
$message = str_replace('
','',$message);
$message = str_replace("<","<",$message);
$message = str_replace(">",">",$message);
$message = str_replace("&","&",$message);
// Envoi du mail
if (mail($cible, $sujet, $message, $headers))
{
echo ''.$message_envoye.'
'."\n";
}
else
{
echo ''.$message_non_envoye.'
'."\n";
};
}
else
{
$message_formulaire_invalide="ton message";
// une des 3 variables (ou plus) est vide ...
echo ''.$message_formulaire_invalide."\n";
$err_formulaire = true;
};
}; // fin du if (!isset($_POST['envoi']))
if (($err_formulaire) || (!isset($_POST['envoi'])))
{
// afficher le formulaire
echo '<form id="contact" method="post" action="'.$form_action.'">'."\n";
echo ' <fieldset><legend>Vos coordonnées</legend>'."\n";
echo ' <table border="0">';
echo ' ----
';
echo ', ';
echo ' <label for=\"nom\">Nom :</label>'.\"\n\";
echo ' </td>';
echo ' ';
echo ' '."\n";
echo '
'."\n";
echo '
'."\n";
echo ', ';
echo ' ';
echo ' ----
';
echo ' ';
echo ' <label for="prenom">Prénom :</label>'."\n";
echo ', ';
echo ' ';
echo ' '."\n";
echo '
'."\n";
echo '
'."\n";
echo ', ';
echo ' ';
echo ' ----
';
echo ' ';
echo ' <label for="email">Email :</label>'."\n";
echo ', ';
echo ' ';
echo ' '."\n";
echo '
'."\n";
echo ', ';
echo ' ';
echo '
';
echo ' </fieldset>'."\n";
echo '
';
// ne pas modifier les lignes <option selected="choix" ... et <option value="" ...
// Ecrire les choix suivant cette syntaxe <option value="pseudo@domaine.fr">Personne</option> où pseudo@domaine.fr est une adresse mail de destination
// et Personne ce qui sera affiché dans la liste déroulante
// Possibilité de mettre autant de <option value="pseudo@domaine.fr">Personne</option> que souhaité
?>
<label for="destinataire"> Votre message est adressé à :</label>
<select id="destinataire" name="destinataire">
<option selected="selected">Faites votre choix...</option>
<option value=""></option>
<option value="abyz@free.fr">Personne1</option>
<option value="mail2@domaine.fr">Personne2</option>
<option value="mail3@domaine.fr">Personne3</option>
<option value="mail4@domaine.fr">Personne4</option>
</select>
<?php
echo '
';
echo '
'."\n";
echo ' <fieldset><legend>Votre message :</legend>'."\n";
echo ' ';
echo ' ----
';
echo ' ';
echo ' <label for="sujet">Sujet du message :</label>'."\n";
echo ', ';
echo ' ';
echo ' '."\n";
echo '
'."\n";
echo '
'."\n";
echo ', ';
echo ' ';
echo ' ----
';
echo ' ';
echo ' <label for="message">Message :</label>'."\n";
echo ', ';
echo ' ';
echo ' <textarea id="message" name="message" tabindex="4" cols="69" rows="9">'.stripslashes($message).'</textarea>'."\n";
echo '
'."\n";
echo ', ';
echo ' ';
echo '
';
echo ' </fieldset>'."\n";
echo '
'."\n";
echo '
'."\n";
echo '</form>'."\n";
};
?>
</td>
</tr>
</table>
</html>