2012-03-09 116 views
0

我在設置cookie名稱的問題,我決定在這裏發表的方法。不能設置cookie名稱

在我的主頁我調用以下方法:

$CHAT->login($_POST['cliente']); 
$CHAT->entraFila(); 

的方法是:

public function login($cli, $senha){ 
    $this->cliente = $cli; 
} 

public function entraFila(){ 
    $fila_id = $this->DB->criaFila($this->cliente); 
    if($fila_id){ 
     // -------------------------------- SETING THE COOKIE BELOW <<<<< ---  
     setcookie("CHAT_FILA_ID", $fila_id, time() + 86400); 
     return true; 
    } else { 
     return false; 
    } 
} 

的 「entraFila」 方法調用 「criaFila」 的方法在另一類:

public function criaFila($cli){ 
    $insert = sprintf("INSERT INTO filas (cliente, data) VALUES (%s, NOW())", 
      GETSQLValueString($cli, "text") 
    ); 
    $query = mysql_query($insert) or die(mysql_error()); 
    if($query){ 
     return mysql_insert_id($query); 
    } else { 
     return $query; 
    } 
} 

當我檢查另一頁中的cookie時,它總是返回false:

session_start(); 
if(!isset($_COOKIE['CHAT_FILA_ID'])){ 
    // CONDITION ALWAYS ENTER HERE 
    header("location: login.php"); 
} 

在鉻,我查了cookie的名稱,它的設置好的像「PHPSESSID」

有什麼不對?

+0

也許你已經調用'的setcookie()'在這種情況下,cookie將不會被設置的時候開始你的輸出。嘗試在頁面頂部運行你的'setcookie()'。 – Cyclonecode 2012-03-09 13:01:08

+0

確保對設置和檢查提出不同要求。當你在你的代碼中設置一個cookie時,你不能直接檢查它是否被設置在下一行,但必須先「刷新」頁面。另外,確保設置cookie是你做的第一件事(之前絕對沒有輸出,比如空格或者其他東西)。 – Quasdunk 2012-03-09 13:01:40

+0

您是否每次獲得$ fila_id的價值? – Milap 2012-03-09 13:02:56

回答

1

如果你打電話的setcookie你對你的cookie不會設置,如果你已經關閉錯誤報告,你不會得到有關此問題的任何警告的輸出有什麼後。

其他東西: 即使您的setcookie()調用成功,您的$ _COOKIE數組中只有一個新的請求後纔會有該cookie。

不,你沒有開始使用Cookie的會話。