Formulaire PHP

Bonjour,
je débute (vraiment) en php, et voilà ce que j'aimerais faire : un formulaire dans lequel le visiteur pourrait m'envoyer du texte par email. Je ne connais presque rien en php, mais j'ai déjà mon code xhtml. Voici mon code html :

<form method="post" action="envoi.php">
 
   <fieldset>
       <legend><strong>Coordonnées</strong></legend> >
 
       <label for="nom">Quel est votre nom ?</label><br />
       <input type="text" name="nom" id="nom" /><br />
 
       <label for="email">Quel est votre e-mail ?</label><br />
       <input type="text" name="email" id="email" /><br />
   </fieldset>
 
   <fieldset>
       <p>
           <label for="avis">Quel est votre avis à propos du site ?</label><br />
           <textarea name="precisions" id="precisions" cols="40" rows="4" tabindex="80"></textarea>
       </p>
   </fieldset>

   <p>
       <input type="submit" /> <input type="reset" />
   </p>


Merci d'avance !
Configuration: Linux
Firefox 3.0

29 réponses

Résumé de la discussion

Un débutant PHP cherche à créer un formulaire permettant à un visiteur d'envoyer du texte par email, en utilisant un script d'envoi via mail(), facilement. Plusieurs points clés apparaissent : la configuration de la fonction mail dans php.ini selon Linux ou Windows, et les erreurs comme parse error ou headers already sent qui bloquent l'envoi. D'autres réponses soulignent d'utiliser $_POST['email'] au lieu de $_POST[email], et rappeler d'éventuelles redirections ou d'utiliser l'envoi via une page de retour, pour éviter les erreurs de syntaxe. En cas d'hébergement Linux, la bonne configuration peut nécessiter le chemin Sendmail ou l'utilisation d'un SMTP externe, et des précautions sur les sorties prématurées qui déclenchent 'headers already sent'.

Bobot (l’IA à votre service)
  1. En effet, Je suis en galère s'est planté dans le php.ini.

    sendmail_path indique juste la commande à utiliser pour envoyer le mail. En l'occurence, par défaut, c'est sendmail, et les paramètres utilisés sont -t et -i (comme marqué dans le fichier).

    Pour commencer, il faut que tu réussisses à envoyer un mail depuis ton serveur. Il y a plusieurs logiciels d'envoi de mail, dont sendmail, postfix ou msmtp.
    Qu'as tu installé comme logiciel ?
    1. C'est pas grave, merci baucoup pour tout ce que tu as déjà fait et merci à tous les autres !!
      1. j'ai pas envie que tu soit en galère, il faut que t'aille demander de l'aide au linuxien pour bien configurer la section

        [mail function]
        ; For Win32 only.
        SMTP = localhost
        smtp_port = 25

        ; For Win32 only.
        ;sendmail_from = me@example.com

        ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
        ;sendmail_path =

        car pour recevoir les message depuis ton formulaire tu dois bien configuré cette section selon que tu es sur linux ou window

        Je suis désolé si j'ai pas réussi à t'aider jusqu'au bout,
        je dois te laisser........ bonne continuation
        1. j'espère que ça va marcher, et si ça marche pas c'est que j'ai du faire une érreur dans

          [mail function]
          ; For Win32 only.
          SMTP =smtp.orange.fr
          smtp_port = 25

          ; For Win32 only.
          ;sendmail_from = me@example.com

          ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
          sendmail_path =tonadresse@email

          car je ne suis pas linuxien, j'suis xindowsien, mais j'espère que ça marche
          1. Normalement ça doit étre comme ça:

            [mail function]
            ; For Win32 only.
            SMTP =smtp.orange.fr
            smtp_port = 25

            ; For Win32 only.
            ;sendmail_from = me@example.com

            ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
            sendmail_path =tonadresse@email
            1. ensuite remplace
              localhost par smtp.orange.fr (si ton FAI est orange)

              et remplace

              ;sendmail_path =

              par

              sendmail_path = tonadresse@Email

              (t'as vu que j'ai enlever le ; avant sendmail_path )

              ensuite tu sauvegarde,
              puis tu redemarre les services (restart)

              ensuite teste ton formulaire
              1. C'est bien maintenant cherche ces lignes:

                [mail function]
                ; For Win32 only.
                SMTP = localhost
                smtp_port = 25

                ; For Win32 only.
                ;sendmail_from = me@example.com

                ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
                ;sendmail_path =
                1. ok, cherche le fichier php.ini qui se trouve dans un des sous dossier de php dans c:/
                  1. Ah non, j'ai pas fait ca.... Comment on fait ? (pardonnez mon ignorance :) )
                    1. tu utilise quoi comme logiciel pour utiliser php?
                  2. essaye ça alors il faut mettre les guillemets autour de ton adresseEmail:

                    <?php

                    $to="tonAdresse@email";
                    $subject='message envoyé';
                    $message="Message envoyé par $_POST[email]<br>Voici son message:$_POST[precisions]";
                    $headers="MIME-Version:1.0\r\n";
                    $headers="Content-type:text/html;charset=iso-8859-1\r\n";

                    mail($to,$subject,$message,$headers);

                    echo"
                    <script language='javascript'>

                    alert('Votre message nous a été envoyé merci.');
                    window.location='retourPageFormulaire.html';
                    </script>
                    ";

                    ?>

                    Et est-ce que tu as configuré la section [mail] de php.ini ? car c'est grace à cette configuration que tu peux recevoir les messages de ton formulire
                    1. Merci du conseil et du script !
                      Cependant 2 erreurs persistent lorsque je teste mon formulaire :
                      -Parse error: syntax error, unexpected '@' in /home/jonathan/www/Site/envoi.php on line 3
                      ---->J'ai essayé de mettre des guillemets autour, et je me retrouve avec cette 2nd erreur :
                      -Warning: Cannot modify header information - headers already sent by (output started at /home/jonathan/www/Site/envoi.php:17) in /home/jonathan/www/Site/envoi.php on line 19

                      Et je ne recois le mail dans aucun des cas....
                      Mais merci de m'aider, je dois vraiment etre lourd !
                      1. "header('location:retourAuformulaire.html');"

                        C'est juste une redirection automatique (version php) vers la page de ton formulaire (j'ai mais 'retourAuFormulaire.html' car je ne sais pas comment s'appelle le nom de la page de ton formulaire), c'est l'équivalent de window.location en version javascript.
                        1. Si tu ne connais pas php, moi j'ai appris php avec le livre PHP et mysql pour les nuls car j'étais en galère, et franchement ça m'a servi, donc si tu veux y jeté un coup d'oeil...
                          1. J'ai beau cherché, je trouve pas. Je suppose qu'il faut mettre un "$to=monadresse@xxxxxxxxx;" quelque part, mais je ne vois pas trop comment. De plus, je ne comprend pas l'avant dernière ligne "header('location:retourAuformulaire.html');".
                            Merci pour tout en tout cas. :)
                            • 1
                            • 2