Parse error.... php pour envoi formulaire

Bonjour,
j'ai un soucis concernant un script en php pour l'envoi d'un formulaire :
Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE or '$' in /mnt/112/sda/1/c/marilynsenechal/php/formulairephp.php on line 3
et franchement j'arrive pas à voir ce qui ne va pas mes variables sont bien déclarer et la syntaxe est bonne non?
j'envois mon script en espérant une aide pour faire marcher mon formulaire svp
<?php
if(isset(§_POST) && isset(§ _POST['nom']) && isset(§ _POST['prenom']) && isset(§ _POST['email']) && isset(§ _POST['sujet']) && isset(§ _POST['message'])){
extract(§_POST);
if(!empty(§nom) && !empty(§prenom) && !empty(§email) && !empty(§sujet) && !empty(§message)){
§destinataire="llaume200581@free.fr";
§prenom
§sujet="Formulaire de contact";
§msg="Une nouvelle question est arrivée \n
Nom : §nom \n
Prenom : §prenom \n
Email : §email \n
Message : §message";
§entete="From: §nom \n Reply-To: §email";
mail (§destinataire, §prenom, §sujet, §msg, §entete);
echo "Le mail a bien été envoyé."
}
else{
echo "Vous n'avez pas rempli tous les champs.";
}
}
?>

39 réponses

Résumé de la discussion

Un script PHP destiné à l’envoi d’un formulaire signale une erreur de syntaxe: Parse error, unexpected T_STRING, expected T_VARIABLE ou '$' sur la ligne 3, liée à des variables mal nommées. Des erreurs proviennent de l’usage du symbole § à la place de $, de noms de variables comme §nom et de vérifications isset($_POST) mal formulées, provoquant l’arrêt du script. Plusieurs réponses conseillent de corriger les noms des champs et d’utiliser un bouton d’envoi permettant d’accéder à $_POST['envoyer'], tout en renforçant les vérifications et la sécurité des données. En pratique, il faut supprimer les caractères problématiques, mapper correctement nom, prénom, email, sujet et message, et effectuer une vérification préalable des données avant l’envoi.

Bobot (l’IA à votre service)
  1. Salut

    Une variable php débute par le caractère $ et non le caractère §.
    0
    1. merci mais
      g tout modifier mais il me met toujours la même erreur en ligne 3
      ?????????????????????????????????????????????

      <?php

      if(isset($_POST) && isset($ _POST['nom']) && isset($ _POST['prenom']) && isset($ _POST['email']) && isset($ _POST['sujet']) && isset($ _POST['message'])){
      extract($_POST);
      if(!empty($nom) && !empty($prenom) && !empty($email) && !empty($sujet) && !empty($message)){
      $destinataire="llaume200581@free.fr";
      $prenom
      $sujet="Formulaire de contact";
      $msg="Une nouvelle question est arrivée \n
      Nom : $nom \n
      Prenom : $prenom \n
      Email : $email \n
      Message : $message";
      §entete="From: $nom \n Reply-To: $email";
      mail ($destinataire, $prenom, $sujet, $msg, $entete);
      echo "Le mail a bien été envoyé."
      }
      else{
      echo "Vous n'avez pas rempli tous les champs.";
      }
      }
      0
      1. Voir commentaires:
        <?php 
        //tu avait un espace entre tes $ et _POST
        if(isset($_POST) && isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['email']) && isset($_POST['sujet']) && isset($_POST['message'])){ 
         extract($_POST); 
         if(!empty($nom) && !empty($prenom) && !empty($email) && !empty($sujet) && !empty($message)){ 
          $destinataire="llaume200581@free.fr"; 
        
          //$prenom  //que fait ce $prenom tout seul ? 
          $sujet="Formulaire de contact"; 
          $msg="Une nouvelle question est arrivée \n 
          Nom : $nom \n 
          Prenom : $prenom \n 
          Email : $email \n 
          Message : $message"; 
          //tu n'avait pas rectifié § par $ 
          $entete="From: $nom \n "; 
          $entete.="Reply-To: $email \n"; 
          //mail ($destinataire, $prenom, $sujet, $msg, $entete); //un argument de trop $prenom dans  la fct mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] ) 
          $env_mail=mail ($destinataire, $sujet, $msg, $entete); 
          //pour donner le message il faut verifier que mail s'est bien passé 
          if($env_mail){ 
           echo "Le mail a bien été envoyé." 
          }else{ 
           echo "Pb avec l'envoi du mail"; 
          } 
         } 
         else{ 
          echo "Vous n'avez pas rempli tous les champs."; 
         } 
        }
        0
        1. excusez moi, je vous remercie tout d'abord de m'aider
          le blème now c'est qu'il me met lorsque que je modifie le script comme précedement un nouvelle erreur en ligne 19 on avance du moins vous avancez
          une aide serait encore la bienvenue
          Parse error: syntax error, unexpected T_ELSE, expecting ',' or ';' in /mnt/112/sda/1/c/marilynsenechal/php/formulairephp.php on line 19
          <?php
          if(isset($_POST) && isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['email']) && isset($_POST['sujet']) && isset($_POST['message'])){
          extract($_POST);
          if(!empty($nom) && !empty($prenom) && !empty($email) && !empty($sujet) && !empty($message)){
          $destinataire="llaume200581@free.fr";
          $sujet="Formulaire de contact";
          $msg="Une nouvelle question est arrivée \n
          Nom : $nom \n
          Prenom : $prenom \n
          Email : $email \n
          Message : $message";
          $entete="From: $nom \n ";
          $entete.="Reply-To: $email \n";
          //mail ($destinataire, $sujet, $msg, $entete); ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
          $env_mail=mail ($destinataire, $sujet, $msg, $entete);

          17 if($env_mail){
          18 echo "Le mail a bien été envoyé."
          19 }
          else{
          echo "Pb avec l'envoi du mail";
          }
          }
          else{
          echo "Vous n'avez pas rempli tous les champs.";
          }
          }
          ?>
          0
          1. <?php
            if(isset($_POST) && isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['email']) && isset($_POST['sujet']) && isset($_POST['message'])){
            	extract($_POST);
            	if(!empty($nom) && !empty($prenom) && !empty($email) && !empty($sujet) && !empty($message)){
            		$destinataire="llaume200581@free.fr";
            		$sujet="Formulaire de contact";
            		$msg="Une nouvelle question est arrivée \n
            		Nom : $nom \n
            		Prenom : $prenom \n
            		Email : $email \n
            		Message : $message";
            		$entete="From: $nom \n ";
            		$entete.="Reply-To: $email \n";
            		//mail ($destinataire, $sujet, $msg, $entete); ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
            		$env_mail=mail ($destinataire, $sujet, $msg, $entete);
            
            		 if($env_mail){
            			echo "Le mail a bien été envoyé."; //la il manquait un ;
            		}
            		else{
            			echo "Pb avec l'envoi du mail";
            		}
            	}
            	else{
            		echo "Vous n'avez pas rempli tous les champs.";
            	}
            }
            ?>
            0
            1. alors dsl mais j'ai bien modifier comme précedemment
              now il me fait aucune erreur impeccable mais quand je cjique sur envoyer il m'ouvre une page blanche sans echo est en fait ya rien dans mon courrier
              alain_42 mon sauveur quand dites vous ?
              0
              1. Salut !
                Vers quelle page renvoi ton formulaire, et quelle méthode utilise t'il ?

                <?php
                if(isset($_POST) AND !empty($_POST)) { 
                	extract($_POST);
                	$errorMsgs = '';
                	//-------------
                	if(!isset($nom) OR empty($nom)) {
                		$errorMsgs .= 'Vous avez oubliez le nom.<br />';
                	}
                	elseif(strlen($nom) > 40) {
                		$errorMsgs .= 'Nom incorrect.<br />';
                	}
                	//---
                	if(!isset($prenom) OR empty($prenom)) {
                		$errorMsgs .= 'Vous avez oubliez le prénom.<br />';
                	}
                	elseif(strlen($prenom) > 40) {
                		$errorMsgs .= 'Prénom incorrect.<br />';
                	}
                	//---
                	if(!isset($email) OR empty($email)) {
                		$errorMsgs .= 'Vous avez oubliez l\'email.<br />';
                	}
                	elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                		$errorMsgs .= 'Email incorrect.<br />';
                	}
                	//---
                	if(!isset($sujet) OR empty($sujet)) {
                		$errorMsgs .= 'Vous avez oubliez le sujet.<br />';
                	}
                	elseif(strlen($sujet) > 200) {
                		$errorMsgs .= 'Sujet trop long.<br />';
                	}
                	//---
                	if(!isset($message) OR empty($message)) {
                		$errorMsgs .= 'Vous avez oubliez le message.<br />';
                	}
                	elseif(strlen($message) > 2000) {
                		$errorMsgs .= 'Message trop long.<br />';
                	}
                	//--------------
                	if(empty($errorMsgs)) {
                		$destinataire = 'llaume200581@free.fr';
                		$sujetMail = 'Formulaire de contact';
                		
                		$msg = 'Une nouvelle question est arrivée \n';
                		$msg .= 'Nom : '.$nom.' \n';
                		$msg .= 'Prenom : '.$prenom.' \n';
                		$msg .= 'Email : '.$email.' \n';
                		$msg .= 'Sujet : '.$sujet.'\nMessage : '.$message;
                		
                		$entete = 'From: $nom \n';
                		$entete .= 'Reply-To: '.$email.'\n';
                		
                		$env_mail = mail($destinataire, $sujetMail, $msg, $entete);
                
                		if($env_mail) {
                			echo "Le mail a bien été envoyé.";
                		}
                		else {
                			echo "Pb avec l'envoi du mail";
                		}
                	}
                	else {
                		echo $errorMsgs;
                	}
                }
                ?>
                0
            2. remplaces cette ligne
              if(isset($_POST) AND !empty($_POST)) {

              par

              if(isset($_POST['envoyer'])) {


              et verifies que dans ton formulaire tu ait bien le bouton submit comme ceci:

              <input type="submit" name="envoyer" value="Envoyer" />


              et dans la balise form:

              <form name="form1" method="post"  action="formulairephp.php" >
              0
              1. slt alain_42 quelle belle journéé pour du php !
                en fait cette ligne que tu me dit de remplacer n'existe pas dans mon script
                remplaces cette ligne
                if(isset($_POST) AND !empty($_POST)) {

                par

                if(isset($_POST['envoyer'])) {
                0
                1. pour joo_s
                  la méthode utiliser est Post et renvoi bien sur llla page formulairephp
                  g essayé ton code quand je clique sur envoyer avec toutes mes variables rempli il m'ouvre une page blanche avec Vous avez oubliez le nom.
                  Vous avez oubliez le prénom.
                  Vous avez oubliez l'email.
                  Vous avez oubliez le sujet.
                  Vous avez oubliez le message.
                  alors que tout est rempli ?????????????????
                  0
                  1. Montre nous ton formulaire(html) !

                    PS : Je dirai que t'as surement dû oublier l'attribut name de tes champs input !!!
                    0
                2. <form id="form1" name="form1" method="post" action="../php/formulairephp.php"mailto;llaume200581@free.fr;">
                  <table width="323" border="0" align="center">
                  <tr>
                  <td width="317"><div align="justify"><span class="Style12">Nom : </span></div></td>
                  </tr>
                  <tr>
                  <td><div align="justify">
                  <input name="textfield" type="text" size="53" />
                  </div></td>
                  </tr>
                  <tr>
                  <td><div align="justify"><span class="Style12">Prénom : </span></div></td>
                  </tr>
                  <tr>
                  <td><div align="justify">
                  <input name="textfield2" type="text" size="53" />
                  </div></td>
                  </tr>
                  <tr>
                  <td><div align="justify"><span class="Style12">Email : </span></div></td>
                  </tr>
                  <tr>
                  <td><div align="justify">
                  <input name="textfield3" type="text" size="53" />
                  </div></td>
                  </tr>
                  <tr>
                  <td><div align="justify"><span class="Style12">Sujet : </span></div></td>
                  </tr>
                  <tr>
                  <td><div align="justify">
                  <input name="textfield4" type="text" size="53" />
                  </div></td>
                  </tr>
                  <tr>
                  <td><div align="justify"><span class="Style12">Message : </span></div></td>
                  </tr>
                  <tr>
                  <td><div align="justify"><span class="Style12">
                  <textarea name="textarea" cols="50" rows="5"></textarea>
                  </span></div></td>
                  </tr>
                  </table>
                  <table width="317" border="0" align="center">
                  <tr>
                  <td width="151"><div align="center"><img src="../image/souris accueil.jpg" width="133" height="46" /></div></td>
                  <td width="150">
                  <div align="left">
                  <input type="submit" name="Submit" value="Envoyer" />
                  </div></td>
                  </tr>
                  </table>
                  <p class="Style2"> </p>
                  </form>
                  0
                  1. 1 - Enlève "mailto;llaume200581@free.fr;" de l'attribut "action", tu dois mettre seulement le nom de la page ou le script php se trouve.

                    2 - Tout tes champs "input" se nomment "textfield", donc c'est normal que lors de l'envoi, tes variiables n'existent pas !

                    Donc, pour le nom par exemple, tu dois mettre ceci !
                    <input name="nom" type="text" size="53" /> 
                    ça donnera naissance a la variable $_POST['nom']

                    Pour le prénom, tu dois avoir ...
                    <input name="prenom" type="text" size="53" /> 
                    Ce qui donnera naissance a la variable $_POST['prenom']

                    Etc ...
                    0
                3. g tout modifier comme ta ditet Fatal error: Call to undefined function: filter_var() in /mnt/112/sda/1/c/marilynsenechal/php/formulairephp.php on line 23
                  0
                  1. C'est pourtant clair, ta fonction : filter_var() est indéfinie !

                    Tu utilises une version de PHP trop vieille: php.net/manual/fr/function.filter-var.php
                    0
                    1. donc faut tout que change ?
                      0
                      1. Oui, mets a jour ton wampserver ou Easyphp !
                        Et donc ça veut dire que tu travaille en local(sur ton PC), donc tu ne pourra non plus utiliser la fonction "mail", car elle doit être configuré avant d'être utilisé !
                        Sinon, si tu travaille pas en local, et si tu ne force pas l'utilisation d'une ancienne version de PHP, alors ton hébergeur est loin d'être a jour (bizarre) ...
                        0
                    2. en fait je suis pas doué comme vs
                      je travail avec dreamweaver v.8
                      je travail pas en local directement en ligne
                      heberge sous free mon site est en ligne déjà ya plus que le formulaire qui marche pas
                      0
                      1. pour forcer le php5 chez free:

                        tu fait un fichier .htaccess dans lequel tu mets simplement
                        php 1


                        et tu le pose à la racine de ton hebergement
                        0
                        1. Ouaip, je crois bien que free n'est pas encore passé en PHP 5 ? pas sur... ça fait longtempsque j'ai pas vu... mais bon ça signifie qu'il va falloir vérifier manuellement le mail !
                          Cherche sur internet => Google : PHP 4 verification mail
                          0
                          1. c'est pourtant sur ce forum que j'ai trouvé l'info
                            0
                            1. alain_42 j'ai bien creer un fichier php.htaccess à la racine de mon site ben tjrs la même erreur
                              0
                              1. ce n'est pas un fichier php.htaccess mais un fichier

                                .htaccess sans extension

                                il apparaitra en fichier caché dans ton ftp
                                0
                                1. freedomsoul g essaye avec du php 4 ci contre quand je clique il me met adresse incorrect pourtant bonne
                                  ca me soul freedom je commence à m'enerver tout seul
                                  <?php
                                  if(isset($_POST) AND !empty($_POST)) {
                                  extract($_POST);
                                  $errorMsgs = '';
                                  //-------------
                                  if(!isset($nom) OR empty($nom)) {
                                  $errorMsgs .= 'Vous avez oubliez le nom.<br />';
                                  }
                                  elseif(strlen($nom) > 40) {
                                  $errorMsgs .= 'Nom incorrect.<br />';
                                  }
                                  //---
                                  if(!isset($prenom) OR empty($prenom)) {
                                  $errorMsgs .= 'Vous avez oubliez le prénom.<br />';
                                  }
                                  elseif(strlen($prenom) > 40) {
                                  $errorMsgs .= 'Prénom incorrect.<br />';
                                  }
                                  //---
                                  if(!isset($email) OR empty($email)) {
                                  $errorMsgs .= 'Vous avez oubliez l\'email.<br />';
                                  }
                                  function EmailOK($nlmail)

                                  {

                                  return( ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_'a-z{|}~]+'.

                                  '@'.

                                  '[-!#$%&\'*+\\/0-9=?A-Z^_'a-z{|}~]+\.'.

                                  '[-!#$%&\'*+\\./0-9=?A-Z^_'a-z{|}~]+$',

                                  $nlmail) );

                                  }

                                  //si mail pas ok alors message d'erreur

                                  if(!EmailOK($nlmail)) {echo "adresse E-Mail incorrecte"; exit;}
                                  //---
                                  if(!isset($sujet) OR empty($sujet)) {
                                  $errorMsgs .= 'Vous avez oubliez le sujet.<br />';
                                  }
                                  elseif(strlen($sujet) > 200) {
                                  $errorMsgs .= 'Sujet trop long.<br />';
                                  }
                                  //---
                                  if(!isset($message) OR empty($message)) {
                                  $errorMsgs .= 'Vous avez oubliez le message.<br />';
                                  }
                                  elseif(strlen($message) > 2000) {
                                  $errorMsgs .= 'Message trop long.<br />';
                                  }
                                  //--------------
                                  if(empty($errorMsgs)) {
                                  $destinataire = 'llaume200581@free.fr';
                                  $sujetMail = 'Formulaire de contact';

                                  $msg = 'Une nouvelle question est arrivée \n';
                                  $msg .= 'Nom : '.$nom.' \n';
                                  $msg .= 'Prenom : '.$prenom.' \n';
                                  $msg .= 'Email : '.$email.' \n';
                                  $msg .= 'Sujet : '.$sujet.'\nMessage : '.$message;

                                  $entete = 'From: $nom \n';
                                  $entete .= 'Reply-To: '.$email.'\n';

                                  $env_mail = mail($destinataire, $sujetMail, $msg, $entete);

                                  if($env_mail) {
                                  echo "Le mail a bien été envoyé.";
                                  }
                                  else {
                                  echo "Pb avec l'envoi du mail";
                                  }
                                  }
                                  else {
                                  echo $errorMsgs;
                                  }
                                  }
                                  ?>
                                  0
                                  1. Voici une fonction pour vérifier l'email ...
                                    https://www.commentcamarche.net/faq/855-php-verifier-le-format-d-une-adresse-mail

                                    Tu peux aussi créer ou utiliser d'autres fonctions, pour vérifier le nom et prénom (alphabétique) !
                                    0
                                • 1
                                • 2