2013-02-01 42 views
1

我有一個腳本來保護網頁,以便只有我的網站的註冊成員訪問某些網頁說我稱之爲memberprotect.php,並在該文件本身我添加一個腳本,將保持sesion活動爲360秒,如果網頁在360秒內不活動,我想將頁面重定向到logintimeout.php。但我的問題是腳本自動採取成員頁面loin.php而不是logintimeout.php請幫助或sugest我應該做的。粘貼下面的整個腳本會員超時與成員保護

<? 
session_start(); 
// set timeout period in seconds 
$inactive = 360; 
// check to see if $_SESSION['timeout'] is set 
if(isset($_SESSION['timeout'])) { 
$session_life = time() - $_SESSION['timeout']; 
if($session_life > $inactive) 
    { session_destroy(); 
header('Location:logintimeout.php'); } 
} 
$_SESSION['timeout'] = time(); 
if(!session_is_registered(myusername)) 
{ 
header('location:login.php'); 
} 
?> 
+0

爲什麼使用session_is_registered(自php5.3以來的過時函數)?你如何在會話中設置myusername?你也應該使用<?php開放標籤。 – sglessard

回答

0

當您發出位置標題時,應該停止腳本執行任何其他操作。例如:

<?php 
header("location:http://www.google.co.uk/"); 
exit(); 
?> 
+0

我無法退出腳本,因爲我在memberprotect腳本中包含了超時腳本,默認情況下會通過將其轉移到login.php來保護成員區域。但如果我的sesion超時,那麼我想重定向到logintimeout.php,如果我設置退出,那麼腳本將不檢查成員保護 – shijumax

+0

我不真正遵循你所包含的內容......但如果你不能設置位置標題後立即退出,請將位置設置爲變量。然後,在稍後的腳本中,檢查是否設置了該變量 - 如果是,退出。 – Tom

+0

把exit();在花括號裏面解決了我的問題,現在我的memberprotect和我的超時腳本都在同一個文件中工作。謝謝if($ session_life> $ inactive) {session_destroy(); header('Location:logintimeout.php');出口(); } } $ _SESSION ['timeout'] = time(); – shijumax