2014-10-17 45 views
0

在我的PHP項目,我想添加一個用戶記得我checkbox讓大家可以選擇保持登錄狀態:PHP:記住,保持登錄狀態,無法正常工作

到現在爲止我做我的正常的日誌中這樣的:

public function loginUser($psMail, $psPwd, $pnRememberMe = 0) { 
    // Check credentials and so on 
    // If mail and password matches 
    if(CREDENTIALS OKAY) { 
     $_SESSION["username"] = "foo"; 
     $lnExpire = time() + 3600 * 24 * 60; 
     setcookie("remember", base64_encode(USERID), $lnExpire); 
     setcookie("rememberToken", md5(SOMESTUFF), $lnExpire); 
    } 
} 

當我登錄,我可以看到創建的cookie變量有:

print_r($_COOKIE); 

現在我想離開現場用我的登出功能:

// Unset the session variables 
$_SESSION = array(); 
// Destroy the session. 
session_destroy(); 

但是現在,當我在登陸頁面時,我的餅乾也不見了? 這可能是因爲我的會話網站設置?

ini_set("session.use_only_cookies", "1"); 
ini_set("session.use_trans_sid", "0"); 

回答

0

PHP函數的setcookie有第四個參數的路徑,從文件「其中的cookie將可在服務器上的路徑」。默認情況下,它將路徑設置爲實際的目錄。嘗試設置「/」然後它將可用於所有域。 http://php.net/manual/en/function.setcookie.php

+0

嗯,的確我也有設置這個路徑,當我完成項目基地在Ajax請求?因爲這個目錄每次都是一樣的。或者是logout.php結尾的window.location不好? – Kelle 2014-10-17 11:47:28

+0

現在嘗試使用路徑屬性,這解決了我的問題。謝謝! :) – Kelle 2014-10-17 12:07:28

0

試試這個代碼,希望它會爲你工作

if(count($_POST>0) && isset($_POST['checkbox'])) 
     { 
      setcookie('name',$_POST['uname'],time()+3600); 
      setcookie('password',$_POST['pw'],time()+3600); 
     } 
    elseif(count($_POST)>0) 
     { 

      setcookie('name','',time()-3600); 
      setcookie('password','',time()-3600); 
     } 
      if(count($_POST)>0 && $_POST['uname']!="" && $_POST['password']!="") 
     { 
      if(isset($_COOKIE['name']) && isset($_COOKIE['password'])) 
     { 

      echo $_COOKIE['name']; 
      echo $_COOKIE['password']; 

     } 

您的登錄詳細代碼在這裏.....