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 :

Récupération des variables de formulaire


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Récupération des variables de formulaire
    J'ai un problème avec mon code php lorsque j'envoie mon formulaire

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="POST" name="contact" action="formphp.php" enctype="text/plain" onSubmit="return checkrequired(this)">

    //le onSubmit fait référence à un javascript qui vérifie que mes champs ne sont pas vides//

    le tout, suivi des champs : =>

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="requiredNOM" size="50" /> etc....

    la balise form est bien fermée à la fin. mon bouton envoyer fonctionne très bien et me redirige vers la page formphp.php

    Voici le problème que je rencontre, il concerne 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
    <?
     $formTitre = $_POST['TITRE'];
     $formNom = $_POST['requiredNOM']; 
     $formPrenom = $_POST['requiredPRENOM']; 
     $formAdresse = $_POST['ADRESSE'];
     $formCommentaire = $_POST['COMMENTAIRE']; 
     // etc...
     
      $corps = "$formTitre $formPrenom $formNom vous contacte via votre formulaire.\n \n bonjour : je suis $formTitre $formNom , j'habite à $formAdresse \n message : \n $formCommentaire"; 
     
     echo $formNom
     echo $_POST['TITRE']; 
     
     mailto("monmail@mail.mail","formulaire de contact",$corps); 
     
    header("contact.htm");
       ?>
    de 1) l' echo n'affiche rien du tout
    de 2) aucun mail n'est envoyé
    de 3) je ne suis pas redirigé vers la page contact.htm
    de 4) mon hébergeur accepte le php
    de 5) ma page est en ligne.
    de 6) ben je suis juste dans ma page www.monsite.com/formphp.php et là, à ma grande surprise, mon favicon est quand même affiché, alors que sur ma page php, je n'ai pas de code pour le mettre...

    Est-ce que qqn pourrait m'aider à me dire ce que je fais de faux dans mon code?

    Merci beaucoup!

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Déjà il te manque un point-virgule après echo $formNom.



  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    point-virgule remis à sa place.

    tjrs rien de changé.

    le echo n'était là que pour tester que mes variables soient bien récupérés par le formphp.php.

  4. #4
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    Personnellement j'utilise la fonction mail (email si hébergé chez Free me semble t'il)

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mail($MailTo, $MailSubject, $MailBody, $MailExp)
    Où :
    - $MAilTo = Adresse à laquelle sera envoyé le contenu du formulaire
    - $MailSubject = Texte qui va figurer dans le champ sujet ou objet du email
    - $MailBody = Contenu du mail
    - $MailExp = Adresse de l'expediteur


    Je construit $MailExp de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $email = $_POST['email'];      // Adresse recuperée
    $from_email  = $email;        // Expediteur de l'email
    $MailExp= "From: $from_email \n";
    Il y a plus simple mais c'est tiré d'un script fonctionnel


    Edit:
    Si tu fais tourner ton script en local, il faut avoir regler le SMTP de Apache a prealable

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    j'ai copié/collé ta ligne de mail, en faisant attention de remplir les variables justes, de mettre des ";" à la fin de chaque ligne.

    j'ai essayé de mettre mail ou email,

    mais tjrs meme résultat.

    et mon header ne fonctionne toujours pas non plus.

    Mon script n'est pas en local, je l'ai mis en ligne, avec un hébergeur qui accepte du php

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    short_open_tag est bien sur On (voir la sortie de phpinfo ou éditez la source de la page avec votre navigateur) ? Arrangez-vous également pour ajouter en début de script, après avoir vérifier ce premier point :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    Et éventuellement un :
    Mais la fonction header ne fonctionnera plus en sa présence.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Ben ouais... du coup c'est nettement plus ... catastrophique, si j'ose dire...

    Je vais voir avec mon hébergeur pour le short open tag.

    sinon, ben j'ai enfin des messages d'erreur qui apparaissent

    Notice: Undefined index: TITRE in /var/www/vhosts/monsite.com/repertoirehebergeur/formphp.php on line 6

    Notice: Undefined index: requiredNOM in /var/www/vhosts/monsite.com/repertoirehebergeur/formphp.php on line 7
    et ca continue comme ca jusqu'à la fin:

    Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/monsite.com/repertoirehebergeur/formphp.php:6) in /var/www/vhosts/monsite.com/repertoirehebergeur/formphp.php on line 28

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Sait-on jamais : quel hébergeur et quelle version de PHP ?

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Aladin.ch et php 5.x

    Mais voilà du nouveau!

    Je leur ai envoyé un mail pour demander qui que quoi comment et dans leur réponse, ils m'ont envoyé un formulaire tout prêt, dont le php est:

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    <?
     
    $body="";
    $post = array();
     
    $site="www.monsite.ch";
    $sitewww="www.$site";
     
    $recipient= $_POST["recipient"];
    $email=$_POST["email"];
    $subject=$_POST["subject"];
    $required=$_POST["required"];
    $redirect=$_POST["redirect"];
     
    $var1= $_POST["TITRE"];
     
     
    $ip=$_SERVER["REMOTE_ADDR"];
    $nav=$_SERVER["HTTP_USER_AGENT"];
    $host=$_SERVER['HTTP_HOST'];
     
    foreach ($_POST as $nomvar => $valvar) {
            $post[$nomvar] = $valvar;
            $body.="$nomvar: $valvar\n";
    }
    $body.="\n\nposte par: $ip, $nav, $host\n";
    $body.="Autorise depuis=>: $site/$sitewww, to=>: $recipient, from=>: $email, requis=>: $required, redirection=>: $redirect\n";
     
     
    $found=0;
    if (($site==$host) or ($sitewww==$host)) $found=1; 
     
          if (!$found){
     
             print "sendmail.php -  appel depuis un site illegal - $site<br>";
             print "Modifier la variable \$ref dans le programme sendmail.php<br>";
             print "Mettez le nom de votre site.<br>Voici la config actuel de \$ref dans sendmail.php: ";
             print "$site,$sitewww<br>\n";
             exit;
          }
     
        if (strlen($email)>30) { print "error ln email"; exit; }
        if (strlen($subject)>128) { print "error ln subject"; exit; }
        if (strlen($body)>2048) { print "error ln body"; exit; }
     
     
    if ($email) {
       $email = trim($email);
       if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $email)) {
          print "adresse <b>email $email</b> est invalide";
          exit;
       }
    }
     
     
     
    if ($required) {
      $missing_field_list="";
      $required = split(",",$required);
      for ($i=0;$i<count($required);$i++) {
         $string = trim($required[$i]);
         if(!$post["$string"]) {
             $missing_field_list .= "<b>$required[$i]</b><br>\n";
         }
       }
    }
     
    if ($missing_field_list) {
          print "Le(s) champ(s):<br>\n$missing_field_list est/sont obligatoire(s)";
          exit;
       }
     
     
    mail("$recipient","$subject","$body","from:$email");
     
     
    if (!$redirect) { 
    print "<pre>$body</pre>"; exit; 
    } else header("location: $redirect");
     
     
    ?>
    à savoir que dans le formulaire, certaines variables sont définies:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     <input type="hidden" name="recipient" value="Monmail@chez.moi">
      <input type="hidden" name="redirect" value="page_de_redirection.htm">
      <input type="hidden" name="subject" value="Formulaire de contact">
      <input type="hidden" name="required" value="email">
    le pire, c'est que ca fonctionne... à une seule exception près... je n'arrive pas à composer mon mail en lui demandant de faire le texte en insérant les variables au moment ou je veux : bonjour, je suis $var1 $var2 etc...

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Personne n'a une idée pour composer le corps du mail avec des "bonjour, je suis $var1 [nom], je viens de $var2 [ville]?

    ou devrais-je recomposer tout le code?

Discussions similaires

  1. Récupération rapide des variables de formulaire/sessions/Url/Cookies
    Par guitou12 dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 0
    Dernier message: 14/02/2011, 19h11
  2. Récupération des variables d'un formulaire à l'autre
    Par croke dans le forum VBA Access
    Réponses: 6
    Dernier message: 20/06/2008, 16h37
  3. [MySQL] Récupération des variables avec un formulaire
    Par juju03 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/06/2008, 17h43
  4. Récupération rapide des variables de formulaire
    Par sekaijin dans le forum Langage
    Réponses: 4
    Dernier message: 15/12/2006, 21h37
  5. [C#] Récupération des variables system...
    Par smyley dans le forum Windows Forms
    Réponses: 7
    Dernier message: 04/08/2005, 11h39

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