带有PHP代码的Pastie:http://pastie.org/6427151
带有HTML表单的Pastie:http://pastie.org/6427155
知道为什么这不起作用?它吐出'请填写所有字段'。即使这些字段都填写正确。我对PHP知之甚少,所以它很可能很简单。我在另一个网站上使用相同的脚本,它在那里工作正常,我为什么感到困惑。
答案 0 :(得分:3)
form
标记中的输入字段需要name
个属性。 name
属性用作访问用户提交的$_POST
或$_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>
然后使用每个name
(区分大小写)访问:
$name = $_POST['name']; // not $_POST['Name'], or $_GET['name']
还要确保仔细验证并清理您处理的所有用户提交的内容。
答案 1 :(得分:1)
首先,为要从表单提交数据的所有name
,input
,textarea
和select
元素定义button
个属性。
我还建议您使用带有FILTER_VALIDATE_EMAIL
标记的filter_var()
来处理呈现给您脚本的内容:
// If invalid, this will return nothing.
// If valid, the email address as a string.
function validateEmail($eamil) {
return filter_var($email, FILTER_VALIDATE_EMAIL);
}
这是 最佳做法 和 更安全 ,而不是您可以找到的脚本版本。此功能还有其他有用的过滤器和验证标志。
答案 2 :(得分:0)
您需要在所有name
类型中定义input
属性。
<input type="text" placeholder="Name" class="full" required name="name" id="name" />
name
属性值与$_POST
相关,定义name attribute
后,您可以获得$_POST['name']
的值。
答案 3 :(得分:0)
您忘记为所有输入字段定义name attributes
。
name attribute
指定<input>
元素的名称。
name attribute
用于引用 JavaScript 中的元素,或用于在提交表单后引用表单数据。
<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>