IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Erreur formulaire PHP


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 27
    Points : 12
    Points
    12
    Par défaut Erreur formulaire PHP
    Bonjour,

    J’ai créer un formulaire en html qui doit me fournir des informations sur des utilisateurs.
    J’ai donc associé à ce formulaire un script php qui va me permettre de recueillir ces informations et de me les envoyer par mail.
    Mais lorsque l’utilisateur clique sur le bouton ’ok’ j’ai cette erreur qui s’affiche :

    Warning: Cannot modify header information - headers already sent by (output started at /homez.487/neurodig/www/test/traitement.php:8) in /homez.487/neurodig/www/test/traitement.php on line 35
    voici mon code html:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <form id="form1" name="contact" method="post" action="traitement.php">
          <p>Nom
            <input type="text" name="nom" size="50" maxlength="40"/>
          </p>
          <p>Courriel
            <input type="email" name="courriel" />
          </p>
          <p> Tel  
            <input type="text" name="tel"/>
          </p>
          <p>Message</p>
          <p>
            <textarea name="message" cols="60" rows="10" wrap="physical"></textarea>
          </p>
           <input type="submit" name="Ok" value="Ok"/>
          <p>&nbsp; </p>
        </form>
    mon code .php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?php
     
    $adresse = "nom@gmail.com";
    $site = "http://www.nom.net/test/";
     
    $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 = "Formulaire de contact";
     
    $informations = "
    nom: ".$_POST['nom']." \r\n
    courriel: ".$_POST['courriel']." \r\n
    tel: ".$_POST['tel']."\r\n
    message: ".$_POST['message']." \r\n
    ";
     
    $res = mail($TO, $sujet ,$informations, $head);
     
    if (true == $res) {
    Header("Location: http://".$site."/formulairevalide.html" );
    } else {
    Header("Location: http://".$site."/formulairenonvalide.html" );
    }
    ?>
    Mes fichiers sont sur mon server dans un dossier appelé ’www/test’.
    Je précise aussi que je suis débutante et que j’ai du mal à cerner la balise header en bas du code php....
    Quelqu’un aurait il une idée?

    Merci beaucoup pour votre aide!

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Salut,

    Je t'encourage à lire ce point de la FAQ : http://php.developpez.com/faq/?page=...s_already_sent
    et à utilise les balises CODE pour présenter ton code de manière plus lisible.

    Bon courage et n'hésite pas à redemander si tu bloques malgré l'explication de la FAQ

  3. #3
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonsoir.

    Dans votre variable '$site' vous avez une url absolue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $site = "http://www.nom.net/test/";
    Or dans votre instruction header('location:') vous concaténez à nouveau "http://" avec cette mêm url...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Header("Location: http://".$site."/formulairevalide.html" );

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Merci pour votre réponse mais cela ne marche toujours pas....Je reçois des mails pourtant. Deux vides et un rempli....c’est surement que le script envoie le message des que je me rend sur la page et une autre fois quand je soumet le formulaire.

    J’ai bien enlevé le ’http://’ de la balise $site, j’ai toujours la même erreur....

    C’est sûrement une histoire de répertoire....
    Mon ftp w3. NDD.net est organisé comme suit: www/test/ puis dans le répertoire test.....ma page coordonnees.html, formulairevalide.html (la réponse qui dit ok), formulairenonvalide.html (la réponse qui dit non ok)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    J’ai essayer de remplacer la balise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Header("Location: http://".$site."/formail2_ok.html" );
    en mettant une url absolue du formail2-ok.hml mais toujours l’erreur!

    Je ne comprends pas....

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as lu et compris le lien fourni par _Thomas ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $site = "http://www.nom.net/test/";
    Vous avez enlevé le "http://" qui était redondant ! (Merci !... De rien !...) ; Mais avez-vous fait attention au slash "/" de fin de chaine ?...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Header("Location: http://".$site."/formulairevalide.html" );
    Car ensuite vous concaténez avec "/formulairevalide.html" ou "/formail2_ok.html"...

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    iakou, tes remarques sont correctes, mais ce n'est pas la cause du problème.
    Tu peux mettre n'importe quelle URL dans le header() (correcte ou non), ça ne peut pas fonctionner pour les raisons expliquées dans le lien donné par _Thomas .
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    Bonjour à tous...

    Désolé mais après tout ce temps je n’ai toujours pas résolu mon problème!

    De plus une nouvelle erreur maintenant....j’ai tellement modifié mon fichier.php que je ne sais plus vraiment quelles erreurs je commet. Du coup je reçois le mail dans ma boite en validant mon formulaire mais les champs courriel, message etc... ils arrivent mais ils sont sont vides!
    Puis toujours l’erreur du header....vraiment désolé, je comprends mon code mais le lien fourni par Thomas pour moi c’est du chinois.

    Je remet mon code au cas ou quelqu’un voudrait bien m’aider...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Ma page de traitement</title>
    </head>
    <body>
    <?php
    $adresse = "nom@gmail.com";
    $site = "www.nom.net/test";
     
    $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 = "Formulaire de contact";
     
    $informations = "
    nom: ".$_POST['nom']." \r\n
    courriel: ".$_POST['courriel']." \r\n
    tel: ".$_POST['tel']."\r\n
    message: ".$_POST['message']." \r\n
    ";
     
    $res = mail($TO, $sujet ,$informations, $head);
     
    if (true == $res) {
    Header("Location: http://".$site."/formulaireok.html" );
    } else {
    Header("Location: http://".$site."/formulairepasok.html" );
    }
    ?>
    </body>
    </html>
    Merci

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    Bon alors petite amélioration : je reçois bien le mail une seule fois et j’ai bien les champs tout remplis!
    Par contre toujours l’erreur leader.....
    La victoire est proche???

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    J’ai essayé de mettre cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<META http-equiv="refresh" content="1; URL=formail2_ok.php">';
    Mais le script tourne en boucle et si je ne ferme pas la fenêtre je me retrouve avec un mail toute les 1s.....normal en même temps si je demande à mon script de rafraichir avec le même script toute les 1s....je n’ai pas bien compris les explications de la FAQ....
    Je perds espoir.....

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    Bon ça marche, j’ai trouvé une solution rapide qui enverra le mail, mais qui n’enverra pas de message d’erreur en cas de bug du formulaire...tant pis!
    Je met le code...mais j’aurais bien aimé avoir la vrai solution, au moins pour apprendre...si quelqu’un veut bien me mettre sur la voie.....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Ma page de traitement</title>
    </head>
    <body>
    <?php $adresse = "nom@gmail.com";
    $site = "www.nom.net/test";
    $message_envoye = "Votre message a bien été envoyé";
     
    $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 = "Formulaire de contact";
     
    $informations = "
    Nom: ".$_POST['Nom']." \r\n
    Courriel: ".$_POST['Courriel']." \r\n
    Adresse: ".$_POST['Adresse']."\r\n
    Tel: ".$_POST['Tel']."\r\n
    Language: ".$_POST['Language']." \r\n
    ";
     
    $res = mail($TO, $sujet ,$informations, $head);
     
    if (true == $res) {
    	echo '<p>'.$message_envoye.'</p>'."\n";
    	}
    /*echo '<META http-equiv="www.nom/test/formail2_ok.html">';
    } else {
    echo '<META http-equiv="www.nom.net/test/formail2_pasok.html">';
    }*/
     
    /*Header("Location: http://".$site."/formail2_ok.html" );
    } else {
    Header("Location: http://".$site."/formail2_pasok.html" );
    }*/
    ?>
    </body>
    </html>

  13. #13
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour.
    Effectivement, quand on voit votre code au complet, on se dit : Thomas, Sabotage et Bovino avaient bien pressenti ce qui n'allait pas.
    Il semble aussi que vous n'avez pas approfondi le lien que Thomas vous a donné... D'ailleurs vous le reconnaissez :
    je comprends mon code mais le lien fourni par Thomas pour moi c’est du chinois.

Discussions similaires

  1. [MySQL] Formulaire php qui renvoie une erreur a l'envoie dans la bdd
    Par Varghos dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 20/04/2014, 11h15
  2. Formulaire PHP/Ajax, erreur de remplissage de liste
    Par Misoss dans le forum Langage
    Réponses: 6
    Dernier message: 29/07/2013, 18h02
  3. Formulaire PHP - Erreur Mail
    Par boulezor dans le forum Langage
    Réponses: 4
    Dernier message: 14/07/2013, 18h16
  4. [CS4] Gérer erreur sur formulaire PHP
    Par Lionel_aw dans le forum Dreamweaver
    Réponses: 0
    Dernier message: 01/11/2009, 16h41
  5. erreur formulaire php
    Par Maxime972 dans le forum Langage
    Réponses: 8
    Dernier message: 30/01/2009, 03h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo