我在下面写了一个小 PHP 脚本来演示我的问题。像这样运行下面的代码:http://localhost/test.php?test=10,然后运行http://localhost/test.php?test=11,然后http://localhost/test.php?test= 12等。你会看到屏幕上显示的数字总是在 url 数字后面 1 位数字?!也许是因为我无法读取 cookie 并立即读取相同的 cookie?
//如果查询字符串有$test,保存在session中,cookies供以后使用。
如果($_GET[测试]){
$_SESSION['test'] = $_GET[test];
setcookie("test", $_GET[test], time()+60*60*24*30*12*10); //10年
}
//如果用户稍后回来,则从cookie中获取$test
如果(isset($ _COOKIE [“测试”])){
$_SESSION['test'] = $_COOKIE["test"];
}
回声“会话测试:”。$_SESSION['测试'];
后来我用下面的代码解决了这个问题,但是解决的还不够好,我想知道为什么会这样!
这解决了它:
if($_GET[cid]){
setcookie("campaignid", $_GET[cid], time()+60*60*24*30*12*10); //10年
$_SESSION['campaignid'] = $_GET[cid];
}elseif (isset($_COOKIE["campaignid"])){
$_SESSION['campaignid'] = $_COOKIE["campaignid"];
}
也许是因为我无法读取 cookie 并立即读取相同的 cookie?
确切地。您发送的 cookie 仅在下一个请求中在 $_COOKIE 数组中可用,因为 $_COOKIE 超全局数组填充了来自客户端请求的数据。一开始要求它什么都不是。
| 归档时间: |
|
| 查看次数: |
363 次 |
| 最近记录: |