Formulaire PHP mail pour correction

macpo

Membre confirmé
29 Octobre 2009
11
3
Bonjour à tous les pros qui jonglent avec le CODE.
Et oui je m'adresse à vous car j'ai utilisé pour un site un petit formulaire de contact en PHP mais malheureusement il y a la partie "Structure" qui n'envoie pas de message.

Pourriez vous me dire si vous voyez une erreur dans le code PHP ou le code de mon site?:rateau:

POUR LE PHP:

<?
// code recupere les infos du formulaire Dream :

function parse($name,$valeur)
{
echo "&$name=$valeur";
}

// code convertit les variables du formulaire Dream en champs texte

// envoie le tout à l'adresse mail du destinataire :

mail("monsieurtruc@mail.com",

// objet du mail :

"Formulaire",

// reprise des variables du formulaire

"Nom/Prenom :\r\n $nom
\r\n\r\n
Structure:\r\n $structure
\r\n\r\n
Adresse:\r\n $adresse
\r\n\r\n
Tel:\r\n $tel
\r\n\r\n
E-mail:\r\n $email
\r\n\r\n
Message :\r\n $message ",


"From: $mail");

?>


ET POUR LE CODE DU SITE:

<form action="mail.php" method="post" name="renseignements" id="renseignements">
<div align="center" id="conteneur_formulaire"><br />
<fieldset>
<div align="right"><span class="Style13"><strong><br />
Nom/Prénom</strong></span>
<input name="nom" type="text" class="aplat_gris" id="nom" />
</label>

</p>
</div>
<p align="right">
<label><span class="Style13"><strong>Structure</strong></span></label>
<span class="Style17">
<label>
<input name="structure" type="text" class="aplat_gris" id="structure" />
</label>
</span></p>
<p align="right">
<label><span class="Style13"><strong>Adresse</strong></span></label>
<span class="Style17">
<label>
<input name="adresse" type="text" class="aplat_gris" id="adresse" />
</label>
</span> </p>
<p align="right">
<label><span class="Style13"><strong>Tel</strong></span></label>
<span class="Style17">
<label>
<input name="tel" type="text" class="aplat_gris" id="tel" />
</label>
</span> </p>
<p align="right">
<label><span class="Style13"><strong>E-mail</strong></span></label>
<span class="Style17">
<label>
<input name="email" type="text" class="aplat_gris" id="email" />
</label>
</span> </p>
<p align="right" class="Style13"><strong>Message</strong>
<textarea name="message" cols="32" class="aplat_gris" id="message" height="100"></textarea>
</p>
<p align="right">
<label></label>
</p>
<p align="right">
<label>
<input name="button" type="submit" class="aplat_gris" id="button" value="Envoyer" />
</label>
<input name="button2" type="reset" class="aplat_gris" id="button2" value="Effacer" />
</p>
</fieldset><br />


Et oui je débute et me dépatouille comme je peux avec des codes récupérés à droite et à gauche.
Alors si vous trouvez merci beaucoup.:zen:
 

didgar

Membre actif
25 Juin 2007
437
10
Sud-Ouest / Provence
www.macdid.fr
Salut !

Ca fait un bail que je n'ai pas codé donc faut pas m'en vouloir si mes infos sont erronées :D

1 - A quoi sert la fonction parse ??? Elle n'est appelée nulle part !

2 - As-tu un message d'erreur ? Si oui, quel est-il ?

3 - Quand tu testes ton script tu le fais en local ou en distant ? En local, il faut un serveur SMTP ! Je te laisse chercher comment activer le serveur SMTP d'OSX ... je ne m'en souviens plus ! En distant, es-tu sûr que la fonction mail soit activée par ton hébergeur ?

Des tests simples à mettre en oeuvre pour éviter de tourner en rond !

a - vérifier que les données à envoyer parviennent bien au script qui les traitent et qui les envoie.

Bloc de code:
// - si $_POST n'est pas vide alors j'affiche les noms des variables et leur valeur - //
if($_POST !='')
{
     echo '<pre>';
     print_r($_POST);
     echo '</pre>';
}
// - sinon c'est que $_POST ne contient rien donc le pb vient du formulaire - //
else
{
     echo 'Rien envoye par post';
}

/!\ Dans l'exemple que tu nous montres, le traitement des variables de ton formulaire n'est absolument pas sécurisé /!\


b - tester la fonction mail

Bloc de code:
// - si le mail ne part pas je l'affiche
if(!mail('toto@toto.com', 'tata', 'titi'))
{
     echo 'mail pas parti';
}
// - s'il part je crie victoire - //
else
{
     echo 'victoire !';
}

Ouala ... la tout de suite je commencerai par ce genre de test avant de sécuriser tout ça !

A+

Didier

PS : ci-dessous un lien dans ma signature ... j'ai des bouquins de dev PHP à vendre ... :siffle:
 

macpo

Membre confirmé
29 Octobre 2009
11
3
Merci Didgar,

1.Pour te répondre, la fonction parse sert à …… je sais pas désolé!
2.Je n'avait pas de message d'erreur.
3.J'ai testé mon script en distant, mais maintenant il fonctionne. Je pense que c'était du à un saut de ligne dans mon script.
Tu me dis qu'il faut sécuriser le traitement des variables. Je n'étais pas au courant de cela.
En effet, j'ai eu le script par un gars qui connait un gars, enfin tu vois le type d'info sûr mais pas trop.:D

En tout cas merci d'avoir consacré du temps à mon problème.
Si tu veux bien jouer le prof et me montrer comment sécuriser tout ça, je serais vraiment ravi.
Merci encore et à bientôt.

PS: Pour les bouquins PHP ce ne sera pas pour maintenant, l'été commence et je suis fauché comme les blés.
 

didgar

Membre actif
25 Juin 2007
437
10
Sud-Ouest / Provence
www.macdid.fr
Salut !

.../... Si tu veux bien jouer le prof et me montrer comment sécuriser tout ça, je serais vraiment ravi.

Euuuh ... non :D Je n'ai pas la vocation ! Par contre, un exemple de protection dans le cas d'une requête SQL -> ici. Ce cas est très différent du tien mais tu peux adapter le "concept".

En plus de sécuriser, tu peux vérifier après l'envoi du form ( en php ) que les valeurs que tu attends sont bien de la forme attendue par ex du texte pour le nom, 10 chiffres pour un numéro de tél etc ... ça évite de se faire pourrir une base en moins de deux ! Tu peux aussi vérifier avant la soumission du form ( en js et/ou ajax ).

Et deux vérifications valent mieux qu'une !

PS: Pour les bouquins PHP ce ne sera pas pour maintenant, l'été commence et je suis fauché comme les blés.

Taratata !!! Des beaux livres comme les miens ?! Les prix sont négociables !

A+

Didier