2013-06-02 81 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我編輯了我的答案。 –