如何阻止用户发送帖子请求

时间:2012-12-12 17:16:52

标签: php

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

    }

这是我的代码,当用户发送帖子请求时,但我无法弄清楚为什么它不起作用,用户垃圾按钮"发送"并在我的数据库中出现重复,任何想法?

2 个答案:

答案 0 :(得分:2)

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

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

<强> sumbitted.php:

exit('just sended');

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

答案 1 :(得分:0)

不要尝试使用会话来完成此操作,只需在插入信息之前查询数据库,查看最后一个帖子并使用一些唯一的密钥(如他们的IP地址),如果信息相同,则不要插入。

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