如果尚未发送完全相同的数据,我将如何检查PHP?
这将禁止用户(意外地)在我的网站上使用相同的数据两次发送联系表单。!
谢谢!
答案 0 :(得分:1)
例如,您可以序列化表单数据并将其存储在会话变量中。收到表单数据后,首先检查会话中是否已存在相同的数据。 您还可以将一个随机数作为隐藏输入字段添加到表单中,该字段也存储在$ _SESSION [“rand”]中。在第一次提交时,检查随机数是否相等,然后在会话数组中删除(或更改)。这样,一个表单只能使用一次,在第二次提交时,数字会有所不同,不再被接受。
生成表单时:
$_SESSION["rand"] = rand();
并添加表格:
<input type='hidden' name='rand' value='{$_SESSION["rand"]}' />
收到后,请检查:
if ( $_SESSION["rand"] === $_POST["rand"]) {
$_SESSION["rand"] = false;
// continue with stuff...
当然,使用此布局,单个用户只能同时打开单个表单,因为打开第二个表单将覆盖随机数。 更好的方法是为每个表单创建单独的会话密钥和值组合,因此两个表单不会互相覆盖。
答案 1 :(得分:0)
您可以存储用户上次在会话中提交内容的时间,然后添加“冷却时间”,如下所示:
$_SESSION['last_submitted'] = time();
然后在验证用户输入时,只需检查自上次提交以来经过的时间。
if(isset($_SESSION['last_submitted']) || $_SESSION['last_submitted'] +
30 < time())
{
echo 'Valid';
}
然后只需将30改为你想要的冷却时间。
你仍然可以提交相同的数据,但由于“冷却时间”,因此意外的用户不会成为问题。