我在下面写了一个 PHP 脚本来演示我的问题。像这样运行下面的代码:http://localhost/test.php?test=10 http://localhost/test.php?test=10,然后运行http://localhost/test.php?test=11 http://localhost/test.php?test=11, then http://localhost/test.php?test=12 http://localhost/test.php?test=12等。您将看到屏幕上回显的数字始终是网址编号后面的 1 位数字?!也许是因为我无法获取 cookie 并立即读取相同的 cookie?
//If query string has $test, store in session, and cookie for later.
if($_GET[test]){
$_SESSION['test'] = $_GET[test];
setcookie("test", $_GET[test], time()+60*60*24*30*12*10); //10 years
}
//If user comes back later, then get $test from cookie
if (isset($_COOKIE["test"])){
$_SESSION['test'] = $_COOKIE["test"];
}
echo "session test: " . $_SESSION['test'];
后来我用下面的代码解决了这个问题,但是解决还不够好,我想知道为什么会发生这种情况!
这解决了它:
if($_GET[cid]){
setcookie("campaignid", $_GET[cid], time()+60*60*24*30*12*10); //10 years
$_SESSION['campaignid'] = $_GET[cid];
}elseif (isset($_COOKIE["campaignid"])){
$_SESSION['campaignid'] = $_COOKIE["campaignid"];
}
也许是因为我无法获取 cookie 并立即读取相同的 cookie?
确切地。您发送的 cookie 仅在下一个请求中在 $_COOKIE 数组中可用,因为 $_COOKIE 超全局数组已填充客户端请求中的数据。起初要求什么都没有。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)