Syntax error, unexpected T_SL
Je suis assez nouveau dans le php et je suis en utilisant un script qui crée une fonction appelée la "mime_mailer" qui, pour l'essentiel, me permet d'utiliser PHP pour envoyer des e-mails qui peuvent être conçus avec des CSS au lieu d'être simplement en texte brut.
Encore, dans mon script d'inscription, j'essaie d'écrire du code qui envoie un CSS e-mail, mais j'obtiens un message d'erreur disant qu'il y a une erreur de syntaxe. Quelqu'un pourrait-il svp me renseigner sur ce point?
$subject = "Your Red-line Account";
$css = "body{ color: #090127; background-color: #f0f0f0; }";
$to = $usercheck;
//Message
$message =<<<END
<html>
<head>
<title>
Red-line
</title>
</head>
<body>
<p>
Hi $first_name,
</p>
<p>
Your Red-line account is almost complete. To finish, go to <a href='www.thered-line.com'>The Red-line</a> and enter your eight digit confirmation code.
</p>
<p>
Your confirmation code is: <b>$code</b>
</p>
<p>
Sincerely,
</p> <br />
<p>
The Red-line Operator
</p>
</body>
</html>
END;
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers
$headers .= "From: The Red-line <[email protected]>\r\n";
$headers .= "To: $first_name $last_name <$usercheck>\r\n";
// Mail it
require_once("function_mime_mailer.php");
mime_mailer($to, $subject, $message, $headers, NULL, $css);
}
Voici le code pour le "function_mime_mailer.php" fichier.
if(basename(__FILE__) == basename($_SERVER['PHP_SELF'])) send_404(); //stop http access to this file
function mime_mailer($to, $subject, $message, $headers = NULL, $attachments = NULL, $css = NULL)
{
if(!preg_match('/^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a- z]{2,6})$/', $to)) return FALSE;
if(preg_match('/<(html|head|body|div|a|h|p|table|br|img|b|hr|ol|ul|span|pre|i|form)[^>]*[^>]*>/i', $message)) $html = TRUE;
if(stristr($message, '<body')) $message = stristr($message, '<body');
$message = delete_local_links($message);
if(empty($headers)){
$headers = "MIME-Version: 1.0\n";
}else{
$headers.= "\nMIME-Version: 1.0\n";
}
if(empty($html)){
$result = plain_text($message);
}elseif(isset($html) and $html == TRUE){
if(!isset($css)) $css = NULL;
if(preg_match('/<img[^>]+>/i', $message)){
$result = multipart_related($message, $css);
}else{
$result = multipart_alternative($message, $css);
}
}
$result['message'] = delete_non_cid_images($result['message']);
if(!empty($attachments)){
$parts = attachments($attachments);
array_unshift($parts, implode('', $result));
$result = multipart_mixed($parts);
}
$headers = $headers.$result['headers'];
//print '<pre>'.htmlspecialchars($headers.$result['message']).'</pre>';exit;
if(mail($to, $subject, $result['message'], $headers)) return TRUE;
return FALSE;
}
?>
Post le message d'erreur indiquant le numéro de ligne et de définir que le numéro de ligne dans le code affiché
L'erreur est dans le script d'inscription. C'est dans la 6ème ligne. La ligne où la variable $message est défini. Où l' <<<la FIN est...
L'erreur est dans le script d'inscription. C'est dans la 6ème ligne. La ligne où la variable $message est défini. Où l' <<<la FIN est...
OriginalL'auteur Lance | 2011-03-24
Vous devez vous connecter pour publier un commentaire.
Ont un look à la Liste de l'Analyseur jetons.
T_SL
références à<<
.Vous ne devriez pas utiliser des tabulations ou des espaces avant d'utiliser
END;
. Jetez un oeil à cet avertissement énorme.Vous devriez changer de
<<END
retour à<<<END
. Vous ne devez supprimer les tabulations et des espaces sur la même ligne queEND;
.OriginalL'auteur Michiel Pater
Juste eu le même problème.
S'est avéré être le contenu sur la même ligne que mon ouverture HERDEOC
mauvais exemple
exemple correcte
Espère que cela aide quelqu'un d'autre!
Il est intéressant de souligner que même un caractère d'espace (ce qui peut être caché dans votre éditeur de texte) peuvent causer ce problème. ce un cerveau panpan jusqu'à ce que vous trouver.
OriginalL'auteur penner
Quelle version de php?
La syntaxe nowdoc n'est valable que depuis PHP 5.3.0.
Voir le manuel de:
http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc
OriginalL'auteur Costel Socianu
Une note de côté, mais pourrait bien aider quelqu'un: une mauvaise git merge peuvent être en cause. Considérer:
L'analyseur PHP, ce serait de produire la même erreur.
Source: je viens de bits 😉
OriginalL'auteur Kevin_Kinsey
Il y a un bug dans function_mime_mailer.php:
devrait être
aussi, si vous incluez le MIME-Version d'en-tête, puis la fonction comprendra une fois de plus, de manière à avoir deux d'entre eux.
OriginalL'auteur foens
Il a eu le même exactement le même problème mais le mien était parce que j'avais les espaces à la fin de mon heredoc sur la ligne du haut:
HTML;
Source: http://realtechtalk.com/_syntax_error_unexpected_T_SL_in_PHP_Solution-2109-articles
OriginalL'auteur Areeb Soo Yasir