如果完全相同的数据尚未发送,我将如何在PHP中检查?
这将禁止用户(意外地)在我的网站上发送两次具有相同数据的联系表单!
谢谢!
例如,可以序列化表单数据并将其存储在会话变量中。接收到表单数据后,首先检查会话中是否已经存在相同的数据。你也可以在表单中添加一个随机数作为隐藏的输入字段,它也存储在$_SESSION["rand"]中。在第一次提交时,检查随机数是否相等,然后在会话数组中删除(或更改)随机数。这样,一个表单只能使用一次,在第二次提交时,编号将会不同,并且不再被接受。
生成表单时:
$_SESSION["rand"] = rand();
并加上:
<input type='hidden' name='rand' value='{$_SESSION["rand"]}' />
收到后检查:
if ( $_SESSION["rand"] === $_POST["rand"]) {
$_SESSION["rand"] = false;
// continue with stuff...
当然,在这种布局下,单个用户只能同时打开单个表单,因为打开第二个表单将覆盖随机数。更好的方法是为每个表单创建单独的会话键和值组合,这样两个表单就不会相互覆盖。