Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 似乎无法使联系人表单脚本正常工作_Php_Contact Form - Fatal编程技术网

Php 似乎无法使联系人表单脚本正常工作

Php 似乎无法使联系人表单脚本正常工作,php,contact-form,Php,Contact Form,使用PHP代码粘贴: 使用HTML表单粘贴: 你知道为什么这样不行吗?它会弹出“请填写所有字段”,即使所有字段都填写正确。我对PHP知之甚少,所以它很可能很简单。不过,我在另一个网站上使用了相同的脚本,它在那里工作得很好,这就是我为什么感到困惑的原因。表单标记中的输入字段需要名称属性。name属性用作键,用于访问用户提交的$\u POST或$\u GET数组中的值 因此,您需要: <form ... method="post"> ... <input type="text" n

使用PHP代码粘贴:

使用HTML表单粘贴:

你知道为什么这样不行吗?它会弹出“请填写所有字段”,即使所有字段都填写正确。我对PHP知之甚少,所以它很可能很简单。不过,我在另一个网站上使用了相同的脚本,它在那里工作得很好,这就是我为什么感到困惑的原因。

表单标记中的输入字段需要名称属性。name属性用作键,用于访问用户提交的$\u POST或$\u GET数组中的值

因此,您需要:

<form ... method="post">
...
<input type="text" name="name" id="name" placeholder="Name" ... />
...
<input type="email" name="email" id="email" placeholder="Email" ... />
...
<textarea name="message" id="message" ... ></textarea>
还要确保仔细验证和清理您处理的所有userland提交的内容。

您需要在所有输入类型中定义name属性

name属性值与$\u POST相关,在定义name属性后,您可以获得$\u POST['name']的值。

您忘记为所有输入字段定义name属性

name属性指定元素的名称

name属性用于引用JavaScript中的元素,或在提交表单后引用表单数据

首先,为要从表单中提交数据的所有输入、文本区域、选择和按钮元素定义名称属性

我还建议您使用FILTER_VALIDATE_电子邮件标志,以最佳方式处理呈现给脚本的内容:

// If invalid, this will return nothing.
// If valid, the email address as a string.
function validateEmail($eamil) {
    return filter_var($email, FILTER_VALIDATE_EMAIL);
}

这是最佳实践,比您可以找到的脚本版本更安全。此函数还有其他值得使用的筛选和验证标志。

请注意,对于可能犯此错误的其他人,占位符属性不是表单元素默认值的楔形。如果您希望输入有一个默认值,您可以从表中的一行中为其指定该值,那么您必须将该值放入标记中,例如value=look ma,no hands!。占位符属性中可能包含的内容在提交时不会发送回您的脚本,它实际上只用于外观。我,嗯,做了一些编辑。我经常尝试做的事情是在元素开始之后加载type、name和id属性。有可能忘记并将两个相同的属性放在一个元素中,因此在阅读代码时更容易看到它们。哈哈,我就知道这会很简单。。。不知什么原因,我在想这就是“为了”在做什么。非常感谢,不仅仅是投入。文本区域、选择和按钮也要小心。你能告诉我有什么区别吗?这是不是让人们无法从脚本中接收它发送到的电子邮件?@Jared-你是说filter\u var?我不知道你所说的接收发送给他们的电子邮件是什么意思,除非你是说窥探用户浏览器和服务器之间的请求,这被称为中间人攻击,你这样做是因为你不信任来自userland的任何东西!!!并始终验证、比较和/或清理从userland到达服务器脚本的所有数据。这是为了通过代理保护您的服务器和站点的用户,这些用户可能会被XSS感染,或者他们的数据从您的数据库中被盗。
<input type="text" placeholder="Name" class="full" required name="name" id="name" />
<input type="text" placeholder="Name" name="name" class="full" required id="name" />
<input type="email" placeholder="Email" name="email" class="full" required id="email" />
<textarea id="message" cols="30" name="message" rows="10" class="full"></textarea>
// If invalid, this will return nothing.
// If valid, the email address as a string.
function validateEmail($eamil) {
    return filter_var($email, FILTER_VALIDATE_EMAIL);
}