我正在学习php,有一本书里面有很多例子和练习。我正在做的一本书是关于发送电子邮件的。我把代码复制到了字母上,但我得到了一个错误:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:website2wwwsendscript.php on line 6
为什么会发生这种事,知道吗?
这是我的PHP脚本:
<?php
if(($_POST['sender_name']=="")||($_POST['sender_email']=="")||($_POST['message']=="")){
header("Location: sendemail.html");
exit;
}
$email = "Sender's name:t$_POST['sender_name']n";
$email .= "Sender's email:t$_POST['sender_email']n";
$email .= "Message:t$_POST['message']n";
$to = "stafford.king16@pgs.org.uk";
$subject = "did script work?";
$mailheaders = "From: Stafford King";
$mailheaders .= "Reply to: $_POST['sender_email']n";
mail($to, $subject, $email, $mailheaders);
?>
<html>
<head></head>
<body>
<h1>Email sent!</h1>
</body>
</html>
这是我的电子邮件输入表:
<html>
<head></head>
<body>
<form method = "post" action = "sendscript.php">
<p><strong>Your name:</strong><br />
<input type = "text" name = "sender_name" size = "30"</p>
<p><strong>Your email address:</strong><br />
<input type = "text" name = "sender_email" size = "30"</p>
<p><strong>Message:</strong><br />
<textarea name = "message" cols = "30" rows = "5" wrap = "virtual"></textarea></p>
<p><input type = "submit" name = "submit" value = "send email"></p>
</form>
</body>
</html>
谢谢大家:)
您需要将数组变量包装在大括号{}
中,或者将它们连接到字符串中:
选项1
$email = "Sender's name:t{$_POST['sender_name']}n";
选项2
$email = "Sender's name:t" . $_POST['sender_name'] . "n";
注意:
使用Dreamweaver(许可费)、NetBeans或Eclipse(均为开源和免费)等IDE会立即发现这种情况。试试其中一个,而不是Notepad或Notepad++。
$email = "Sender's name:t$_POST['sender_name']n";
不能很好地解决。使用
$email = "Sender's name:t{$_POST['sender_name']}n";
相反。或者,您可以连接或使用sprintf
:
$email = "Sender's name:t" . $_POST['sender_name'] . "n";
$email = sprintf("Sender's name:t%sn", $_POST['sender_name']);
您需要拆分连接:
$email = "Sender's name:t" . $_POST['sender_name'] . "n";
$email .= "Sender's email:t" . $_POST['sender_email'] . "n";
$email .= "Message:t" . $_POST['message'] . "n";
PHP无法像现在这样解析它。
将变量用大括号括起来或从双引号中去掉将有助于处理电子邮件正文,但不能解决解析错误。你的邮件头好像乱了。每行末尾都需要一个"\n"。将第一个$mailheader分配更改为:$mailheaders = "From: Stafford Kingn";