从 PHP 表单收到的电子邮件内容显示为“0”

Email received from PHP form shows "0" for the content

嘿,这是我的第一个 PHP 联系表。一切正常,我收到了电子邮件,但是电子邮件的内容显示为“0”。

我的PHP代码是:

$content = $_POST['name'] + $_POST['message'];

name为表单元素的名称(人名),message为消息元素的名称。当我执行 print_r.

时,两者都显示在 PHP 数组中

问题出在邮件内容上!我遵循了关于如何执行此操作的 Udemy 教程,并仔细检查了所有内容。谁能帮帮我??

谢谢!!!!

在 PHP 中您需要使用“.”为了合并字符串。 "+" 用于 JS

正如其他人所指出的,"plus sign" 不会连接字符串;使用 "dot" 代替。

$content = $_POST['name'] . $_POST['message'];

此外,"plus sign" 导致 PHP 解释器执行 type coercion,这就是您的电子邮件字面意思是 "zero" 的原因。您已经成功地将两个 POST 变量变成了一个数字(尽管您肯定不是第一个这样做的人!)

从您提交的代码来看,您似乎是在尝试获取表单提交者的姓名和他们的消息,并将其组合成一个字符串,该字符串将放置在您的电子邮件正文中。

突出的主要问题是您尝试连接(组合)字符串的方式。在 PHP 中,the concatination operation 是句点(“.”)。使用您当前的代码,它会尝试添加两个字符串,例如数字,这就是您在电子邮件正文中遇到 0 的原因。

让我们采用您当前的代码,并应用该修复:

$content = $_POST['name'] . $_POST['message'];

其次,让我们看一下 $content 变量的实际输出。如果我提交名称 "Jon" 并且我的消息是 "Hello, friends!" 以及您现在的代码,我们最终会得到:

JonHello,Friends!  

为了解决这个问题,让我们添加一个冒号和一个 space 来表示用户说的是这条消息:

$content = $_POST['name'] . ': ' . $_POST['message'];

现在,我们应该输出 $content 变量,我们会看到:

Jon: Hello, Friends!

请记住,我们添加的冒号和 space 可以替换任何其他字符串。

例如,我们可以稍微修改我们的连接,为我们的文本添加一点风味,并让用户 "say" her/his name:

$content = $_POST['name'] . 'says: "' . $_POST['message'] .'"';

此代码在输出时会产生:

Jon says: "Hello, friends!"

Grand,希望对您有所帮助。如果您还有其他问题,请告诉我。