似乎无法让联系表单脚本工作

时间:2013-03-09 04:14:48

标签: php contact-form

带有PHP代码的Pastie:http://pastie.org/6427151

带有HTML表单的Pastie:http://pastie.org/6427155

知道为什么这不起作用?它吐出'请填写所有字段'。即使这些字段都填写正确。我对PHP知之甚少,所以它很可能很简单。我在另一个网站上使用相同的脚本,它在那里工作正常,我为什么感到困惑。

4 个答案:

答案 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)

首先,为要从表单提交数据的所有nameinputtextareaselect元素定义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>