-2

用 PHP 代码粘贴:http: //pastie.org/6427151

使用 HTML 表单粘贴:http: //pastie.org/6427155

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

4

4 回答 4

3

form的标记中的输入字段需要name属性。该name属性用作访问用户提交的$_POSTor数组中的值的键。$_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']

还要确保仔细验证和清理您处理的所有用户态提交的内容。

于 2013-03-09T04:18:05.030 回答
1

首先,为所有要从表单提交数据的 、 和 元素定义属性nameinputtextareaselectbutton

我还建议您使用filter_var()标志FILTER_VALIDATE_EMAIL最好地处理呈现给您的脚本的内容:

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

这是最佳实践,并且比您可以找到的脚本版本更安全。还有其他有价值的过滤器和验证标志可用于此功能。

于 2013-03-09T04:26:21.053 回答
0

您需要定义name所有input类型的属性。

<input type="text" placeholder="Name" class="full" required name="name" id="name" />

name属性值与 相关$_POST,定义后name attribute可以得到 的值$_POST['name']

于 2013-03-09T04:18:27.850 回答
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>
于 2013-03-09T04:18:53.043 回答