不能让我的PHP表格发送

时间:2016-02-15 11:41:28

标签: php html mail-form

我试图制作一个电子邮件表格,我一直在寻找一个很好的方法来做到这一点。问题是我得到了这个"解析错误:语法错误,意外'<<' (T_SL)第12行和第34行;当我点击发送。谁能看出问题是什么?

<?php

$to = '.........@gmail.com';
$subject='hi there you';
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$message = <<<< EMAIL
Hi! My name is $name.
$message
From $name
my email is $email

EMAIL;

$header ='$email';
if($_POST){
mail($to, $subjects, $message, $header);
$feedback = 'Thankyou for your email';
echo $feedback;} ?>

HTML

<form action="process.php" method="post">
<ul>
<li>
    <label for="name">Name:</label>
    <input type="text" name="name" id="name" />
</li>
    <li>
    <label for="email">Email:</label>
    <input type="text" name="email" id="email" />
</li>
<li>
<label for="topic">Topic:</label>
<select>
    <option value="optiona">optiona</option>
    <option value="optionb">optionb</option>
    <option value="optionc">optionc</option>
</select>
</li>
<li>
<label for="message">your message:</label>
<textarea id="message" name="message" cols="42" rows="9"></textarea>
</li>
<li><input type="submit" value="Submit"></li>
</form>

2 个答案:

答案 0 :(得分:2)

您错误地使用了HEREDOCS语法。

// Remove one < from below line
<<<EMAIL
Hi! My name is $name.
$message
From $name
my email is $email // Remove one line space from below line
EMAIL;

<<<运算符之后,提供标识符,然后提供换行符。字符串本身跟随,然后再次使用相同的标识符来关闭引用。

结束标识符必须从该行的第一列开始。此外,标识符必须遵循与PHP中任何其他标签相同的命名规则:它必须仅包含字母数字字符和下划线,并且必须以非数字字符或下划线开头。

注意: -

1)非常重要的是要注意带有结束标识符的行必须不包含其他字符,分号(;)除外。这尤其意味着标识符可能没有缩进,并且在分号之前或之后可能没有任何空格或制表符。

2)认识到结束标识符之前的第一个字符必须是本地操作系统定义的换行符也很重要。这是在UNIX系统上的\ n,包括Mac OS X.结束分隔符后面也必须跟一个换行符。

3)如果此规则被破坏且结束标识符不是“干净”,则不会将其视为结束标识符,PHP将继续查找。

4)如果在当前文件结束之前未找到正确的结束标识符,则会在最后一行产生解析错误。

5)Heredocs不能用于初始化类属性。从PHP 5.3开始,此限制仅对包含变量的heredoc有效。

希望它会对你有所帮助:)。

答案 1 :(得分:1)

您正在尝试使用HEREDOC语法,但您还没有完全正确。

来自PHP文档(http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc):

&#34;分隔字符串的第三种方法是heredoc语法:&lt;&lt;&lt;。在此运算符之后,提供标识符,然后提供换行符。字符串本身跟随,然后再次使用相同的标识符来关闭引号。&#34;

所以你的代码应该是:

$message = <<<EMAIL
Hi! My name is $name.
$message
From $name
my email is $email

EMAIL;