2012-03-09 80 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的会话。