Parse error.... php pour envoi formulaire

llaume25 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Alain_42 Messages postés 5413 Statut Membre -
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

  • 1
  • 2
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.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. flokocha Messages postés 1519 Statut Membre 281
     
    Salut

    Une variable php débute par le caractère $ et non le caractère §.
    0
  2. llaume25 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  3. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
  4. llaume200581 Messages postés 27 Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Alain_42 Messages postés 5413 Statut Membre 904
     
    <?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
  7. llaume200581 Messages postés 27 Statut Membre
     
    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. JooS Messages postés 2705 Statut Membre 228
       
      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
  8. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
  9. llaume200581 Messages postés 27 Statut Membre
     
    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
  10. llaume200581 Messages postés 27 Statut Membre
     
    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. JooS Messages postés 2705 Statut Membre 228
       
      Montre nous ton formulaire(html) !

      PS : Je dirai que t'as surement dû oublier l'attribut name de tes champs input !!!
      0
  11. llaume200581 Messages postés 27 Statut Membre
     
    <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. JooS Messages postés 2705 Statut Membre 228
       
      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
  12. llaume200581 Messages postés 27 Statut Membre
     
    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
  13. Freedomsoul Messages postés 538 Statut Membre 97
     
    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
  14. llaume200581 Messages postés 27 Statut Membre
     
    donc faut tout que change ?
    0
    1. JooS Messages postés 2705 Statut Membre 228
       
      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
  15. llaume200581 Messages postés 27 Statut Membre
     
    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
  16. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
  17. Freedomsoul Messages postés 538 Statut Membre 97
     
    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
  18. Alain_42 Messages postés 5413 Statut Membre 904
     
    c'est pourtant sur ce forum que j'ai trouvé l'info
    0
  19. llaume200581 Messages postés 27 Statut Membre
     
    alain_42 j'ai bien creer un fichier php.htaccess à la racine de mon site ben tjrs la même erreur
    0
  20. Alain_42 Messages postés 5413 Statut Membre 904
     
    ce n'est pas un fichier php.htaccess mais un fichier

    .htaccess sans extension

    il apparaitra en fichier caché dans ton ftp
    0
  21. llaume200581 Messages postés 27 Statut Membre
     
    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. JooS Messages postés 2705 Statut Membre 228
       
      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