我正在开发一个多语言网站,所以我尝试了这种方法:
echo $_COOKIE["lg"];
if (!isset($_COOKIE["lg"]))
setcookie("lg", "ro");
echo $_COOKIE["lg"];
这个想法是,如果客户端没有 lg
cookie(因此,这是他们第一次访问该站点)然后为该用户设置一个 cookie lg = ro
.
一切正常,除了如果我第一次进入此页面,第一个和第二个 echo
什么都不返回。仅当我刷新页面时才设置 cookie,然后 echo
打印我期待的“ro”字符串。
如何设置此 cookie 以便在用户第一次访问/页面加载时从第二个 echo
查看其值?应该不需要刷新页面或创建重定向。
原文由 Teodor 发布,翻译遵循 CC BY-SA 4.0 许可协议
回答
您不能根据 PHP 手册:
这是因为 cookie 在响应标头中发送到浏览器,然后浏览器必须将它们与下一个请求一起发送回来。这就是为什么它们仅在第二个页面加载时可用。
解决方法
但是您也可以通过在调用
setcookie()
$_COOKIE
来解决它: