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 :

parse error (Alice)


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut parse error (Alice)
    Bonjour,

    Je me pose plusieurs questions à l'égard du script PHP/HTML plus bas (depuis Alice) :

    1. Je ne comprends pas pourquoi s'affiche systématiquement Missing fields ! après l'envoi du formulaire, que tous les champs soient renseignés ou non. Par ailleurs le message du nouveau formulaire contient :
    Provenance : http://www.xxx.fr/contact.php3
    Adresse IP : xxx.xxx.xx.xxx,
    Navigateur : Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
    Nom :
    E-mail :
    Message :
    2. Dans le cas où le message du visiteur est bien envoyé, est-il possible de le lui spécifier puis de rediriger automatiquement ce dernier vers la page d'accueil de mon site ?
    3. Comment ce script peut-il être optimisé (erreurs, failles, allègements sémantique et syntaxique, etc) ?

    Merci d'avance à ceux qui prendront le temps de répondre.

    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
     
    <?php echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?".">"; ?>
    <!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" xml:lang="fr" lang="fr">
     
    <head>
      <title>Contact</title>
      <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
     
    <body>
     
    <?php
    function formulaire($name="",$email="",$subject="",$message="") {
    ?>
     
    <div align="center">
     
    <p>&nbsp;</p>
     
    <form action="<?php echo $PHP_SELF ?>" method="post">
      <table>
        <tr><th colspan="2">Send an e-mail to <a href="http://www.moi.fr">Damien</a></th></tr>
        <tr><td>Name</td><td><input type="text" name="name" size="68" value="<?php echo trim(htmlentities($name)) ?>" /></td></tr>
        <tr><td>Email</td><td><input type="text" name="email" size="68" value="<?php echo trim(htmlentities($email)) ?>" /></td></tr>
        <tr><td>Subject</td><td><input type="text" name="subject" size="68" value="<?php echo trim(htmlentities($subject)) ?>" /></td></tr>
        <tr><td>Message</td><td><textarea name="message" rows="10" cols="70" wrap="virtual"><?php echo trim(htmlentities($message)) ?></textarea></td></tr>
        <tr><td>&nbsp;</td><td><input type="submit" value="Send"/></td></tr>
      </table>
    </form>
     
    <?php
    }
     
    if(!isset($name)) {formulaire();}
     
    else {
      $Vname=trim(htmlentities($_POST["name"]));
      $Vemail=trim(htmlentities($_POST["email"]));
      $Vsubject=trim(htmlentities($_POST["subject"]));
      $Vmessage=trim(htmlentities($_POST["message"]));
      $recipient='mon@email.fr';
      $msg="Provenance : $HTTP_REFERER\n";
      $msg.="Adresse IP : $REMOTE_ADDR,\n";
      $msg.="Navigateur : $HTTP_USER_AGENT\n";
      $msg.="Nom : $Vname\nE-mail : $Vemail\nMessage : $Vmessage\n";
      if (empty($Vname) || empty($message) || empty($email) || empty($subject)) {
        echo "<p>Missing fields !</p>";
        $error=1;
      }
     
      if (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-_.]?[0-9a-z])*\\.[a-z]{2,4}$",$Vemail) && ($error<>1)){
        echo "<p>Email is not valid.</p>";
        $error=1;
      }
     
      if ($error==1) {
        formulaire($name,$email,$subject,$msg);
      }
     
      else {
        if (mail($recipient,$Vsubject,$msg)) {
          echo "<p>Your message has been sent.</p>\n" ;
          echo "Return to <a href=\"index.html\">homepage</a>";
        }
        else {
          echo "<p>An error occured while sending your message.</p>\n";
        } 
      }
    }
    ?>
     
    </div>
    </body>
    </html>

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    N'ayant pas ta fonction formulaire sous les yeux.

    je dirais que dans ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     if (empty($Vname) || empty($message) || empty($email) || empty($subject)) {
        echo "<p>Missing fields !</p>";
        $error=1;
      }
    $message, $email, $subject

    sont vide !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    MaitrePylos,

    La fonction formulaire() définit l'affichage du formulaire par le bout de code HTML contenu dans entre les balises <form>. Même lorsque tous mes champs sont remplis (et l'email valide), Missing Fields ! est retourné alors que le message devrait m'être mailé (il ne l'est d'ailleurs jamais). Quelqu'un a-t-il une idée ?

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    dans ton form, déjà tu as une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form action="<?php echo $PHP_SELF ?>" method="post">
    a remplacer par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form action="<?php echo $_SERVER['PHP_SELF']  ?>" method="post">

  5. #5
    Membre expérimenté

    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
    Par défaut
    S'agit-il d'un script recyclé, j'entends par là modifié suite à une modification de la directive register_globals à Off car certaines de vos variables ne sont jamais définies ($name, $subject, $email par exemple) ?

    Les fonctions ereg* sont dépréciées en faveur des fonctions preg_*

    Les variables $HTTP_REFERER, $REMOTE_ADDR, $HTTP_USER_AGENT et $PHP_SELF s'écrivent maintenant $_SERVER['HTTP_REFERER'], etc (rejoint la première remarque)

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    N'ayant jamais fait de PHP j'ai adapté un script de formulaire PHP/HTML (ici) à l'utilisation simple que je souhaite en faire.

    Je comprends que si Missing fields ! est retourné en permanence cela signifie bêtement qu'au moins une des variable suivantes $Vname, $message, $email, $subject est 'vide' en permanence. D'ailleurs pourquoi $Vname et non $name ? ou pourquoi pas $Vsubject au lieu de $subject ?

    Considérons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <tr><td>Subject</td><td><input type="text" name="subject" size="68" value="<?php echo trim(htmlentities($subject)) ?>" /></td></tr>

    Cela ne signifie-t-il pas qu'on affecte à la variable $subject le 'sujet' du message laissé par le visiteur ?
    Auquel cas, la variable $subject prend cette valeur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Parse Error...
    Par Anduriel dans le forum Langage
    Réponses: 5
    Dernier message: 09/10/2005, 03h23
  2. parse error
    Par Romain93 dans le forum C
    Réponses: 6
    Dernier message: 28/09/2005, 22h03
  3. je ne comprend pas un parse error
    Par bibi_64 dans le forum C
    Réponses: 3
    Dernier message: 21/09/2005, 15h00
  4. XML Parsing Error: not well-formed
    Par localhost dans le forum Valider
    Réponses: 5
    Dernier message: 16/06/2005, 15h20
  5. Parse error
    Par Sylvain James dans le forum XMLRAD
    Réponses: 2
    Dernier message: 02/02/2005, 11h55

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