我有一个cookie,用于识别用户是否是第一次打开页面。我有它,所以当它第一次,如果它尚未设置,则设置一个cookie。每次用户在第二次或第三次尝试时加载页面时,代码都会检查cookie是否已设置并执行某些操作。
但是,由于某些原因在第二页加载时,代码找不到cookie,即使它是在我的Chrome浏览器中创建的
<?php
$canvas_id = $_GET["canvas_id"];
if (!isset($_COOKIE[$canvas_id]))
{
setcookie($canvas_id, "NO", time()+3600, '/');
}
else
{
//do something...
} ?>
<!DOCTYPE HTML>
<html>
<body>
<?php
if (isset($_COOKIE[$canvas_id]))
{
echo ("HELLO");
}
?>
</body>
</html>
我拥有它,以便创建的cookie从前一页传递。我已经尝试将cookie值更改为硬编码变量,但它确实有效。例如:
<?php
if (!isset($_COOKIE["test"]))
{
setcookie("test", "NO", time()+3600, '/');
}
else
{
//do something...
} ?>
<!DOCTYPE HTML>
<html>
<body>
<?php
if (isset($_COOKIE["test"]))
{
echo ("HELLO");
}
?>
</body>
</html>
有人可以解释为什么第一个示例代码不起作用,但第二个代码不起作用吗?
非常感谢
答案 0 :(得分:0)
仔细查看代码的这一部分if (!isset($_COOKIE[$canvas_id]))
。
您提供的变量是$_COOKIE
全局数组的键。如果您未设置$_GET["canvas_id"]
的值,则变量$canvas_id
的值将为空,!isset()
将始终返回true
并执行setcookie($canvas_id, "NO", time()+3600, '/');
部分。
if (isset($_COOKIE[$canvas_id])){echo ("HELLO");}
部分永远不会被执行,因为$_COOKIE[$canvas_id]
未设置。
因此,如果您想要正确执行代码,则必须运行不含$_GET['canvas_id']
值的代码,然后运行值$_GET['canvas_id']
。
像这样:
没有$_GET['canvar_id']
值链接将是:
http://localhost/cookie.php
$_GET['canvar_id']
值链接将为:http://localhost/cookie.php?canvar_id=1234
(cookie.php是您的代码文件)。