0
    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);

    }

这是用户发送发布请求时的代码,但我无法弄清楚为什么它不起作用,用户向“发送”按钮发送垃圾邮件,并且在我的数据库中出现重复项,有什么想法吗?

4

2 回答 2

2

在 Post 之后重定向用户,以便客户端无法通过按 F5 重新发布数据:

header("Location: /submitted.php");
echo 'just sended'; // will the user never see
exit();

sumbitted.php:

exit('just sended');

注意:您不得在标题行之前过帐任何其他数据。

于 2012-12-12T17:20:48.200 回答
0

不要尝试通过会话来完成此操作,只需在插入您的信息之前查询您的数据库,查看带有一些唯一键(如他们的 IP 地址)的最后一篇文章,如果信息相同,则不要插入。

此外,如果您想确保它只是最近的插入,您可以存储一个时间戳,您不会阻止插入。

于 2012-12-12T17:21:10.967 回答