如果我将感叹号放入变量名称,则会出现奇怪的PHP行为
发布时间:2020-12-13 17:04:20 所属栏目:PHP教程 来源:网络整理
导读:我对 PHP本身有一个最奇怪的问题,我见过. 建立: IIS下的PHP 5.33(也尝试过PHP 5.2.14) 问题: 一旦我将感叹号放入会话数组中的键中,PHP就会删除所有会话数据. 例: session1.php session_start();$_SESSION["foo"] = 'test';header('Location: session2.php
我对
PHP本身有一个最奇怪的问题,我见过.
建立: IIS下的PHP 5.33(也尝试过PHP 5.2.14) 问题: 例: session1.php session_start(); $_SESSION["foo"] = 'test'; header('Location: session2.php'); session2.php session_start(); var_dump($_SESSION); die(); 工作正常,我看到打印出可变数据. array(1) { ["foo"]=> &string(4) "test" } 但是,如果我在第一个文件中更改行 $_SESSION["foo!"] = 'test'; 要么 $_SESSION["f!oo"] = 'test'; 我的意思是如果我添加感叹号 – 当我到达第二个文件时$_SESSION数组为空 array(0) { } 当我在5.2.14时,我认为这是PHP的错误版本,但升级没有帮助. 有任何想法吗? 解决方法
你的问题是什么?这个错误的原因是什么或如何避免?
第一个可能是因为一些奇怪的PHP内部.例如,您不能使用具有相同结果的数字键. 后一个更简单 – 不要将感叹号放入会话数组中的键. 我记得,PHP会话机制来自PHPLib – 有史以来第一个PHP框架.由一些志愿学生撰写.不是一个非常理想的.一旦在版本4.0中添加到PHP,只能在4.1中使用,但仍然有一些奇怪的遗留问题,例如register_globals支持.后者很可能是您遇到问题的原因. $_SESSION数组键必须是有效的PHP变量名,为了古老的register_globals行为,其中会话变量成为全局PHP变量. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |