???? FORMULAIRE MAIL VIDE ???? - PHP - Programmation
Marsh Posté le 16-07-2012 à 18:00:51
Deja quand tu fais cela
mail($adresse,$sujet,$texte,$from);
if (mail($adresse,$sujet,$texte,$from))
tu executes 2 fois la fonction mail.
Et un petit echo '$texte' juste avant pour vérifie que ta variable est bien renseigné ca peut aider
Marsh Posté le 16-07-2012 à 18:28:53
Merci pour ta réponse.
Excuses moi je débute.
Donc si je comprends je mets donc :
<?
$adresse="monemail@monemail.fr";
$from=" $nom $prenom <$email>";
echo '$texte';
mail($adresse,$sujet,$texte,$from);
if (mail($adresse,$sujet,$texte,$from))
echo("<center><font color=green><br><br><br><h2>Formulaire envoyé ! Je vous répondrais rapidement. Merci!</h2></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a></center>" );
else
echo("<center><font color=red><br><br><br><h2>Problème à l'envoi du mail...désolé nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href=\"mailto:$adresse\">classiquement</a>" );
?>
Marsh Posté le 17-07-2012 à 10:14:13
Oui mais en teste, et tu regardes si le texte de ton mail s'affiche
Et je repete quand tu fais :
mail($adresse,$sujet,$texte,$from);
if (mail($adresse,$sujet,$texte,$from))
Tu executes 2 fois ta fonction mail
Marsh Posté le 17-07-2012 à 10:46:38
J'ai fait ce test mais mon e-mail est toujours vide....
J'ai aussi essayé d'enlever "mail($adresse,$sujet,$texte,$from);" ( je sais, je suis un peu longue à la détente ! ), rien non plus.
Voilà le détail de mon e-mail vide :
Return-Path: <blanche@web.planet-work.com>
Received: from mwinf8502 (mwinf8502)
by mwinb7404 (SMTP Server) with LMTP; Tue, 17 Jul 2012 10:45:09 +0200
X-Sieve: Server Sieve 2.2
Received: from castor.planet-work.net ([79.99.164.41])
by mwinf8502 with ME
id bLl91j00Q0tuSSP01Ll96A; Tue, 17 Jul 2012 10:45:09 +0200
X-bcc: blanche-casau@laposte.net
X-ME-bounce-domain: laposte.net
X-ME-engine: default
X-me-spamrating: 58.00
X-me-spamcause: (90)(0000)gggruggvucftvghtrhhoucdtuddrfeegkedrjeekgdefhecutefuodetggcurfhrohhfihhlvgemuceonhhonhgvqeenuceurghilhhouhhtmecugedttdenucfgmhhpthihuchsuhgsjhgvtghtucdluddtmdengfhmphhthicusghougihucdlkedtmd
X-me-spamlevel: not-spam
X-ME-Entity: lpn
Received: from [192.168.3.26] (helo=sulley.pw)
by castor.planet-work.net with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)
(Exim 4.72)
(envelope-from <blanche@web.planet-work.com> )
id 1Sr3P3-0002Yx-7g
for blanche-casau@laposte.net; Tue, 17 Jul 2012 10:45:09 +0200
Received: from [127.0.0.1] (helo=web.planet-work.com)
by sulley.pw with smtp (Exim 4.72)
(envelope-from <blanche@web.planet-work.com> )
id 1Sr3P3-0000AF-9t
for blanche-casau@laposte.net; Tue, 17 Jul 2012 10:45:09 +0200
Received: (nullmailer pid 633 invoked by uid 6676);
Tue, 17 Jul 2012 08:45:09 -0000
To: blanche-casau@laposte.net
Subject:
X-PHP-Originating-Script: 6676:traitement.php
<>
X-Complaints-To: abuse@planet-work.net
X-Abuse-Info: Please be sure to forward a copy of ALL headers
X-Abuse-Info: Otherwise we will be unable to process your complaint properly.
X-Domain: www.antiquites.net
Date: Tue, 17 Jul 2012 10:45:09 +0200
Message-Id: <1342514709.278590.630.nullmailer@web.planet-work.com>
From: <blanche@web.planet-work.com>
Merci pour ton aide !
Marsh Posté le 17-07-2012 à 10:55:44
Le echo $texte; te donne quoi ?
Marsh Posté le 17-07-2012 à 11:28:45
Avec "echo $texte;" je reçois encore et toujours un e-mail vide ...
J'ai pensé à autre chose, peut-être cela vient-il de mon hébergeur :
-que faut-il comme paramètres Php ?
-ou est-ce au niveau de la réception des mails
( quand je reçois l'e-mail vide, l'expéditeur vient de mon hébergeur : blanche@web.planet-work.com )
puisqu'il y a traitement Php c'est normal,
mais faut-il que je fasse une modification au niveau mon hébergeur ??
Marsh Posté le 17-07-2012 à 11:53:58
Non mais si tu fais un echo $texte et que tu ne vois rien a l'écran c'est que ta variable n'est pas rempli
Marsh Posté le 17-07-2012 à 12:02:36
essaies de te faire une page avec juste ca :
// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini |
Marsh Posté le 17-07-2012 à 12:20:11
Rebonjour,
en fait je viens d'essayer avec un nouveau formulaire et ça marche !!!!
Celui-là était simplement un peu dépassé.
Je te mets ci-dessous mon nouveau formulaire.
Merci pour tout et très bonne journée !
HTML :
<form id="contact" method="post" action="traitement.php">
<fieldset><legend>Vos coordonnées</legend>
<p><label for="nom">Nom :</label><input type="text" id="nom" name="nom" tabindex="1" /></p>
<p><label for="email">Email :</label><input type="text" id="email" name="email" tabindex="2" /></p>
</fieldset>
<fieldset><legend>Votre message :</legend>
<p><label for="objet">Objet :</label><input type="text" id="objet" name="objet" tabindex="3" /></p>
<p><label for="message">Message :</label><textarea id="message" name="message" tabindex="4" cols="30" rows="8"></textarea></p>
</fieldset>
<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>
</form>
PHP :
<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'garnierloic@free.fr';
// copie ? (envoie une copie au visiteur)
$copie = 'non';
// 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 !";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
// Message d'erreur du formulaire
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
/*
********************************************************************************************
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;');
}
// magic quotes ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};
/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
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']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$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 vide si erroné, soit il vaut l'email entré
$err_formulaire = (IsEmail($email)) ? false : true;
if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
{
// les 4 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($cible, $objet, $message, $headers))
{
echo '<p>'.$message_envoye.'</p>'."\n";
}
else
{
echo '<p>'.$message_non_envoye.'</p>'."\n";
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.' <a href="contact.php">Retour au formulaire</a></p>'."\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 ' <p>'."\n";
echo ' <label for="nom">Nom :</label>'."\n";
echo ' <input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" />'."\n";
echo ' </p>'."\n";
echo ' <p>'."\n";
echo ' <label for="email">Email :</label>'."\n";
echo ' <input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" />'."\n";
echo ' </p>'."\n";
echo ' </fieldset>'."\n";
echo ' <fieldset><legend>Votre message :</legend>'."\n";
echo ' <p>'."\n";
echo ' <label for="objet">Objet :</label>'."\n";
echo ' <input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" tabindex="3" />'."\n";
echo ' </p>'."\n";
echo ' <p>'."\n";
echo ' <label for="message">Message :</label>'."\n";
echo ' <textarea id="message" name="message" tabindex="4" cols="30" rows="8">'.stripslashes($message).'</textarea>'."\n";
echo ' </p>'."\n";
echo ' </fieldset>'."\n";
echo ' <div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>'."\n";
echo '</form>'."\n";
};
?>
Marsh Posté le 20-07-2012 à 12:22:49
<?
if($_POST['nom']&&$_POST['prenom']&&$_POST['text']){
$adresse="monemail@monemail.fr";
$from=" $nom $prenom <$email>";
if (mail($adresse,$sujet,$texte,$from)){
echo("<center><font color=green><br><br><br><h2>Formulaire envoyé ! Je vous répondrais rapidement. Merci!</h2></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a></center>" );}
else
{
echo "<center><font color=red><br><br><br><h2>Problème à l'envoi du mail...désolé nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href=\"mailto:$adresse\">classiquement</a>" ;}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Mon formulaire</title>
<script type="text/javascript" language="Javascript" >
<!--
function verification()
{
if(document.formulaire.nom.value == "" ) {
alert("Veuillez entrer votre nom svp" );
document.formulaire.nom.focus();
return false;
}
else
if(document.formulaire.prenom.value == "" ) {
alert("Veuillez entrer votre prenom svp" );
document.formulaire.prenom.focus();
return false;
}
else
if(document.formulaire.email.value == "" ) {
alert("Veuillez entrer votre adresse electronique svp" );
document.formulaire.email.focus();
return false;
}
else
if(document.formulaire.email.value.indexOf('@') == -1) {
alert("Ce n'est pas une adresse electronique, verifiez la svp" );
document.formulaire.email.focus();
return false;
}
else
sujetoption = -1
for (i=0; i<formulaire.sujet.length; i++)
{
if(document.formulaire.sujet[i].checked){
sujetoption = i
}
}
if (sujetoption == -1) {
alert("Veuillez choisir le sujet de votre message svp" );
return false;
}
else
if(document.formulaire.texte.value == "" ) {
alert("Veuillez entrer le texte de votre message svp" );
document.formulaire.texte.focus();
return false;
}
return true
}
//-->
</script>
</head>
<body>
<form name="formulaire" action="traitement.php" method="post" onSubmit="return verification()">
<table>
<th>Formulaire de contact</th>
<tr><td>Votre nom : </td><td><input name='nom' type='text' size='50'></td></tr>
<tr><td>Votre prénom : </td><td><input name='prenom' type='text' size='50'></td></tr>
<tr><td>Votre email</td><td><input name='email' type='text' size='50'></td></tr>
<tr><td>Le motif de votre message</td><td><input name='sujet' type='radio' value='renseignement'>Renseignement<br>
<input name='sujet' type='radio' value='probleme technique'> Probleme technique<br>
<input name='sujet' type='radio' value='partenariat'>Partenariat</td></tr>
<tr><td>Votre message</td><td><textarea name='texte' cols='50' rows='20'></textarea></td></tr>
<tr><td><input name='annuler' type='reset' value='Annuler'></td><td>
<input name='soumettre' type='submit' value='Envoyer'></td></tr>
</table>
</form>
</body>
</html>
Marsh Posté le 16-07-2012 à 17:44:42
Bonjour,
je viens de faire un formulaire.
Tout fonctionne bien ( ! ) mais quand je reçois l'e-mail d'un visiteur il est vide ???
Cela vient-il de mon hébergeur ?? ( configuration Php... )
Voici le code PHP et HTML ci-dessous.
PHP :
<?
$adresse="monemail@monemail.fr";
$from=" $nom $prenom <$email>";
mail($adresse,$sujet,$texte,$from);
if (mail($adresse,$sujet,$texte,$from))
echo("<center><font color=green><br><br><br><h2>Formulaire envoyé ! Je vous répondrais rapidement. Merci!</h2></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a></center>" );
else
echo("<center><font color=red><br><br><br><h2>Problème à l'envoi du mail...désolé nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href=\"mailto:$adresse\">classiquement</a>" );
?>
HTML :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Mon formulaire</title>
<script type="text/javascript" language="Javascript" >
<!--
function verification()
{
if(document.formulaire.nom.value == "" ) {
alert("Veuillez entrer votre nom svp" );
document.formulaire.nom.focus();
return false;
}
else
if(document.formulaire.prenom.value == "" ) {
alert("Veuillez entrer votre prenom svp" );
document.formulaire.prenom.focus();
return false;
}
else
if(document.formulaire.email.value == "" ) {
alert("Veuillez entrer votre adresse electronique svp" );
document.formulaire.email.focus();
return false;
}
else
if(document.formulaire.email.value.indexOf('@') == -1) {
alert("Ce n'est pas une adresse electronique, verifiez la svp" );
document.formulaire.email.focus();
return false;
}
else
sujetoption = -1
for (i=0; i<formulaire.sujet.length; i++)
{
if(document.formulaire.sujet[i].checked){
sujetoption = i
}
}
if (sujetoption == -1) {
alert("Veuillez choisir le sujet de votre message svp" );
return false;
}
else
if(document.formulaire.texte.value == "" ) {
alert("Veuillez entrer le texte de votre message svp" );
document.formulaire.texte.focus();
return false;
}
return true
}
//-->
</script>
</head>
<body>
<form name="formulaire" action="traitement.php" method="post" onSubmit="return verification()">
<table>
<th>Formulaire de contact</th>
<tr><td>Votre nom : </td><td><input name='nom' type='text' size='50'></td></tr>
<tr><td>Votre prénom : </td><td><input name='prenom' type='text' size='50'></td></tr>
<tr><td>Votre email</td><td><input name='email' type='text' size='50'></td></tr>
<tr><td>Le motif de votre message</td><td><input name='sujet' type='radio' value='renseignement'>Renseignement<br>
<input name='sujet' type='radio' value='probleme technique'> Probleme technique<br>
<input name='sujet' type='radio' value='partenariat'>Partenariat</td></tr>
<tr><td>Votre message</td><td><textarea name='texte' cols='50' rows='20'></textarea></td></tr>
<tr><td><input name='annuler' type='reset' value='Annuler'></td><td>
<input name='soumettre' type='submit' value='Envoyer'></td></tr>
</table>
</form>
</body>
</html>
MERCI D'AVANCE POUR VOS RÉPONSES !!
<config>Windows 7 / Firefox 13.0.1</config>