我遇到了关于 php cookies 的问题。我正在使用隐藏框架来构建一个rest API。
我涉及2个文件
类CommentController扩展Controller {
/** !Route GET, test */
function test()
{
setCookie("Who","userId");
exit;
}
/** !Route GET, cookie */
function checkCookie()
{
print_r($_COOKIE);
exit;
}
}
class UserController extends Controller
{
/** @var User */
protected $user;
/** !Route GET, test */
function test()
{
print_r($_COOKIE);
exit;
}
}
如您所见,我有两个文件1.评论控制器2.用户控制器
我正在从CommentController调用test来设置来自同一控制器的cookie和checkCookie来检查cookie是否已设置,确定cookie已设置
但在调用这两个函数后,当我从usercontroller调用test来检查cookie是否已设置时,cookie未设置
答案 0 :(得分:3)
_COOKIE仅填充了脚本启动时客户端发送给服务器的cookie数据。如果在esame脚本执行会话中调用setcookie(),它将 NOT 被修改。您在当前会话期间修改/创建的任何Cookie只会在客户提出的 NEXT 请求中显示在_COOKIE中。
作为一般规则,当脚本启动时,PHP将使用它手头的数据填充超全局,然后在执行会话期间不再触摸它们。如果您做任何会影响超全球价值的事情,那么在下次运行之前,新值不会出现在相应的超全球中。
答案 1 :(得分:1)
我认为问题出在cookie路径上。您最好将cookie用于整个系统。
例如:
setcookie ("User", "999882", time() - 3600, "/public/", "test.com", 1);
请尝试。
普拉萨德。