PHP-刷新页面时,SESSION变量的值无法正确回显

时间:2015-07-21 18:04:17

标签: php

我有一个会话变量,在点击链接时会更新,这会将GET变量添加到当前网址:

<?php
$_SESSION['test'] = 0;

if (isset($_GET['do'] && $_GET['do'] == 'this')) {
   $_SESSION['test'] = $_SESSION['test'] + 1;
}

echo $_SESSION['test'];
?>

<a href="?do=this">Click me</a>

单击链接时,回显的新会话值仍为0.

为什么呢?如何让它回应更新的值? (1)

编辑:是的,session_start()包含在页面顶部。

4 个答案:

答案 0 :(得分:0)

将其更改为:

$_GET['do']

我比array_key_exists()更喜欢isset,因为密钥可以存在为null且仍然通过测试:

  

来自php docs:“isset()对于与NULL值对应的数组键不返回TRUE,而array_key_exists()则返回TRUE。”

您还错误地使用了isset来测试$_SESSION的内容。最重要的是,您没有在每次加载页面时启动会话。

session_start()将初始化$_SESSION变量并使用相应的内容填充它。由于这不在您的代码中,'do'变量从未拥有您的'test'密钥。

您遇到的倒数第二个问题是第一行,您始终将0键设置为Click me,导致点击common.less后结果始终为1 / p>

最后,在输出应该给你错误的原始HTML之前你没有关闭php标签

答案 1 :(得分:0)

也许你没有粘贴整个代码,但这是应该如何完成的。

<?php
session_start();

$_SESSION['test'] = 0;
if (isset($_GET['do']) && $_GET['do'] == 'this') {
   $_SESSION['test'] += 1;
}

echo $_SESSION['test'];
?>
<a href="<?php echo $_GET['do'] //assuming $_GET['do'] contains a url ?>">Click me</a>

您需要从session_start() Google开始,了解有关它的更多信息。 您已将所有内容放入isset() Google isset()以了解有关它的更多信息。

在插入原始HTML之前,您需要关闭php标记。在HTML内部,您可以使用<?php ?>标签执行php。

希望这有帮助。

答案 2 :(得分:0)

如前所述,isset()包含的所有内容都应该是

isset($_GET['do'])

isset($_GET['do']

此外,每次刷新页面时,您的会话始终设置为0。如果尚未设置$ _SESSION [&#39; test&#39;],则只需设置$ _SESSION [&#39; test&#39;] = 0。

if (!isset($_SESSION['test'])) {
    $_SESSION['test'] = 0;
}

答案 3 :(得分:-1)

您在脚本顶部缺少session_start()。如果以前不存在会话,您也不会分配会话,在递增之前,您将继续将其设置为0。