Help envoi d'un formulaire en PHP

Fermé
Seraphin49 - 13 oct. 2009 à 03:59
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 14 oct. 2009 à 02:08
Bonjour,
Je bloque depuis 2 jours sur l'envoi d'un formulaire. J'essaye de faire ça en PHP mais je ne suis pas encore familier avec ce langage.
J'ai crée une page index.php contenant mon code html et php en j'ai inséré le php juste après la balise body.
Voilà ce que ça donne :
<?php
if(isset($_POST["Valider"]))
{
$nom = stripslashes($_POST["Nom"]);
$prenom = stripslashes($_POST["Prénom"]);
$societe = stripslashes($_POST["Société"]);
$adresse = stripslashes($_POST["Adresse"]);
$ville_cp = stripslashes($_POST["Ville et Code postal"]);
$telephone = stripslashes($_POST["Téléphone"]);
$email = stripslashes($_POST["Email"]);
$message = stripslashes($_POST["message"]);

if(empty($nom)){
echo 'Veuillez indiquer votre nom. <br/>';
}
elseif(empty($prenom)){
echo 'Veuillez indiquer votre prénom.<br/>';
}
elseif(empty($societe)){
echo 'Veuillez indiquer le nom de votre société.<br/>';
}
elseif(empty($adresse)){
echo 'Veuillez indiquer l adresse de votre société.<br/>';
}
elseif(empty($ville_cp)){
echo 'Veuillez indiquer la ville et le code postal de votre société.<br/>';
}
elseif(empty($email)){
echo 'Veuillez indiquer votre email.<br/>';
}
elseif(empty($message)){
echo 'Veuillez indiquer votre message.<br/>';
}
else
{
$mon_email = "mon@email.fr";
$mon_pseudo = "mon pseudo";
$mon_url = "mon url";
$son_email = ''.$email.'';

$entete = "From: " . $mon_pseudo . " <" . $son_email . ">\n";
$entete .= "MIME-Version: 1.0";
if (@mail($mon_email,$nom,$prenom,$societe,$adresse,$ville_cp,$email,$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";
}
}
}
?>

Et voici maintenant le code de mon formulaire (sur la même page) :
<div class="AccordionPanel">
<div class="style1"><a href="#">demande de devis</a></div>
<div class="AccordionPanelContent">
<form id="form" name="form" method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<div class="gauche"><fieldset>
<p>
<label><span class="style2">*Nom :</span></label>
<input name="nom" type="text" class="text" id="nom" />
</p>
<p>
<label><span class="style2">*Prénom :</span></label>
<input name="prenom" type="text" class="text" id="prenom" />
</p>
<p>
<label><span class="style2">*Société :</span></label>
<input name="societe" type="text" class="text" id="societe" />
</p>
<p>
<label><span class="style2">*Adresse :</span></label>
<input name="adresse" type="text" class="text" id="adresse" />
</p>
<p>
<label><span class="style2">*Ville :</span></label><br />
<span class="style2">(Ville et code postal)</span>
<input name="ville_cp" type="text" class="text" id="ville_cp" />
</p>
<p>
<label><span class="style2">Téléphone :</span></label>
<input name="telephone" type="text" class="text" id="telephone" />
</p>
<p>
<label><span class="style2">*Email :</span></label>
<input name="email" type="text" class="text" id="email" />
</p>
</fieldset></div><!-- .gauche -->

<div class="droite"><fieldset>
<p>
<label><span class="style2">Type de prestation :</span></label><br />
<input name="webdesign" type="checkbox" id="webdesign" />
<label><span class="style2">webdesign</span></label>
<br />
<input name="webmarketing" type="checkbox" id="webmarketing" />
<label><span class="style2">webmarketing</span></label>
<br />
<input name="communication" type="checkbox" id="communication" />
<label><span class="style2">communication</span></label>
</p>
<p>
<label><span class="style2">*Votre message :</span></label>
<br />
<textarea name="message" cols="30" rows="5" class="text" id="message"></textarea>
</p>
</fieldset>
</div><!-- .droite -->

<p class="submit">
<input type="submit" value="Valider" />
</p>
</form>
</div>
</div>

Je ne reçois rien et la vérification des champs ne semble pas se faire non plus. Qu'est-ce qui ne marche pas ?
D'avance merci...
@+

12 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 oct. 2009 à 04:08
tu testes if(isset($_POST[Valider]))

hors ton bouton submit n'a pas de name, donc normal que tu ne passes pas dans ton if
<input type="submit" value="Valider" />

il faut
<input type="submit" name="Valider" value="Valider" />


ensuite les parametres de la fonction mail sont : mail(destinataire,sujet,message,entete)

donc tu dois mettre dans une variable $message les $nom $societe etc....

et ensuite dans le From il faut que ce soit TON EMAIL
0
Ok Allan, je vais tester ça. Merci pour ta réponse
0
Ca ne fonctionne toujours pas.
Voici mon code php maintenant :
<?php
if(isset($_POST["Valider"]))
{
$nom = stripslashes($_POST["nom"]);
$prenom = stripslashes($_POST["prenom"]);
$societe = stripslashes($_POST["societe"]);
$adresse = stripslashes($_POST["adresse"]);
$ville_cp = stripslashes($_POST["ville_cp"]);
$telephone = stripslashes($_POST["telephone"]);
$email = stripslashes($_POST["email"]);
$lemessage = stripslashes($_POST["lemessage"]);

if(empty($nom)){
echo 'Veuillez indiquer votre nom. <br/>';
}
elseif(empty($prenom)){
echo 'Veuillez indiquer votre prénom.<br/>';
}
elseif(empty($societe)){
echo 'Veuillez indiquer le nom de votre société.<br/>';
}
elseif(empty($adresse)){
echo 'Veuillez indiquer l adresse de votre société.<br/>';
}
elseif(empty($ville_cp)){
echo 'Veuillez indiquer la ville et le code postal de votre société.<br/>';
}
elseif(empty($email)){
echo 'Veuillez indiquer votre email.<br/>';
}
elseif(empty($lemessage)){
echo 'Veuillez indiquer votre message.<br/>';
}
else
{
$mon_email = "mon@email.fr";
$sujet="Demande de devis";
$message="$nom,$prenom,$societe,$adresse,$ville_cp,$telephone,$email,$lemessage";
$mon_url = "http://www.url.fr";
$entete ="MIME-Version: 1.0\r\n";
$entete = "Content-type: text/plain; charset=iso-8859-1\r\n";
$entete ="From: mon@email.fr\r\n";
if (@mail($mon_email,$sujet,$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";
}
}
}
?>

J'ai en permanence le message : Un problème s'est produit lors de l'envoi du message.

Merci de bien vouloir m'aider...
@+
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 oct. 2009 à 14:52
Pour concatener on ne fais pas comme ca en php
$message="$nom,$prenom,$societe,$adresse,$ville_cp,$telephone,$email,$lemessage";

il faut par exemple:

$message="Mr / Mme: ".$nom."  ".$prenom."\n"; // pour le retour a la ligne dans le mail on met \n 
$message.="Societe:".$societe."\n";
$message.="Adresse: ".$adresse."\n";
$message.=$ville_cp."\n";
$message.="Telephone: ".$telephone."\n";
$message.="Email: '.$email."\n\n";
$message.=$lemessage";
//  .= ca concatene chaque ligne
0
Merci de ton Alain (et non Allan, désolé) mais ça ne fonctionne toujours pas. Je désespère !
Voici mon code actuellement :
<?php
if(isset($_POST["Valider"]))
{
$nom = stripslashes($_POST["nom"]);
$prenom = stripslashes($_POST["prenom"]);
$societe = stripslashes($_POST["societe"]);
$adresse = stripslashes($_POST["adresse"]);
$ville_cp = stripslashes($_POST["ville_cp"]);
$telephone = stripslashes($_POST["telephone"]);
$email = stripslashes($_POST["email"]);
$lemessage = stripslashes($_POST["lemessage"]);

if(empty($nom)){
echo 'Veuillez indiquer votre nom. <br/>';
}
elseif(empty($prenom)){
echo 'Veuillez indiquer votre prénom.<br/>';
}
elseif(empty($societe)){
echo 'Veuillez indiquer le nom de votre société.<br/>';
}
elseif(empty($adresse)){
echo 'Veuillez indiquer l adresse de votre société.<br/>';
}
elseif(empty($ville_cp)){
echo 'Veuillez indiquer la ville et le code postal de votre société.<br/>';
}
elseif(empty($email)){
echo 'Veuillez indiquer votre email.<br/>';
}
elseif(empty($lemessage)){
echo 'Veuillez indiquer votre message.<br/>';
}
else
{
$mon_email = "mon@email.fr";
$sujet="Demande de devis";
$message="Mr / Mme: ".$nom." ".$prenom."\n";
$message.="Societe:".$societe."\n";
$message.="Adresse: ".$adresse."\n";
$message.=$ville_cp."\n";
$message.="Telephone: ".$telephone."\n";
$message.="Email: ".$email."\n\n";
$message.="$lemessage";
$mon_url = "http://www.url.fr";
$entete ="MIME-Version: 1.0\r\n";
$entete = "Content-type: text/plain; charset=iso-8859-1\r\n";
$entete ="From:mon@email.fr\r\n";
if (@mail($mon_email,$sujet,$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";
}
}
}
?>

Ca me renvoie toujours la phrase : Un problème s'est produit lors de l'envoi du message.
0

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

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 oct. 2009 à 15:23
1- est ce que la partie du if fonctionne ?

2- $entete ="MIME-Version: 1.0\r\n";
$entete = "Content-type: text/plain; charset=iso-8859-1\r\n";
$entete ="From:mon@email.fr\r\n";


la aussi il faut concatener par .= et changer l'ordre

$entete ="From:mon@email.fr\r\n";
$entete.= "Content-type: text/plain; charset=iso-8859-1\r\n";
$entete .="MIME-Version: 1.0\r\n";


et je suppose que tu remplce mon@email.fr par ton adresse valide
0
la partie if fonctionne
J'ai remplacé les $entete par les dernières que tu m'as donné et oui, bien sûr, mon@email.fr est remplacé par mon véritable email.
donc ça donne ça :

<?php
if(isset($_POST["Valider"]))
{
$nom = stripslashes($_POST["nom"]);
$prenom = stripslashes($_POST["prenom"]);
$societe = stripslashes($_POST["societe"]);
$adresse = stripslashes($_POST["adresse"]);
$ville_cp = stripslashes($_POST["ville_cp"]);
$telephone = stripslashes($_POST["telephone"]);
$email = stripslashes($_POST["email"]);
$lemessage = stripslashes($_POST["lemessage"]);

if(empty($nom)){
echo 'Veuillez indiquer votre nom. <br/>';
}
elseif(empty($prenom)){
echo 'Veuillez indiquer votre prénom.<br/>';
}
elseif(empty($societe)){
echo 'Veuillez indiquer le nom de votre société.<br/>';
}
elseif(empty($adresse)){
echo 'Veuillez indiquer l adresse de votre société.<br/>';
}
elseif(empty($ville_cp)){
echo 'Veuillez indiquer la ville et le code postal de votre société.<br/>';
}
elseif(empty($email)){
echo 'Veuillez indiquer votre email.<br/>';
}
elseif(empty($lemessage)){
echo 'Veuillez indiquer votre message.<br/>';
}
else
{
$mon_email = "mon@email.fr";
$sujet="Demande de devis";
$message="Mr / Mme: ".$nom." ".$prenom."\n";
$message.="Societe:".$societe."\n";
$message.="Adresse: ".$adresse."\n";
$message.=$ville_cp."\n";
$message.="Telephone: ".$telephone."\n";
$message.="Email: ".$email."\n\n";
$message.="$lemessage";
$mon_url = "http://www.2wcom.fr";
$entete ="From:mon@email.fr\r\n";
$entete.= "Content-type: text/plain; charset=iso-8859-1\r\n";
$entete .="MIME-Version: 1.0\r\n";
if (@mail($mon_email,$sujet,$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";
}
}
}
?>
J'ai toujours ce p.... de message !
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 oct. 2009 à 18:41
si tu enleves le @

if (@mail($mon_email,$sujet,$message,$entete))

as tu un message d'erreur php ?
0
Ca marrrrrrrrrrche !!
Tain ! j'y croyais plus. Un grand merci à toi !
Mais j'ai quand même une dernière question :
Je reçois toutes les info par mail, ça c'est nickel mais les accents sont remplacés de cette manière : é
J'imagine qu'il existe un moyen mais j'ignore lequel.
En tout cas, encore une fois, un grand merci à toi Alain !
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
14 oct. 2009 à 01:05
et si tu remplace par

'Content-type: text/plain; charset=UTF-8' 
0
C'est pareil. Que ce soit en Content-type: text/plain; charset=iso-8859-1 ou en Content-type: text/plain; charset=UTF-8 j'obtiens toujours ça -> é à la place de n'importe quel accent.
0
gadoro Messages postés 17 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 14 octobre 2009
14 oct. 2009 à 01:41
Salut

dans cette section de ton code
if(isset($_POST["Valider"]))
{
$nom = stripslashes($_POST["nom"]);
$prenom = stripslashes($_POST["prenom"]);
$societe = stripslashes($_POST["societe"]);
$adresse = stripslashes($_POST["adresse"]);
$ville_cp = stripslashes($_POST["ville_cp"]);
$telephone = stripslashes($_POST["telephone"]);
$email = stripslashes($_POST["email"]);
$lemessage = stripslashes($_POST["lemessage"]

rajoute
$lemessage =htmlspecialchars($formCommentaire, ENT_QUOTES);

je pense que ça va fonctionner
0
J'aimerais te dire que ça a marché mais non. Au contraire, ça me supprime le message dans le corps du mail et les accents sont toujours remplacés de la même façon.
j'ai aussi essayé en iso-8859-15....pas mieux.
le htmlentities......pas mieux non plus (ou alors je ne sais pas m'en servir)

c'est quoi le $formCommentaire dans ton code ?
0
gadoro Messages postés 17 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 14 octobre 2009
14 oct. 2009 à 02:06
oups excuse moi, c'est un problème que j'ai règlé car j'avais le même problème que toi. J'ai fait un copier coller de mon code et j'ai oublié de changer le $formCommentaire pour $lemessage.
donc:
$lemessage =htmlspecialchars($lemessage , ENT_QUOTES);
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
14 oct. 2009 à 02:08
Dans ta page de formulaire tu es en Charteset UFT8

alors essayes en passant par la fonction utf8_decode

et laisses chartset iso.... dsmns $entete
0