if($_POST)
{
if($this->session->userdata('just_sended'))
{
echo 'just sended';
exit();
}
$newdata = array(
'just_sended' => true
);
$this->session->set_userdata($newdata);
}
else
{
$newdata = array(
'just_sended' => false
);
$this->session->set_userdata($newdata);
}
这是我的代码,当用户发送帖子请求时,但我无法弄清楚为什么它不起作用,用户垃圾按钮"发送"并在我的数据库中出现重复,任何想法?
答案 0 :(得分:2)
在发布后重定向用户,以便客户端无法通过按F5重新发布数据:
header("Location: /submitted.php");
echo 'just sended'; // will the user never see
exit();
<强> sumbitted.php:强>
exit('just sended');
注意:您不得在标题行之前发布任何其他数据。
答案 1 :(得分:0)
不要尝试使用会话来完成此操作,只需在插入信息之前查询数据库,查看最后一个帖子并使用一些唯一的密钥(如他们的IP地址),如果信息相同,则不要插入。
此外,如果您想确保它不是最近插入的,那么您可以存储一个时间戳。