在尝试自定义使用PHP表单发送的内容布局时,我很难使用PHP的语法。我试图在电子邮件的不同行上显示每个输入...下面是我的PHP代码:
<?php
// Section 1.
if( $_POST['name_here_goes'] == '' ){
// Section 2.
if ( !empty($_POST['firstName']) && !empty($_POST['lastName']) && !empty($_POST['emailAddress']) ) {
$to = '####@############.com';
$subject = 'NEW Contact Form';
$message = $_POST['firstName'] "\n\n" $_POST['lastName'];
$headers = 'From: ' . $_POST['emailAddress'] . ' ' . "\r\n" .
'Reply-To: ' . $_POST['emailAddress'] . '' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
// Section 3.
if ( mail($to, $subject, $message, $headers) ) {
echo 'Email sent. Congrats!';
}
}else{
echo 'Please fill all the info.';
}
}else{
// Section 4.
echo 'Spam detected!';
}
这是我的HTML代码:
<form name="contact" method="post" action="sell.php">
<div>
<input type="text" name="firstName" value="" placeholder="First Name" />
<input type="text" name="lastName" value="" placeholder="Last Name" />
<input type="text" name="emailAddress" value="" placeholder="Email" />
</div>
<div>
<input type="text" class="robotic" name="name_here_goes" value="" />
<input type="submit" name="submit" value="Submit"/>
</div>
</form>
答案 0 :(得分:1)
你看到这一行:
$message = $_POST['firstName'] "\n\n" $_POST['lastName'];
它在POST阵列之间缺少连接,并且错误报告设置为捕获和显示,会引发你的注意:
解析错误:语法错误,意外&#39;&#34; \ n \ n&#34;&#39;第x行的/path/to/file.php中的(T_CONSTANT_ENCAPSED_STRING)
将其更改为:
$message = $_POST['firstName'] . "\n\n" . $_POST['lastName'];
^ ^ added
但是,你需要稍微处理你的标题,你不应该像这样直接传递你的POST数组,你可能会受到XSS注入的攻击。</ p>
参考文献:
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
另外,正如评论中所述。 PHPmailer / Swiftmailer已经安装好,可以用来处理纯文本和HTML格式的邮件。
修改强>
&#34;抱歉延迟回复..这有效!但是,如何在提交后将其指向不同的页面? - 尼克&#34;
您可以使用标题http://php.net/manual/en/function.header.php并将echo 'Email sent. Congrats!';
替换为标题,但不能同时使用这两个标题。
if ( mail($to, $subject, $message, $headers) ) {
header('Location: http://www.example.com/');
exit;
}
手册中的示例:
header('Location: http://www.example.com/');
exit;
确保您没有在标头之前输出。如果您收到通知,请咨询:
您还可以参考以下内容获取更多重定向方法: