PHP $_COOKIE 获取带预设变量的cookie
PHP $_COOKIE get cookie with preset variable
解决方案:
$_COOKIE 正在用下划线替换句点。
str_replace('.','-',$cookie_name);
问题
我正在设置这样的 cookie。
$cookie_name = '_visited-'.$user_ip.'-'.$visted_link;
setcookie($cookie_name,'visited',time() + (86400 * 30), "/");
header('Location: '.$_SERVER['REQUEST_URI']);
exit;
然后尝试查看是否已设置 cookie 并从 link 数组中取消 link 它,就像这样。
foreach($links['unique'] as $link){
$cookie_name = '_visited-'.$user_ip.'-'.$link;
if(isset($_COOKIE[$cookie_name])){
if(($key = array_search($l, $links['unique'])) !== false) {
unset($links['unique'][$key]);
}
}
}
奇怪的是,即使在使用 isset 的 foreach 中明确设置了 cookie,我也无法检测到 cookie 存在,因此我无法删除访问过的 link。
您无法在设置的同一页面上访问 cookie。
正如您在 manual 中看到的那样,它清楚地说明了这一点:
设置 cookie 后,可以在下一个页面加载时使用 $_COOKIE 数组访问它们。
如何将 $links 从一个页面转移到另一个页面? PHP 的每次调用都是独立的。这就是为什么我将 cookie 保存到数据库中的会话 table 的原因。每个页面的第一步是从数据库加载会话。
我认为您的 cookie 从未被发现,因为 $links 在每次执行时都会启动。在页面顶部添加 print_r($links) 以查看和编辑您的问题。
好的,所以找到问题了。我将用户 IP 作为 cookie 名称的一部分。
这 。被 _ 取代,所以继续并取代所有 . with - 设置 cookie 时。完全按照我的预期工作。
解决方案:
$_COOKIE 正在用下划线替换句点。
str_replace('.','-',$cookie_name);
问题
我正在设置这样的 cookie。
$cookie_name = '_visited-'.$user_ip.'-'.$visted_link;
setcookie($cookie_name,'visited',time() + (86400 * 30), "/");
header('Location: '.$_SERVER['REQUEST_URI']);
exit;
然后尝试查看是否已设置 cookie 并从 link 数组中取消 link 它,就像这样。
foreach($links['unique'] as $link){
$cookie_name = '_visited-'.$user_ip.'-'.$link;
if(isset($_COOKIE[$cookie_name])){
if(($key = array_search($l, $links['unique'])) !== false) {
unset($links['unique'][$key]);
}
}
}
奇怪的是,即使在使用 isset 的 foreach 中明确设置了 cookie,我也无法检测到 cookie 存在,因此我无法删除访问过的 link。
您无法在设置的同一页面上访问 cookie。
正如您在 manual 中看到的那样,它清楚地说明了这一点:
设置 cookie 后,可以在下一个页面加载时使用 $_COOKIE 数组访问它们。
如何将 $links 从一个页面转移到另一个页面? PHP 的每次调用都是独立的。这就是为什么我将 cookie 保存到数据库中的会话 table 的原因。每个页面的第一步是从数据库加载会话。
我认为您的 cookie 从未被发现,因为 $links 在每次执行时都会启动。在页面顶部添加 print_r($links) 以查看和编辑您的问题。
好的,所以找到问题了。我将用户 IP 作为 cookie 名称的一部分。 这 。被 _ 取代,所以继续并取代所有 . with - 设置 cookie 时。完全按照我的预期工作。