2014-10-05 108 views
0

我創建了一個登錄頁面,並使用cookie作爲自動登錄選項。 由於某種原因,當我試圖測試它(去登錄頁面 - 測試重定向) 它不起作用。 當我打印$ _COOKIE時,我只看到'PHPSESSID'。Cookie在重定向(PHP)上消失

這是我的代碼:

public function index(){ 

    if (isset($_COOKIE[$_SESSION[SESSION_KEY.'id']]) && isset($_COOKIE[$_SESSION[SESSION_KEY.'password']])) 
    { 

     $login = $_COOKIE[$_SESSION[SESSION_KEY.'id']]; 
     $password = 1; 

    } 
    else if(isset($_POST['login']) && isset($_POST['password'])) 
    { 
      $password = $_POST['password']; 
      $login = $_POST['login'];    
    }  
    if(isset($login) && isset($password)) 
     {   

      $query = "SELECT * FROM myDB WHERE id= '{$login}' AND Password = '{$password}'"; 
      $result = $this->db->query($query)->result(); 

      if(count($result) == 0 || count($result) > 1){ 

       $this->load->view('admin/login'); 
      }elseif(count($result) == 1){ 

       $_SESSION[SESSION_KEY.'id'] = $result[0]->id; 
       $_SESSION[SESSION_KEY.'password'] = 1; 

       if (isset($_POST['remember']) && isset($_POST['remember']) == 1) 
       { 
        setcookie($_SESSION[SESSION_KEY.'id'], $login, time()+60*60*24*10, base_url()); 
        setcookie($_SESSION[SESSION_KEY.'password'], $password, time()+60*60*24*10, base_url());  
       }      
       redirect('customers/customers_list'); 
      } 
     } 
     else { 
      $this->load->view('admin/login'); 
      return; 
     } 
} 

可能是什麼問題呢?所有的餅乾在哪裏? 是的,我有session_start();

+0

你有在session_start(),您可以使用存儲的值;在你的所有網頁上?這似乎需要它:$ _COOKIE [$ _ SESSION [SESSION_KEY.'id']] – 2014-10-05 20:35:29

+0

是的。我有session_start ...任何其他想法? – user3282988 2014-10-05 20:48:09

+0

似乎你的登錄頁面是'/ admin/login'。您是否在其他頁面上查看cookie '/客戶/ customers_list'? – 2014-10-05 21:03:10

回答

0

嘗試使用PHP set_cookie()函數在第一次用戶登錄在例如
的setcookie( 「用戶名」,$ _POST [ '用戶名' mktime()+(84600 * 30), 「/」) 然後得到的用戶名Cookie,如果它存在,所以anywere你想如

if (isset($_COOKIE ['username' ])) {   
    //if the cookie exist allow user login e.g  
    $_SESSION['login']= 'true'; 
} 
else { 
    //if a cookie doesn't exist 
    echo "Oops you have to log in!" 
    //then you display login form 
} 

那麼其他的頁面上,你有類似

session_start(); 
if ($_SESSION['login']='true') { 
    //Then you display the page 
} 
else { 
    //redirect to login page 
}