【发布时间】: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 块
为了调试它,我在</select> 标记之后添加了一个带有代码的php 块:echo $_SESSION['classes'];,并且第一页加载时显示10 A,11 D,12 C。刷新后显示Array
然后我尝试var_dump($_SESSION);,它说["classes"]=> &string(9) "11 A,10 C" 这是最奇怪的部分:刷新后,它说["classes"]=> &array(2) { [0]=> string(4) "11 A" [1]=> string(4) "10 C" },再次刷新它说["classes"]=> &array(1) { [0]=> string(5) "Array" }
这只会发生在我的虚拟主机上,不会发生在我的本地服务器上。而且,仅在此页面上
我不知道是什么原因造成的,也不知道如何解决它
【问题讨论】:
-
您可以在某处编辑会话,尝试找到它。否则会是奇怪的行为
-
这是一种奇怪的行为......就像我说的,我根本没有更改会话变量。另外,它在我的本地服务器上运行良好
-
你能发布完整的代码吗?另外,您使用的是哪个版本的 PHP?
-
@SatishGadhave 完整代码:link,php 版本:5.2.42
-
奇怪的是,“&”应该出现在你的 var_dump() 中。这表明您引用了数据,而不是数据本身。我不知道这对会话有什么影响,但它可以解释为什么只有一台服务器能正常运行。我快速浏览了您的代码,看起来还不错。
标签: php session session-variables