2015-10-26 305 views
1

我有一個Cookie問題。在我的登錄腳本我有下面的代碼行:爲什麼我的cookies沒有保存?

if($_GET['keep'] == "true"){ 
      setcookie('id',$id,time()+3153600); 


     } 

我面臨的問題是,Cookie不會在所有的儲蓄(甚至如果我不退出瀏覽器)。我在這方面相當開放,我認爲我做得不對。

編輯:
如果我print_r所有的cookie它只會給cookie後設置PHPSESSID。我打印在index.php上,並在login.php上設置了cookie。

解決方案:Cookie默認保存爲創建文件的路徑。要更改路徑,還需要另一個屬性。因此,通過setcookie('id',$id,time()+3153600,'/');,您可以使Cookie適用於整個域。

+2

還有另外一個問題,那就是,=應== –

+0

@ Hanky웃Panky - 我認爲這不會導致問題。這將永遠是真實的。 –

+0

'如果我退出瀏覽器,不保存'假設你沒有退出瀏覽器嗎?它保留cookie嗎?只需在設置後轉儲'$ _COOKIE'。所以你可以確保'setcookie'正在工作 –

回答

3

沒有問題在你的代碼

if($_GET['keep'] = "true"){ 
    setcookie('id',$id,time()+3153600); 
} 

這將可能導致

  1. 沒有數據傳遞$_GET['keep']
  2. 或者,如果數據傳遞$_GET['keep']值不匹配( 「真」)。
  3. 兩項工程然後$id是空setcookie方法

提高代碼

if(isset($_GET['keep']){ 

    if($_GET['keep'] == "true"){ 
     if(isset($id)) 
     { 
      #all perpect 
      $cokkie_id = 'id'; 
      setcookie('id',$id,time()+3153600); 

      echo "I'm Set. And My value is ".$cokkie_id; 
     } 
     else 
     { 
      echo "Opzz My ID is also empty"; 
     }  
    } 
    else 
    { 
     echo 'Get method is Set. But Value is not "true". Actual value is '. $_GET['keep']; 
    } 
} 
else 
{ 
    echo 'I cant reach Get method Buddy'; 
} 
+0

我試過這個調試方法,並且該方法的值設置爲true –

+0

嘗試我所有的代碼。那麼你會知道什麼是錯的。 –

+0

$ id已設置。我可以回顯它,它顯示0,我從數據庫 –

0

我想你好想 「=」 號

if ($_GET['keep'] == "true") { 
    if (!isset($_COOKIE['id'])) { 
     setcookie('id',$id,time()+3153600); 
    } 
} 
+0

確實如此,但這並不妨礙cookie的保存。它會使它每一次都保存cookie。 –

+0

如果此解決方案解決了您的問題,請將其標記爲正確答案。 – MuthaFury

+0

你不必提示人們去做東西。如果他們發現它有用,那麼他們會在自己的時間內贊成/接受它。 –

0

使用isset==

if (isset($_GET['keep']) && $_GET['keep'] == "true") { 
    setcookie('id', $id,time()+3153600); 
}else{ 
    echo 'keep is empty'; 
} 
相關問題