无法让我的 php 表格发送

cant get my php form to send

我正在尝试制作电子邮件表格,并且我一直在寻找一种好方法来做到这一点。问题是当我点击发送时,我得到了这个 "Parse error: syntax error, unexpected '<<' (T_SL) on line 12"。有人能看出是什么问题吗?

<?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>

您正在尝试使用 HEREDOC 语法,但您的语法不太正确。

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

"A third way to delimit strings is the heredoc syntax: <<<. After this operator, an identifier is provided, then a newline. The string itself follows, and then the same identifier again to close the quotation."

因此您的代码应为:

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

EMAIL;

您错误地使用了 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)如果这个规则被打破,结束标识符不是"clean",它不会被认为是结束标识符,PHP会继续寻找。

4) 如果在当前文件结束前没有找到正确的结束标识符,最后一行将导致解析错误。

5) Heredocs 不能用于初始化 class 属性。自 PHP 5.3 起,此限制仅对包含变量的 heredocs 有效。

希望对您有所帮助:)