2013-03-27 143 views
1

我正在整合一個登錄頁面(固定用戶名和密碼)。php緩存vs cookie

一旦用戶登錄,他將被重定向到另一頁'x'(在我的服務器上)。

但是,當用戶關閉瀏覽器(或標籤)並重新打開它時,他將自動被引導到頁面'x',而不需要詢問用戶名和密碼。

但是,如果我從我的瀏覽器(Firefox)設置中刪除cookie,事情將恢復正常。刪除緩存不會執行任何操作。

我知道我需要插入幾行代碼才能刪除cookie。 我的問題是,

  1. 這是100%餅乾問題?或者我需要防止存儲到本地緩存呢?
  2. Cookie預防發生在登錄或重定向期間的哪個級別?
  3. 一旦我被重定向到'x'頁面,那麼是否有註銷按鈕可以退出重定向的會話?

下面是我的代碼。

<?php 
session_start(); 
if(isset($_POST['username'])){ 
if(($_POST['username'] == "user") && ($_POST['password'] == "pass")) 
{ 
    $_SESSION['secured'] = "Secured"; 
}else{ 
    echo "Wrong username and password. <p> 
    <a href='?'retry</a>"; 
} 
} 

if(!isset($_SESSION['secured'])) 
{  
echo "<form method='post'> 
Username: <input type='text' name='username' maxlength='10' /><br> 
Password: <input type='password' name='password' maxlength='10' /><br> 
<input type='submit' value='login' /> 
</form>"; 
}else{ 
?> 

<html> 
<head> 
<title>Session Login</title> 
</head> 
<body> 
<p>redirecting.... 
<meta HTTP-EQUIV="REFRESH" content="1; url=http://x.php"> 
</p> 
</body> 
</html> 

<?php 
} 
?> 
+0

後,終止會話,你存儲Cookie('的setcookie()')地方? – Luceos 2013-03-27 10:14:47

+0

@Luceos no。我使用與上面完全相同的代碼。 – tony9099 2013-03-27 10:17:40

+0

您正在使用哪種瀏覽器,並在關閉瀏覽器和選項卡時發生這種「繼續」行爲? – Luceos 2013-03-27 10:18:58

回答

1

如果你可以創建一個logout.php頁面會破壞會話:

unset($_SESSION['secured']); 
header('Location: login.php'); 
exit; 

只需訪問該頁面,登錄將被銷燬。

如果您希望會話在預定時間段後超時,可以使用與in this example所示代碼類似的內容。

如果你想在用戶登陸x.php

<?php 
session_start(); 

//First make sure that they're allowed access to x.php 
if(!isset($_SESSION['secured'])){ 
    //They shouldn't be here. 
    header('Location: login.php'); //Redirect back to your login page 
    exit; 
} 

//Ok, user is obviously logged in. Unset the session variable so that they can only view this page once (unless they login again) 
unset($_SESSION['secured']); 

//Show content of x.php 
+0

wayne,如果我可以在重定向後讓會話完成,我更喜歡它。這怎麼可能? – tony9099 2013-03-27 10:02:12

+0

我編輯了我的答案。 – 2013-03-27 10:09:02

+0

wayne,unset($ _ SESSION ['secured']);可以。謝謝。 – tony9099 2013-03-27 10:19:10