我想我知道答案(我是S.O.L.),但我想我会发布问题,看看是否有人有任何建议。
我们有一个有城市的网站。我们正在尝试使用cookie来“记住”用户访问过的当前/最后一个城市,但我们没有得到我们想要的行为。 Cookie始终延迟1页(此处列出的常见陷阱:http://php.net/manual/en/function.setcookie.php)
假设您转到以下网址:site.com/dallas 然后,您转到URL:site.com/chicago
在<之前设置cookie。头>像这样:
$location = 'Chicago';
setcookie("location", $cookie_loc, time()+31536000, "/");
在页面上检索cookie,如下所示:
<?php
if(isset($_COOKIE["location"])) {
echo 'Current City '.$_COOKIE["location"] ;
} else {
echo 'Current City: none';
}
?>
然而,在“芝加哥”页面上,它显示了已设置的“达拉斯”Cookie,即使新Cookie设置为“芝加哥”
显然,cookie在被重置之前被拉下来。
是否有一种已知的方法来纠正这种情况,以便在不刷新页面的情况下也可以获取通过转到页面设置的cookie?
我的直觉说不,但这是我认为可能的常见问题......
谢谢!
答案 0 :(得分:0)
您可以自己在超全球中设置它:
$cookie_loc = 'Chicago';
setcookie("location", $cookie_loc, time()+31536000, "/");
$_COOKIE['location'] = $cookie_loc;
答案 1 :(得分:0)
为什么每次拨打$_COOKIE
时都不设置setcookie
变量?
$location = 'Chicago';
setcookie("location", $cookie_loc, time()+31536000, "/");
$_COOKIE['location'] = $location; // not sure what $cookie_loc is
答案 2 :(得分:0)
如果您在页面中设置了Cookie,则该页面中不会显示该Cookie。 但是,如果您在该页面中设置了一个位置,则可以从该变量中检索它!
if (!isset($location) && isset($_COOKIE["location"]))
{
$location = $_COOKIE["location"];
}
echo 'Current City '. $location;
如果$location
变量未在开头设置,则会从Cookie中检索,否则代码会使用该变量。 :)
答案 3 :(得分:0)
在您的情况下,您还可以使用一些JavaScript代码在页面加载之前设置Cookie
<a href="./probably_same_php_page.php" onclick="document.cookie='location=' + this.innerHTML">Chicago</a>