2012-03-09 15 views
0

クッキー名を設定する際に問題が発生しました。ここにメソッドを投稿することにしました。クッキー名を設定できません

私は次のメソッドを呼び出す私のメインページに

$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が返されます。

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

は、私はクッキーの名前を確認し、それは「PHPSESSID」

何が問題になっていますようにsettedですか?

+0

おそらく 'setcookie()'を呼び出すときに出力を開始したとします。この場合、クッキーは設定されません。ページ上部の 'setcookie()'を実行してみてください。 – Cyclonecode

+0

設定と確認の要求が異なることを確認してください。コード内にクッキーを設定すると、次の行に設定されているかどうかを直接確認することはできませんが、ページを最初にリフレッシュする必要があります。また、クッキーを設定することが最初のことであることを確認してください(空白などのように前に出力が全くない)。 – Quasdunk

+0

毎回$ fila_idの価値がありますか? – Milap

答えて

1

出力に何かがある場合にsetcookieを呼び出すと、Cookieが設定されず、エラー報告を無効にしてもこの問題に関する警告は表示されません。

その他のもの: あなたのsetcookie()呼び出しが成功したとしても、1つの新しいリクエストの直後に$ _COOKIE配列にそのクッキーを持たないでしょう。

いいえ、クッキーを使用するためにセッションを開始する必要はありません。

関連する問題