2013-06-02 60 views
0

我有一个每10秒刷新一次的页面。 当页面刷新时将用户踢出页面并发送给auth.php。 With刷新从页面注销用户

if (!isset($_SERVER['HTTP_REFERER'])) 
{ 
header("location: auth.php"); 
exit; 
} 

我需要这个函数来防止直接访问url。 但是刷新后用户得到注销的问题,刷新完成后如何使该功能失效,并且防止直接从url中访问

我的代码为flow。

<html> 
<body> 
<?php 


$page = $_SERVER['PHP_SELF']; 
$sec = 10; 
header("Refresh: $sec; url=$page"); 



if (!isset($_SERVER['HTTP_REFERER'])) 
{ 

header("location: auth.php"); 
exit; 
} 
?> 

</body> 
</html> 
+0

您必须在任何HTML输出之前使用您的标题。否则,它不会工作。 – vikingmaster

+0

好吧,我会这样做。我需要如何防止刷新后用户注销。 – hadi

+0

PHP文档的内容如下:“将用户代理引用到当前页面的页面地址(如果有的话),由用户代理设置,并非所有的用户代理都会设置,有的可以修改HTTP_REFERER作为一个特征,简而言之,它不可能真正被信任。“ - http://php.net/manual/en/reserved.variables.server.php –

回答

0

使用

if(!isset($_GET['logout'])) 
{ 
    if(!isset($_SERVER['HTTP_REFERER'])) 
    { 
     header("location: auth.php"); 
     exit; 
    } 
    else 
    { 
    $page = $_SERVER['PHP_SELF']; 
    $sec = 10; 
    header("Refresh: $sec; url=$page"); 
    } 
} 
else 
{ 
    print "/*Error in refreshing*/"; 
} 

希望这将帮助!

+0

首先感谢你的代码。你的代码正在运行,用户没有注销。令人耳目一新。但是当我从URL访问页面时与我打开。多数民众赞成在一个问题解决了第二个问题。当我从url访问时,我应该重定向到auth.php但不会发生。 – hadi

+0

@hadi那么你可以将'else if'语句插入第一个'if'语句。 –

+0

@hadi我编辑了我的答案。 –