8797 sujets

Développement web côté serveur, CMS

Bonsoir,

Je suis un grand débutant en PHP et me retrouve confronté à un problème qui me laisse perplexe...

J'ai récupéré un bout de code sur le net, l'ai configuré correctement (du moins je crois) en adaptant les variables à mon code et ai inclus le tout dans mon formulaire. Et là, c'est le drame.

Lorsque je clique sur Envoyer !, j'obtiens une erreur bien longue et bien moche :


'; } else if(empty($societe)){ echo 'Le societe est vide.
'; } else if(empty($email)){ echo 'Le email est vide.
'; } else if(empty($telephone)){ echo 'Le telephone est vide.
'; } else if(empty($message)){ echo 'Le message est vide.
'; } else { $mon_email = "jeremiiogna@gmail.com"; $mon_pseudo = "Jérémi IOGNA"; $mon_url = "http://www.jironimo.com/"; $son_email = ''.$email.''; // Envoie du mail $entete = "From: " . $mon_pseudo . " <" . $son_email . ">\n"; $entete .= "MIME-Version: 1.0"; if (@mail($mon_email,$nom,$societe,$email,$telephone,$message,$entete)) { echo "Votre message a été envoyé.
\n"; echo "Retour\n"; } else { echo "Un problème s'est produit lors de l'envoi du message.\n"; echo "Réessayez\n"; } //on ferme le else } //on ferme if(isset($_POST["Valider"])) } ?>


Mon objectif : recevoir un mail récapitulant les informations entrées dans les champs prévus à cet effet.

Je précise que, bien que grand novice en PHP, je me débrouille en HTML/CSS. J'ai toujours trouvé le bon script pour combler mes quelques besoins en PHP... Mais là, on dirait qu'il va falloir mettre les mains dans le cambouis !

Voici le code du formulaire :


<div id="contact_information">
<form name='formulaire' action='traitement.php' method='post'>
<label>Nom (requis) :</label>
<input class="champs" type="text" name="nom"/>
<br/>
<label>Société (requis) :</label>
<input class="champs" type="text" name="societe"/>
<br/>
<label>E-mail (requis) :</label>
<input class="champs" type="text" name="email"/>
<br/>
<label>Téléphone :</label>
<input class="champs" type="text" name="telephone"/>
</div>

<div id="contact_message">
<label>Message (requis) :</label>
<textarea class="champs_message" type="text" name="messsage" cols=40 rows=6/></textarea>
<input name=valider type=submit value="Envoyer !">
</form>
</div>


Et celui du script :


<?php
if(isset($_POST["Valider"]))
{
$nom = stripslashes($_POST["nom"]);
$societe = stripslashes($_POST["societe"]);
$email = stripslashes($_POST["email"]);
$telephone = stripslashes($_POST["telephone"]);
$message = stripslashes($_POST["message"]);
 
if(empty($nom)){
echo 'Le champ nom est vide.<br/>';
}
else if(empty($societe)){
echo 'Le societe est vide.<br/>';
}
else if(empty($email)){
echo 'Le email est vide.<br/>';
}
else if(empty($telephone)){
echo 'Le telephone est vide.<br/>';
}
else if(empty($message)){
echo 'Le message est vide.<br/>';
} else
{
$mon_email = "jeremiiogna@gmail.com";
$mon_pseudo = "Jérémi IOGNA";
$mon_url = "http://www.jironimo.com/";
$son_email = ''.$email.'';
 
// Envoie du mail
$entete = "From: " . $mon_pseudo . " <" . $son_email . ">\n";
$entete .= "MIME-Version: 1.0";
if (@mail($mon_email,$nom,$societe,$email,$telephone,$message,$entete))
{ 
echo "Votre message a été envoyé.<br />\n"; 
echo "<a href=\"" . $mon_url . "\">Retour</a>\n"; 
}
else 
{ 
echo "Un problème s'est produit lors de l'envoi du message.\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez</a>\n";
}
//on ferme le else
}
//on ferme if(isset($_POST["Valider"]))
}
?>


Merci d'avance !
Modifié par Forgaria (28 Oct 2008 - 19:12)
Salut
Voici ton code avec kkes modifs

<?php

if(isset($_POST))  // On test si des variables ont été envoyées par la méthode POST 
{

$nom = stripslashes($_POST["nom"]);
$societe = stripslashes($_POST["societe"]);
$email = stripslashes($_POST["email"]);
$telephone = stripslashes($_POST["telephone"]);
$message = stripslashes($_POST["message"]);

 

if(empty($nom))
{
echo 'Le champ nom est vide.<br/>';
}
else if(empty($societe))
{
echo 'La societe est vide.<br/>';
}
else if(empty($email))
{
echo "L'email est vide.<br/>";
}
else if(empty($telephone))
{
echo "Le telephone est vide.<br/>";
}
else if(empty($message))
{
echo 'Le message est vide.<br/>';
}
else
{
$mon_email = "jeremiiogna@gmail.com";
$mon_pseudo = "Jérémi IOGNA";
$mon_url = "http://www.jironimo.com/";
$son_email = ''.$email.'';

 

// Envoie du mail

$entete = "From: " . $mon_pseudo . " <" . $son_email . ">\n";

$entete .= "MIME-Version: 1.0";

if (mail($email,"Sujet",$message,$entete)) //mail() , pas @mail()
{ 
echo "Votre message a été envoyé.<br />\n"; 
echo "<a href=\"" . $mon_url . "\">Retour</a>\n"; 

}

else 

{ 

echo "Un problème s'est produit lors de l'envoi du message.\n";

echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez</a>\n";

}

//on ferme le else

}

//on ferme if(isset($_POST))

}

?>


cf http://www.vulgarisation-informatique.com/mail.php
Salut,

je n'ai pas regardé tout le code mais le test
if(isset($_POST))
sera toujours vérifié. Smiley cligne

A remplacer par
if(!empty($_POST))
ou par
if($_SERVER['REQUEST_METHOD']=='POST')

A+
Salut ,

ton navigateur t'affiche tout ton code php on seulement une partie?

Sinon, effectivement je pense que ce test ne sert a rien.

Heyoan a écrit :
if(isset($_POST))
sera toujours vérifié.


ton test d'origine
if(isset($_POST['Valider']))
est correct sauf que le name de ton input submit = valider avec un v minuscule... donc le test échoue si tu ne change pas ça.. attention à la casse.

Le reste me semble bon sauf la fonction
@mail($mon_email,$nom,$societe,$email,$telephone,$message,$entete)

il faut effectivement que tu utilises la fonction mail();
Mais après il va falloir que tu regarde la doc de php pour savoir comment utiliser cette fonction. Car il y a plusieurs possibilités d'utilisation, l'envoi du mail se fait en texte brut , en html? etc..

regarde ce petit tuto sur l'envoi de mail.
http://wiki.mediabox.fr/tutoriaux/php/lenvoi-mail-php
Modifié par lymanss (30 Oct 2008 - 13:47)
Bonsoir,

J'ai fais comme il m'a été indiqué à savoir :


<?php
$nom=$HTTP_POST_VARS['nom'];
$société=$HTTP_POST_VARS['société'];
$email=$HTTP_POST_VARS['email'];
$téléphone=$HTTP_POST_VARS['téléphone'];
$message=$HTTP_POST_VARS['message'];

/////voici la version MIME
$headers = "MIME-Version: 1.0\r\n";

//////on détermine le mail en format text
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";

////on détermine l'expéditeur et l'adresse de réponse
$headers .= "From: $nom <$email>\r\nReply-to : $nom <$email>\nX-Mailer [langue]HP";

////on définit le sujet, le destinataire et le corps du message
$subject="$société";
$destinataire="xxx@xxx.com";

////on formate les données du mail pour suivre la norme RFC 2045
$body = chunk_split(base64_encode($message)) ;

if (mail($destinataire,$subject,$body,$headers)) {
echo "Votre mail a &eacute;t&eacute; envoy&eacute;";
} else {
echo "Une erreur s'est produite";
}
?>


J'arrive sur une nouvelle fenêtre m'indiquant que le message a bien été envoyé. Il n'en est rien...

Je désespère de comprendre le PHP un jour !

Smiley decu

Merci d'avance !

PS : Pour mémoire, le site : http://www.leadbay.fr/