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. envoi en mode non html

    nomme cette page xxxxxx.php

    cela répond à ta question ou toput est sur la même page
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<title>Ton titre de page</title>
    </head>
    <body>
    <!-- 
    
    la tu peux mettre ton taleau image 
    
    -->
    <?php
    			//partie traitement de l'envoi du mail
    	////fonctions php (on met les fonctions au début du script, elles peuvent être appelées depuis n'importe ou dans la page
    //fonction verif adresse mail
    function VerifierAdresseMail($adresse){
    	$Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';
    	if(!preg_match($Syntaxe,$adresse)){
    		//si pas valide on retourne true
    		return true;
    	}else{
    		return false;
    	}
    }
    
    	//fin fonctions php		
    ////init des varaibles de travail
    $affichage_formulaire=true;
    ////
    
    		//envoi du mail
    if(isset($_POST) AND !empty($_POST)) {
    	extract($_POST);
    	$errorMsgs = '';
    	//-------------
    	if(!isset($nom) OR empty($nom)) {
    		$errorMsgs .= 'Vous avez oublié 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 />';
    	}
    	// Verif mail---
    	if(!isset($email) OR empty($email)) {
    		$errorMsgs .= 'Vous avez oubliez l\'email.<br />';
    	}elseif(VerifierAdresseMail($email)){
    	//si mail pas ok alors message d'erreur
    		$errorMsgs .= 'Adressse email non valide !.<br />';
    	}
    	//fin verif mail
    
    	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 />';
    	}
    	//-------------- fin des verifs
    	if(empty($errorMsgs)) {
    		//il n'y a pas d'erreur
    		//donc on ne reaffichera pas le formulaire
    		$affichage_formulaire=false;
    		
    		$entete = "From: \"Ton nom\"<ton_adresse_mail_a_toi>"."\n"; //car le mail est envoyé depuis le serveur qui heberge ton site
    		$entete .= "Reply-To: ".$email."\n";
    		$entete .= "MIME-Version: 1.0"."\n";
    		$entete .= "Content-Type: text/plain; charset=\"iso-8859-1\""."\n";
    		$entete .= "Content-Transfer-Encoding: 8bit"."\n"; 
    		
    		$destinataire = 'lxxxxxxxxxxxxx@xxxxxxx.xx';
    		$sujetMail = 'Formulaire de contact';
    
    		$msg = "Une nouveau formulaire est arrivé". "\n";
    		$msg .= "Nom : ".$nom."\n";
    		$msg .= "Prenom : ".$prenom."\n";
    		$msg .= "Email : ".$email."\n";
    		$msg .= "Sujet : ".$sujet."\n";
    		$msg .= "Message : ".$message;
    
    		$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;
    	}
    }
    
    if($affichage_formulaire){ //sous entendu =true
    ?>
    	<!-- 
    	
    	ici tu mets ton formulaire html
    	et dans la balise form tu mets pour que la page s'appelle elle même
    	<form name="form1" method="post" action="" >
    	
    	-->
    <?php
    
    } //fin if affichage formulaire
    ?>	
    
    </body>	
    </html>
    0
    1. regardes sur Google la fonction mail de php tu verra qu'il n'y a pas tous ces parametres tu as mis:

      mail($destinataire, $sujetMail, $msg, $entete, $message)

      que fait ce $mesage à la fin ??

      et pourquoi vouloir envoyer en HTML, \n fait très bien les retours à la ligne si l'entête est codée correctement
      0
      1. c $message quand jlenleve y marche mais pk??????
        0
        1. Pas besoin d'avoir un niveau avancée en anglais pour pouvoir comprendre les messages d'erreur.
          :)
          0
      2. je cherchen'y a t-il pas un soucis avec free
        0
        1. Je revient vous voir concernant l'envoi de mai au format
          erreur
          Warning: mail() [function.mail]: Nombre de parametres incorrects in /mnt/112/sda/1/c/marilynsenechal/php/formulairephp.php on line 69
          Pb avec l'envoi du mail

          $destinataire = 'llaume200581@free.fr';
          $sujetMail = 'Formulaire de contact';

          $message ='<html><head><title>Un titre ici</title></head><body>Un message de test</body></html>';
          $msg = 'Une nouveau formulaire 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';
          $entete .='Content-Type: text/html; charset="iso-8859-1"'."\n";

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

          if($env_mail) {
          echo "Le mail a bien été envoyé.";
          }
          0
          1. Joos:
            A ma connaissance, une page HTML ne peut communiquer directement avec un script PHP
            Et pourtant si ==>
            dans ta page html si tu as un formulaire dont action="une_page.php" cela appeler bien une page php en lui envoyant les valeurs du formulaire

            par contre llaume200581:
            je crée page2.html j'ai deux tableau
            -tableau 1 avec image
            -tableau2 j'aimerai que s'affiche dans ce tableau "le mail à bien été envoyé"
            possible ?

            NON
            Il faut que ta page soit en php et tu mets tout sur la page:
            - le tableau image
            - le script qui traite l'envoi du mail
            - le formulaire qui ne devra plus être affiché après l'envoi du mail
            - mais remplacé par le message envoi du mail OK
            0
            1. Communiquer, c'est envoyer et recevoir, parler et comprendre, sinon ça ne sert a rien de savoir faire qu'une seule tache parmi ces deux dernières :) !
              une page html peut envoyer des informations, mais ne peut en recevoir !
              0
          2. je me suis mal exprimé je reprends
            dans une page1.html j'ai deux tableaux
            -tableau1 avec une image
            -tableau 2 mon formulaire html avec le bouton envoyer qui a comme action formulaire.php
            je clique sur envoyer il s'affiche sur une page blanche "le mail à bien été envoyé"
            normal tu me diras
            je crée page2.html j'ai deux tableau
            -tableau 1 avec image
            -tableau2 j'aimerai que s'affiche dans ce tableau "le mail à bien été envoyé" qui provient de mon"formulairephp.php
            possible ?
            0
            1. A ma connaissance, une page HTML ne peut communiquer directement avec un script PHP !

              Donc tu reconvertit page2.html en page2.php, et la, peut être que tu pourra faire quelque chose, et dans ce cas, page2.php deviendra formulaire.php (car non nécessaire d'avoir les deux pages) !
              0
          3. j'aimerai rediriger dans un tableau html après envoi du formulaire
            j 'explique :
            dans une page1.html j'ai deux tableaux
            -tableau1 avec une image
            -tableau 2 mon formulaire html avec le bouton envoyer qui a comme action formulaire.php
            je clique sur envoyer il s'affiche sur une page blanche "le mail à bien été envoyé"
            normal tu me diras
            je crée page2.html j'ai deux tableau
            -tableau 1 avec image
            -tableau2 j'aimerai que s'affiche dans ce tableau "le mail à bien été envoyé"
            possible ?
            0
            1. Ben il suffit de faire la redirection vers la page2.html, et d'écrire dans le tableau 2 le message que tu veux !
              0
          4. si tu lit bien tout ce qu j'ai mis, tu verrais que c 'est exactement ce que g mis et ça marche d'ailleurs mais ce que je n'arrive pas à faire c 'est ce que ce soit rediriger dans un tableau html ciblé ?
            0
            1. Ben j'avais compris que la redirection ne fonctionnait pas, car j'ai déjà eu un problème avec la fonction header, et il fallait mettre un espace entre le ":" et l'url, un espace que t'as omis de mettre, mais si ça marche sans, alors tant mieux !

              appart ça !
              ce soit rediriger dans un tableau html ciblé ?
              Explique, parce tableau html ciblé ne veut rien dire pour moi ...
              0
          5. je m'occupe d'une autre chose pour l'instant
            j'aimerai rediriger dans un tableau html bien ciblé après envoi du formulaire php
            alors g bien trouvé des codes sur les forum qui marche
            Remplace la ligne :

            if($envoi) echo"Le mail a bien été envoyé !";

            par

            if($envoi) header("location:ma_page_html.html");

            mais je n'arrive pas ce que ce soit rediriger dans un tableau html ciblé
            si quelqu'un pourrait et je suis pas un mec du genre à ne pas regarder dans les forums
            si je demande c que jsuis coincé
            merci
            0
            1. header('Location: ma_page_html.html');
              0
          6. ok je vais chercher encore merci pour ton aide
            0
            1. j'abuse peut-être mais jsuis depuis 2 jous sur l'envoi htlm serieux pouvez vs m'aider
              voici la mise en forme du mail lors de la réception
              Une nouvelle question est arriv?e \nNom : ccccccccccccccccccccc \nPrenom : cvx \nEmail : guillonet@hotmail.fr \nSujet : cccccccccccccc\nMessage : cccccccccccccc
              possible d'enlever le \n et possible de revenir à la ligne pour chaque il me semblait que <u>i> suffisait ?
              genre
              un nouveau formulaire vient d' arrivé

              non :cccccccccccccccccccc
              prénom :cccccc
              Email ; gui...
              ..............
              voila mon script php
              <?php
              /////fonctions php (on met les fonctions au début du script, elles peuvent être appelées depuis n'importe ou dans la page
              //fonction verif adresse mail
              function VerifierAdresseMail($adresse)
              {
              $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';
              if(!preg_match($Syntaxe,$adresse))
              return true;
              else
              return false;
              }

              /////
              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 />';
              }
              // Verif mail---
              if(!isset($email) OR empty($email)) {
              $errorMsgs .= 'Vous avez oubliez l\'email.<br />';
              }elseif(VerifierAdresseMail($email)){
              //si mail pas ok alors message d'erreur
              $errorMsgs .= 'Adressse email non valide !.<br />';
              }
              //fin verif mail

              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 = 'lxxxxxxxxxxxxx@xxxxxxx.xx';
              $sujetMail = 'Formulaire de contact';

              $msg = 'Une nouveau formulaire 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;
              }
              }
              ?>nv
              0
              1. Ben ça se voit que t'as pas vraiment chercher avec les deux sites que je t'ai citer plus haut, pourtant c'est clair !
                0
            2. g compris qu'il faut envoyer l email au format html mais sérieux c du chinois ?
              0
              1. Ben suffit d'ajouter l'option dans les headers qui précise que l'email est au format html !
                Puis le contenu de l'email doit être en html, or, tu peut utiliser les balises ...
                0
            3. En fait je viens de recevoir un email hihihi
              merci alain et joo_s pour m'avoir aider
              néanmoins voici la mise en forme du mail lors de la réception
              Une nouvelle question est arriv?e \nNom : ccccccccccccccccccccc \nPrenom : cvx \nEmail : guillonet@hotmail.fr \nSujet : cccccccccccccc\nMessage : cccccccccccccc
              possible d'enlever le \n et possible de revenir à la ligne pour chaque il me semblait que <br> suffisait ?
              genre
              un nouveau formulaire vient d' arrivé

              non :cccccccccccccccccccc
              prénom :cccccc
              Email ; gui...
              ..............

              merci je vous fout la paix après
              0
            4. bonjour
              alors ca marche nikel mais le gros hic c'est que je ne reçoit rien dans ma boite email alors qu'il me dit bien le mail à été envoyé ?
              0
              1. Vérifie dans le dossier SPAM(Courrier indésirable) de ta boite !
                0
            5. quand clique sur envoyer page blanche et 'Adressse email non valide
              0
              1. function VerifierAdresseMail($adresse)    
                {    
                   $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';    
                   if(!preg_match($Syntaxe,$adresse))    
                      return true;    
                   else    
                     return false;    
                }


                Ajoute un "!" avant le preg_match, comme ci-dessus !

                Si ça marche toujours pas, c'est que ça vient de la version de PHP que t'utilise, parce que chez moi ça marche normal !

                Essaye en créant un fichier .htaccess, et mets ce qui suit dedans !
                SetEnv PHP_VER 5


                PS : Il faut mettre ce fichier a la racine de ton site !
                0
            6. <?php
              		/////fonctions php (on met les fonctions au début du script, elles peuvent être appelées depuis n'importe ou dans la page
              //fonction verif adresse mail
              function VerifierAdresseMail($adresse) 
              { 
                 $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#'; 
                 if(preg_match($Syntaxe,$adresse)) 
                    return true; 
                 else 
                   return false; 
              }
              
              /////
              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 />';
              }
              //  Verif mail---
              if(!isset($email) OR empty($email)) {
              	$errorMsgs .= 'Vous avez oubliez l\'email.<br />';
              }elseif(VerifierAdresseMail($email)){
              //si mail pas ok alors message d'erreur
              	$errorMsgs .= 'Adressse email non valide !.<br />';
              }
              //fin verif mail
              
              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. je suis completement paumé dans mon script j'essaye je doit pas mettre au bonne endroit pourrait tu m'indiquer ou dois mettre la fontion
                $adresse=htmlentities($_POST['adresse']);
                if(VerifierAdresseMail($adresse))
                echo '<p>Votre adresse est valide.</p>';
                else
                echo '<p>Votre adresse e-mail n\'est pas valide.</p>';
                0
                1. Salut !
                  Ben écoute, pour éviter tout problème, mieux vaux que t'essaye de trouve une solution pour activer(utiliser) la version 5 de PHP ... car tôt ou tard, tu va rencontrer d'autres problème, et peut être même des failles de sécurité ...
                  0
              2. rien y fait alain g tout bien fait
                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