阻止人们刷新页面

yaa*_*man 5 php webpage refresh

反正我是否能让它工作,所以任何按下F5或任何刷新按钮的人都会被移动到另一个页面,而不是刷新用户想要的页面?

就像是 :

If (refresh){

  goto "link to hopme page"

}
Run Code Online (Sandbox Code Playgroud)

如果没有,那么我不允许在某个页面上刷新?

我有一些人只是不停地刷新,它正在扼杀我的带宽.这是一个游戏网站,所以我不想禁止ip.

Gav*_*Gav 12

也许您应该专注于减少页面使用的带宽.探索图像压缩,页面优化和缓存的领域.

  • 好决定.如果您的主机使用Apache服务器,很可能您可以使用`mod_deflate`和`mod_gzip`.配置正确,这些将压缩文本内容(如HTML,Javascript,CSS).如果您使用的是PHP,可以查看`ob_start("ob_gzhandler");`. (2认同)

Tyl*_*ter 8

session_start();
if($_SESSION['hasbeenhere'] == 1)
{
 // Page refreshed
}
else
{
   $_SESSION['hasbeenhere'] = 1;
}
Run Code Online (Sandbox Code Playgroud)

如果此人未启用Cookie,则会失败.如果有人转到另一个页面并返回,它将显示为刷新.

总的来说,你不能以肯定的方式做到这一点,但这是阻止某人两次看到同一页面的一种方法.

由于你的评论,如果你想阻止人们按F5 200次,试试这个.

$page = $_SERVER['REQUEST_URI'];
// Defaults
if(!isset($_SESSION[$page]['count']))
{
    $_SESSION[$page]['count'] = 1;
    $_SESSION[$page]['first_hit'] = time();
    $_SESSION[$page]['banned'] = false;
}
else
{
    $_SESSION[$page]['count']++; // Increase the counter
}

// If person is banned, end script
if($_SESSION[$page]['banned'] == true)
{
    die();
}

if($_SESSION[$page]['first_hit'] < time() - 30)
{
    $_SESSION[$page]['count'] = 1; // Reset every 30 seconds
}

if($_SESSION[$page]['count'] > 100)
{
    $_SESSION[$page]['banned'] = true; 
    // Ban if they hit over 100 times in 30 seconds.
}
Run Code Online (Sandbox Code Playgroud)