2011-10-01 47 views
0
<? 
if($_POST["Login"]) 
{ 
    if (GetRightPassword($_POST["emaillogin"],$_POST["passwordlogin"])) 
    { 
     $_SESSION["email"] = $_POST["emaillogin"]; 
     $_SESSION["password"] = $_POST["passwordlogin"]; 
     echo "Keeping logged in: ".$_POST["keeploggedin"]; 
     if ($_POST["keeploggedin"]) 
     { 
      setcookie("email", $_POST["emaillogin"], time()+60*60*24*365); 
      setcookie("password", $_POST["passwordlogin"], time()+60*60*24*365); 
     } 
    } 
    else 
    { 
     echo "Invalid username/password!"; 
    } 
} 

if($_POST["Logout"]) 
{ 
    $_SESSION["email"] = null; 
    $_SESSION["password"] = null; 
    setcookie("email", "", time()-900000); 
    setcookie("password", "", time()-900000); 
} 

echo $_COOKIE["email"]; 
?> 

這是唯一的代碼(據我所知,我編碼6個月前的最小值,但我很確定沒有更多)寫入cookie或會話。PHP:Cookie不復位

當我單擊註銷時,它會消除會話變量,因此當頁面加載時,我退出了 - 再次更改頁面或刷新,然後再次登錄。

任何想法爲什麼?當我更改頁面時,登錄不會被髮送,所以我不知道爲什麼。

如果有幫助,echo $ _COOKIE [「email」];即使只是將它設置爲「」,也​​能回覆你的電子郵件。

編輯

我剛剛找到與此相關的更多的代碼。

此代碼運行之前該代碼。

if(isset($_COOKIE["email"])) 
{ 
$_SESSION["email"] = $_COOKIE["email"]; 
$_SESSION["password"] = $_COOKIE["password"]; 
} 
+2

你實際存儲在cookie中的密碼? (只是檢查。)無論如何,嘗試使用'session_destroy()',並且不要將它們設置爲'null',而是'unset()'它們。而且,如果在任何地方都沒有'session_start()',則需要添加它。 – Ryan

+0

會議的運作良好。這只是餅乾不是不安定的。我添加了一些我在瀏覽包含文件時發現的更多代碼。 –

回答

1

在您的所有Cookie中設置路徑和域名。這可以確保它不像一個和withoud www

檢查文檔如何做到這一點:http://nl2.php.net/setcookie

這可能是根本原因,您的問題

+0

我沒有在我的任何cookies中指定它,所以我不明白這會導致什麼。 –

+0

我不幸有過類似的事情,而且我有和你一樣的解釋。不知怎的,它確實解決了我的問題。 –