【问题标题】:Weird PHP session奇怪的 PHP 会话
【发布时间】:2013-07-14 09:06:39
【问题描述】:

我有一个运行良好的网站,它使用会话。唯一的例外是一个特定的页面。该页面执行一些 DB SELECTS、验证内容等。 然后,稍后,在 HTML 部分,我得到了一个标签。在这之间,我得到了

<?php
    $classes = explode(",", $_SESSION['classes']);
    foreach ($classes as $class) {
        echo "<option>".$class."</option>";
    }
?>

现在 $_SESSION['classes'] 是一个逗号分隔的字符串。示例:“10 A,11 D,12 C” 这是奇怪的部分,当我加载此页面时,一切正常,我得到一个带有选项 10 A、11 D 和 12 C 的下拉选择......但是,当我刷新页面时,我得到一个下拉框只有一个选项:Array

是的,它只是说 Array.... 没有其他选项。

不,我没有在 PHP 块之后将值设置为其他任何值。事实上,在这个之后我没有另一个 PHP 块

为了调试它,我在&lt;/select&gt; 标记之后添加了一个带有代码的php 块:echo $_SESSION['classes'];,并且第一页加载时显示10 A,11 D,12 C。刷新后显示Array

然后我尝试var_dump($_SESSION);,它说["classes"]=&gt; &amp;string(9) "11 A,10 C" 这是最奇怪的部分:刷新后,它说["classes"]=&gt; &amp;array(2) { [0]=&gt; string(4) "11 A" [1]=&gt; string(4) "10 C" },再次刷新它说["classes"]=&gt; &amp;array(1) { [0]=&gt; string(5) "Array" }

这只会发生在我的虚拟主机上,不会发生在我的本地服务器上。而且,仅在此页面上

我不知道是什么原因造成的,也不知道如何解决它

【问题讨论】:

  • 您可以在某处编辑会话,尝试找到它。否则会是奇怪的行为
  • 这是一种奇怪的行为......就像我说的,我根本没有更改会话变量。另外,它在我的本地服务器上运行良好
  • 你能发布完整的代码吗?另外,您使用的是哪个版本的 PHP?
  • @SatishGadhave 完整代码:link,php 版本:5.2.42
  • 奇怪的是,“&”应该出现在你的 var_dump() 中。这表明您引用了数据,而不是数据本身。我不知道这对会话有什么影响,但它可以解释为什么只有一台服务器能正常运行。我快速浏览了您的代码,看起来还不错。

标签: php session session-variables


【解决方案1】:

您可能打开了register_globals,所以$classes 有时会与$_SESSION['classes'] 混合。

您应该关闭它们。 (Here's why.)

或者,如果由于某种原因无法关闭它们,请更改变量名称。

【讨论】:

  • 如果无法关闭它们,我可能会开始寻找新主机(如果确实如此)
  • 嗯,我认为更改变量名解决了这个问题。我还稍微更改了脚本。看我的回答。从wizpert.com 的 Wizpert 那里得到它:D
【解决方案2】:

知道了!

这是我的新代码:

<?php
    $classesBeingTaught[] = explode(",", $_SESSION['classes']);
    foreach ($classesBeingTaught[0] as $classBeingTaught) {
        echo "<option>".$classBeingTaught."</option>";
    }
?>

【讨论】:

    猜你喜欢
    • 2012-03-23
    • 2013-06-27
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    相关资源
    最近更新 更多