2015-10-12 60 views
0

我試圖讓幾個會話變量在30分鐘超時/銷燬,但儘可能使用最小但有效的代碼。一次刪除/計時/脫出多個php會話變量

現在我有兩個解決方案如下:

if(isset($_SESSION['fullname']) && (time() - $_SESSION['fullname'] > 1800)) { 
    session_unset(); 
    session_destroy(); 
} 
$_SESSION['fullname'] = time(); 

session_start(); 
    $user_inactive = 1800; 
    $user_session = time() - $_SESSION['current_user']; 
    if($user_session > $user_inactive) { 
    session_destroy(); 
    header("location: logout.php"); 
    } 
    $_SESSION['current_user']=time(); 

這兩項工作的罰款單變量,但我試圖得到這個destory在幾個變量同時如:

  1. 姓名
  2. Phonenumber來
  3. EMAILADDRESS

等等...

可能有人好心地勸我在去這個問題,以摧毀多個變量,而無需最好的辦法爲每個變量重複我的代碼。

謝謝。

+0

'session_destroy()'將結束您的會話,將其全部刪除。 – Darren

+0

最好讓整個會話超時而不是清除單個變量。部分清除會話將是一個噩夢來維護。 – user2182349

+0

我確實想過僅僅使用session_destroy()就可以了,但是這會影響到其他會話,我需要進行的一些操作將會變得無效。即時通訊只是在講我的代碼,我懷疑可能使用一個cookie來傳遞我需要的其他值,但還沒有完全發揮作用,但還是比任何想法或想法都感激不盡。謝謝大家。 – NewLearner

回答

2

NewLeaner爲您知道從我的最後一個問題我回答你,我還在學習自己,所以我很遠,從有經驗的基礎知識,但是我我自己的應用程序和as Darren mentioned in a previous comment的編碼過程中克服這樣的問題,有一個數組中的變量值列表將允許您根據匹配會話變量值的數組值來取消相應的會話。

以下是您的會話變量值的例子:

  1. 全名會話:$_SESSION['fullname']
  2. Phonenumber來會話:$_SESSION['Phonenumber']
  3. EMAILADDRESS會議:$_SESSION['Emailaddress']

$unset = array('Fullname','Phonenumber','Emailaddress'); 
foreach($unset as $sessions) { 
    unset($_SESSION[$sessions]); 
} 

這將取消設置並刪除上述會話,例如姓名,電話號碼,Emailaddress和任何其他您希望添加到陣列中的會話。

您可以使用單引號和逗號分隔向數組添加更多值,以下是添加更多值的示例。

$unset = array('Fullname','Phonenumber','Emailaddress', 'Variable_4', 'Variable_5', 'Variable_6', 'Variable_7', 'And so on...'); 

希望這有助於再次!

+0

是的,我注意到達倫的原創評論,我很欣賞這個縮寫和解釋,並感謝您的時間。 – NewLearner

+1

您可以獲得我的+1信用並更深入地解釋答案。良好的工作:) – Darren