bonsoir !
en fait , je voulais faire un formulaire pour mon site qui consiste a signaler les liens mort de ma serie , donc j'ai realisé le formulaire en html aucun souci ensuite pour la page cible qui verifié les données j'ai eu du mal avec la fonction mail donc j'ai ete voir des tutoriaux pour bien comprendre le fonctionnement, et finalement j'ai réalisé quelque chose d'assez logique en se basant sur un tutoriel et aussi sur ma logique .
voici mon code de la page formulaire.php:

form action="cible.php" method="post">
    <label for="nom">Nom :</label><br/>
    <input id="nom" name="nom" type="text" value=""/><br/>
    <label for="email">Adresse email :</label><br/>
    <input id="email" name="email" type="email" value=""/><br/>
    <label for="select">sélectionnez un mangas :</label><br/>
    <select name="mangas" id="select">
<option value="naruto-shippuden">Naruto shippuden</option>
<option value="one-piece">One piece</option>
<option value="fairy-tail">Fairy tail</option>
<option value="hunter-x-hunter">Hunter X Hunter</option>
    </select><br/>
<label >sélectionnez une version :</label> <br/>
<input id="vf" name="version" type="radio" value="vf">
<label for="vf">vf</label>
<input id="vostfr" name="version" type="radio" value="vostfr">
<label for="vf">vostfr</label><br/>
<label for="numero">Numero du lien mort :</label><br/>
    <input id="numero" name="numero" type="text" value=""/><br/><br/>

    <button type="submit">Envoyer</button>
</form>

code de la page cible.php:

<?php
if(isset($_POST) && isset($_POST'nom']) && isset($_POST'email']) && isset($_POST'mangas']) && isset($_POST'version']) && isset($_POST'numero'])){
    if(!empty($_POST'nom']) && !empty($_POST'email']) && !empty($_POST'mangas']) && !empty($_POST'version']) && !empty($_POST'numero'])){
        $destinataire = "galandroid2013@gmail.com";
        $sujet = "lien mort";
        $message .= "Nom : ".$_POST'nom']."\r\n";
        $message .= "Adresse email : ".$_POST'email']."\r\n";
        $message .= "mangas : ".$_POST'mangas']."\r\n";
        $message .= "version : ".$_POST'version']."\r\n";
        $message .= "numero : ".$_POST'numero']."\r\n";
        $entete = 'From: '.$_POST'email']."\r\n".
            'Reply-To: '.$_POST'email']."\r\n".
        'X-Mailer: PHP/'.phpversion();
        if (mail($destinataire,$sujet,$message,$entete)){
            echo 'Message envoyé';
        } else {
            echo "Une erreur est survenue lors de l'envoi du formulaire par email";
        }
    }
}
?>

pour l'instant mon code est presque parfait enfin d'apres moi , manque plus qu'a sécuriser les case avec htmlspecialchars que je rajouterai vers la fin .
premier problème que j'ai rencontrer et que j'ai réglé c’était le problème connu avec wamp pour envoyer des email en local .
le deuxieme et c'est celui qui me rend fou c'est que lorsque je teste j'ai un message de la par de wamp basique le voici : Notice: Undefined variable: message in C:\wamp\www\test\cible.php on line 6
et le message d'erreur que j'ai mis dans (sinon=else).
voila si quelqu'un peut m'aider car je ne trouve pas l'erreur, je suis totalement perdu .
merci a vous d'avance!

11 réponses


Tu as mis un point avant ton = à ta ligne 6

$message .= "Nom : ".$_POST'nom']."\r\n";

C'est peut être de là que vient ton problème.

Peut être devrait tu, avant d'incrémenter ta variable $message, lui donner une valeur ?
ex :

$message = "";
$message .= " ....";
$message .= " ....";

Dans ton cas , tu demande a ton script d'ajouter du contenu à une variable ... qui n'existe encore même pas .
Cependant, je ne suis pas sur que ton problème vienne de là :/

mramiine
Auteur

en enlevant le point je ne rencontre plus le message d'erreur a la ligne 6 mais le message d'erreur que j'ai mis moi si or que mon formulaire est rempli , je comprends pas trop d'ou vient l'erreur exactement ,
j'ai un doute sur

<label for="select">sélectionnez un mangas :</label><br/>
    <select name="mangas" id="select">
<option value="naruto-shippuden">Naruto shippuden</option>
<option value="one-piece">One piece</option>
<option value="fairy-tail">Fairy tail</option>
<option value="hunter-x-hunter">Hunter X Hunter</option>
    </select><br/>
<label >sélectionnez une version :</label> <br/>
<input id="vf" name="version" type="radio" value="vf">
<label for="vf">vf</label>
<input id="vostfr" name="version" type="radio" value="vostfr">
<label for="vf">vostfr</label><br/>

je sais pas si les sélections et les radios se traitent comme un champ de texte donc si ce n'est pas le cas ça se peut que l'erreur vient de la ,
exemple : j'ai deux boutons radio qui ont le meme name , je me dis que logiquement lorsque je choisi une option l'autre option reste vide et donc le champ n'est pas rempli et vu mon code pour verifier les champ vide ca renvoie une erreur fin je suis pas sur mais j'ai des doutes un peu partout quand je rencontre un probleme je me pose trop de question ça me rend fou :(

mramiine
Auteur

je suis pas sur d'avoir compris , peux tu m'expliquer d'avantage benjamin stp ?

Bonjour,

à première vue, je pense que le problème vient encore de la fonction mail de PHP sous wamp !
Essaye de faire un script qui envoi un mail avec les donné en dur !!

<?php
    if (mail("galandroid2013@gmail.com","Mail de Test","Ceci est le message de test","From: test@example.com\r\nReply-To: test@example.com")){
        echo "mail bien envoyé";
    }else{
        echo "la fonction mail ne fonctionne pas correctement";
    }
?>

tiens nous au courant !!

mramiine
Auteur

oui j'ai pensé a faire ça aussi et on dirait que ça vient de wamp !
voici mes code pour faire un simple teste qui sont normalement juste :
fomulaire :

<form action="cible.php" method="post">
    <label for="nom">Nom :</label><br/>
    <input id="nom" name="nom" type="text" value=""/><br/>
    <label for="email">Adresse email :</label><br/>
    <input id="email" name="email" type="email" value=""/><br/>

    <button type="submit">Envoyer</button>
</form>

cible.php:

<?php
      $adresse = "galandroid2013@gmail.com";
$TO = $adresse;
$head = "From: ".$adresse."\n";
$head .= "X-Sender: <".$adresse.">\n";
$head .= "X-Mailer: PHP\n";
$head .= "Return-Path: <".$adresse.">\n";
$head .= "Content-Type: text/plain; charset=iso-8859-1\n";
$sujet = "lien mort";
$informations = "
Nom: ".$_POST'nom']." \r\n
Adresse email: ".$_POST'email']." \r\n";
$res = mail($TO, $sujet ,$informations, $head);
if (true == $res) {
echo "Merci pour votre message !";
} else {
echo "Erreur . ";
}
?>

en testant j'ai toujours le message (erreur) qui s'affiche directement , je crois bien que ça vient de wamp .
voici le tutoriel que j'ai suivi pour activer l'envoi d'email en local avec wamp :
ici

mramiine
Auteur

Quelqu'un peut maider svp ?

heu une idée à la con, mais j'avais eu le soucis avec wamp
fait démarrer>>executer>>msconfig>>onglet démarrage
trouve skype et autre messagerie instané et décoche les pour quelle ne démarre pas toute seul,
reboot ton pc et refait un essaie.

mramiine
Auteur

j'ai essayé mais malheureusement ca ne marche pas , est ce que chez toi la fonction mail fonctionne sur wamp ? si oui peut tu tester mon code chez toi stp ? pour voir si mon probleme vient de wamp ou de mon formulaire .
merci

malheureusement, je ne suis pas sur wamp, je travail directement sur mon hébergeur

mramiine
Auteur

y'a pas de souci j'ai la confirmation que le probleme vient de wamp me reste plus qu'a le regler , si tu as un tutoriel pour moi n'hesite pas a me le faire part stp !
merci d'avance.