Parse error: syntax error, unexpected T_VARIABLE

Petit nouveau ! | 2 Messages

10 déc. 2012, 01:56

Boujour,

Voila je pense que le titre est claire :)

j'ai crée, à l'aide d'un tuto' trouvé sur internet, un formulaire.
Mais avant de le modifier, j'ai voulus le tester sur mon site internet. Tout se passe bien jusqu'au moment de cliquer sur "envoyer", ou la, je me retrouve avec un message d'erreur.
Parse error: syntax error, unexpected T_VARIABLE in /mnt/104/sdb/e/1/lesamisdamandine/formulaire/traitement.php on line 25
La ligne 25 corespond a cette ligne.
   echo $message; die();
Voici mon code complet du fichier traitement.php.
<?php
$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement 
remplis :<br/><br/>";
$msg_ok = "Votre demande a bien été prise en compte.";
$message = $msg_erreur;
define('MAIL_DESTINATAIRE','[email protected]'); // remplacer par votre email
define('MAIL_SUJET','Message du formulaire de example.com');

// vérification des champs
if (empty($_POST['civilite'])) 
$message .= "Votre civilité<br/>";
if (empty($_POST['nom'])) 
$message .= "Votre nom<br/>";
if (empty($_POST['adresse'])) 
$message .= "Votre adresse<br/>";
if (empty($_POST['codepostal'])) 
$message .= "Votre code postal<br/>";
if (empty($_POST['ville'])) 
$message .= "Votre ville<br/>";
if (empty($_POST['comments'])) 
$message .= "Votre message<br/>";

// si un champ est vide, on affiche le message d'erreur et on stoppe le script
if (strlen($message) > strlen($msg_erreur)) {
   echo $message; die();
}

// sinon c'est ok => on continue
foreach($_POST as $index => $valeur) {
  $$index = stripslashes(trim($valeur));
}

$interets = $_POST['interets'];
$sqlinterets = '';
for ($i=0; $i<count($interets); $i++)
{
  $sqlinterets .= $interets[$i];
  $sqlinterets .= ', ';
}

//Préparation de l'entête du mail:
$mail_entete  = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['nom']} "
             ."<{$_POST['email']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['email']."\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";

// préparation du corps du mail
$mail_corps  = "Message de : $civilite $nom\n";
$mail_corps .= "Adresse : $adresse, $codepostal $ville, $pays\n";
$mail_corps .= "Ses centres d'intérêts : $sqlinterets\n\n\n";
$mail_corps .= $comments;

// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {
  //Le mail est bien expédié
  echo $msg_ok;
} else {
  //Le mail n'a pas été expédié
  echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}

?>
J'ai cherché sur internet d'ou pouvez venir cette erreur, je n'ai pas trouvé quelque chose qui peut s'appliquer a mon problème.

Que doit-je faire pour ne plus avoir se message d'erreur ?

Merci d'avance.

ViPHP
xTG
ViPHP | 7331 Messages

10 déc. 2012, 10:02

Il ne s'attend pas à cela à cette ligne, donc l'erreur est sur la ligne du dessus.
Sauf que j'ai beau la relire je vois pas d'erreur. :mrgreen:

Un caractère non imprimable peut être ?
Supprimes cette partie et réécris la à la main pour être sûr.
Ou tu peux aussi utiliser un éditeur tel que Notepad++ qui permet d'afficher les caractères non imprimables.

Mammouth du PHP | 702 Messages

10 déc. 2012, 13:01

c'est normal que ces variables ne soient pas initialisées ?
$civilite, $nom, $adresse, $codepostal, $ville, $pays, $comments
?

ViPHP
xTG
ViPHP | 7331 Messages

10 déc. 2012, 13:56

c'est normal que ces variables ne soient pas initialisées ?
$civilite, $nom, $adresse, $codepostal, $ville, $pays, $comments
?
"Initialisées" ici :
// sinon c'est ok => on continue
foreach($_POST as $index => $valeur) {
  $$index = stripslashes(trim($valeur));
}

Mammouth du PHP | 702 Messages

10 déc. 2012, 14:31

autant pour moi je suis allé trop vite...

Petit nouveau ! | 2 Messages

10 déc. 2012, 15:34

j'utilise déjà Notepad++, comment tu fait pour afficher les caractères non imprimables ?

ViPHP
xTG
ViPHP | 7331 Messages

10 déc. 2012, 15:49

Dans affichage tu as un sous-menu pour cela.
Je ne me souviens plus du nom exact.