我有一个功能完善的网站,使用会话。唯一的例外是一个特定的页面。该页面执行一些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
是的,它只是说数组....没有其他选择。
不,我没有在PHP块之后将值设置为其他任何值。事实上,在这之后我没有另一个PHP块
为了调试它,我在echo $_SESSION['classes'];
标记之后添加了代码为</select>
的php块,并在第一页加载时添加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" }
并且在另一次刷新时,它说{{ 1}}
这只发生在我的网络主机上,而不是在我的本地服务器上。而且,仅限于此页面
我不知道造成这种情况的原因,或者如何解决这个问题
答案 0 :(得分:1)
您可能已启用register_globals
,因此$classes
会在某个时候与$_SESSION['classes']
混在一起。
你应该关掉它们。 (Here's why.)
或者,如果因任何原因无法关闭它们,请更改变量名称。
答案 1 :(得分:0)
知道了!
这是我的新代码:
<?php
$classesBeingTaught[] = explode(",", $_SESSION['classes']);
foreach ($classesBeingTaught[0] as $classBeingTaught) {
echo "<option>".$classBeingTaught."</option>";
}
?>