有没有办法让按下F5或任何刷新按钮的用户被移动到另一个页面,而不是刷新用户想要的页面?
类似于:
If (refresh){
goto "link to hopme page"
}
如果可以的话,有没有办法让我在某个页面上不允许刷新?
我有一些人一直在不停地刷新网页,这会消耗我的带宽。因为这是一个游戏网站,我不想禁止他们的IP地址。
有没有办法让按下F5或任何刷新按钮的用户被移动到另一个页面,而不是刷新用户想要的页面?
类似于:
If (refresh){
goto "link to hopme page"
}
如果可以的话,有没有办法让我在某个页面上不允许刷新?
我有一些人一直在不停地刷新网页,这会消耗我的带宽。因为这是一个游戏网站,我不想禁止他们的IP地址。
也许您应该将精力集中在减少页面使用的带宽上。探索图像压缩、页面优化和缓存等领域。
mod_deflate
和mod_gzip
可供使用。正确配置后,它们将压缩文本内容(如HTML、Javascript、CSS)。如果您正在使用PHP,可以尝试使用ob_start("ob_gzhandler");
。 - Gavsession_start();
if($_SESSION['hasbeenhere'] == 1)
{
// Page refreshed
}
else
{
$_SESSION['hasbeenhere'] = 1;
}
$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.
}
if(isset($_SESSION["pagename-LAST_VIEWED"])) {
v = $_SESSION["pagename-LAST_VIEWED"])
if(time() - v < 15) {
// user is refreshing more than once per 15 seconds
// send them something else and die
}
}
$_SESSION["pagename-LAST_VIEWED"] = time();
为什么你想要这样做呢?
但是,没有一种方法可以始终有效地阻止这个问题。
我不确定这是否可行,但你能否使用JavaScript监听按键事件,在按下F5键时执行你想要的操作。
我猜你可以这样做:
session_start();
if (isset($_SESSION['visited'])) {
header("Location: http://the.page/you/want");
} else {
$_SESSION['visited'] = true;
}
我刚找到了一个非常简单的解决方案。
对于我来说,在处理所有 $_POST 信息并将我需要的信息保存到 $_SESSION 变量之后,我会执行以下操作:
$_SESSION['admin']['PID']=session_id();
$_SESSION['admin']['user_user']=$_POST['user'];
$_SESSION['admin']['user_pass']=$_POST['pass'];
$_SESSION['admin']['last_access_time']=time();
if($_SERVER['REQUEST_METHOD']==="POST")
{
header("LOCATION:".$_SERVER['PHP_SELF']."?p=redirected");
}