HTTP/1.1 303 重定向以避免在刷新时重新提交


HTTP/1.1 303 Redirection to avoid resubmission on refresh

拜托,我需要你的帮助。 我正在我的网站上编写评论功能的脚本,并且我正在尝试将垃圾邮件减少到最低限度。我的问题/问题是,当用户/机器人(可能)提交评论时,我有此代码执行HTTP/1.1 303重定向到同一页面,以便当用户尝试刷新页面时,以前的评论不会重新提交。

这是否足以减少垃圾邮件。

感谢您的时间,耐心和答案。我非常感激。

          header("HTTP/1.1 303 See Other");
       header("Location: http://127.0.0.1/     main/forum/

我认为不会帮助你实现你的目标,reduce spamming你可以做到以下几点

A.检查页面是否已刷新然后重定向,这已经在这里进行了广泛的讨论:请参阅

PHP 刷新

二.为了防止适当的泛洪需要限制每个 IP 地址的请求秒数,请参阅

防止 PHP 脚本被淹没

编辑 1

您要求的非 OOP 版本:

$memcache = memcache_connect ( 'localhost', 11211 );
$runtime = memcache_get ( $memcache, 'floodControl' );
if ((time () - $runtime) < 2) {
    die ( "Die! Die! Die!" );
} 
else {
    echo "Welcome";
    memcache_set ( $memcache, "floodControl", time () );
}

这对提交表单的垃圾邮件或机器人没有影响。唯一有用的是通过按 F5(刷新页面)来避免意外重新提交,尽管通常通过 301 或 302 重定向来完成。

我现在在维基百科上读到:

HTTP

响应状态代码 303 请参阅其他是将 Web 应用程序重定向到新 URI 的正确方法,尤其是在执行 HTTP POST 之后。

这表明 303 是您遇到的正确 HTTP 响应。但大多数人可能仍然使用302。

简短回答:不。

长答案:不,重定向与垃圾邮件无关。垃圾邮件发送者正在使用完整的HTTP协议,其中各种状态代码(如303 See Other)是其中的一部分。任何HTTP客户端 - 垃圾邮件发送者与否 - 都能够处理这些。

真正有助于防止垃圾邮件的是显示一个辅助页面,该页面再次要求发布内容(如预览)。大多数垃圾邮件机器人都无法做到这一点,而且它也是用户友好的。