我在设置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");
}
在chrome中,我检查了cookie的名称,并将其设置为“PHPSESSID”
怎么了?
答案 0 :(得分:1)
如果您在输出中有任何内容后调用setcookie,您的cookie将无法设置,如果您已关闭错误报告,则不会收到有关此问题的任何警告。
其他事情: 即使你的setcookie()调用成功,你也不会在一个新的请求之后在你的$ _COOKIE数组中拥有该cookie。
不,您不必开始会话以使用cookie。