【发布时间】:2015-01-13 03:37:46
【问题描述】:
我一直遇到 php 会话变量的问题,所以我把它归结为这个简单的代码:
session_start();
echo "I was: " . $_SESSION['myvar'] . "<br>";
$_SESSION['myvar'] = intval($_GET['pos']);
echo "I am: " . $_SESSION['myvar'] . "<br>";
我传入了查询字符串随机值。我希望“I was”语句打印旧值,然后分配一个新值(来自查询字符串),并回显新值。但是,这是我对这两个后续查询的输出:$_GET['pos'] = 1 和 $_GET['pos'] = 2。
#Expected output
I was
I am 1
I was 1
I am 2
#Actual output
I was 1
I am 1
I was 2
I am 2
你知道为什么会这样吗?
编辑:从 cmets 中,我可以看出我还没有明确说明如何使用我的原始脚本。
1-我想记住用户当前在哪个页面上。当用户请求一个新页面(AJAX 调用)时,该请求通过我的脚本,我更新保存用户当前页面的会话变量,并回显一个 json_encode 字符串,我的 javascript 从中更新用户页面。
2- 我在这里模拟的是:
第一次请求:用户不在任何页面,请求第1页。
第二个请求:用户在第 1 页(我的脚本使用此处使用 $_SESSION['myvar'] 模拟的会话变量记住),并请求第 2 页。因此,对于下一个请求,我的脚本将知道用户在第 2 页,然后继续。
3- 我在这里得到什么:用户不在页面上,请求第 1 页...但我的脚本(出于某种未知原因)认为他已经在第 1 页上。第 2 页的想法相同。
我认为使用会话变量是可行的方法。我错了吗?
感谢您的帮助。
EDIT(2):我第二天又试了一次,但这次脚本按我预期的那样工作......虽然不知道发生了什么。
【问题讨论】:
-
您确定每次进行测试时都在清除 cookie?
-
您的 html 看起来如何?并且您为此输出调用了脚本 2 次?另请注意,如果您在每次会话仍然存在时进行测试!你必须清除它!
标签: php session variable-assignment