如果我将感叹号放入变量名称,则会出现奇怪的PHP行为

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了如果我将感叹号放入变量名称,则会出现奇怪的PHP行为脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我对 PHP本身有一个最奇怪的问题,我见过.

建立:

IIS下的PHP 5.33(也尝试过PHP 5.2.14)

问题:
一旦我将感叹号放入会话数组中的键中,PHP就会删除所有会话数据.

例:

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错误版本,但升级没有帮助.
我甚至不知道问题可能是什么.也许这与Windows安装程序或IIS有关?

有任何想法吗?

解决方法

你的问题是什么?这个错误原因是什么或如何避免?
一个可能是因为一些奇怪的PHP内部.例如,您不能使用具有相同结果的数字键.
一个简单 – 不要将感叹号放入会话数组中的键.

我记得,PHP会话机制来自PHPLib – 有史以来第一个PHP框架.由一些志愿学生撰写.不是一个非常理想的.一旦在版本4.0中添加PHP,只能在4.1中使用,但仍然有一些奇怪的遗留问题,例如register_globals支持.后者很可能是您遇到问题的原因. $_SESSION数组键必须是有效的PHP变量名,为了古老的register_globals行为,其中会话变量成为全局PHP变量.

脚本宝典总结

以上是脚本宝典为你收集整理的如果我将感叹号放入变量名称,则会出现奇怪的PHP行为全部内容,希望文章能够帮你解决如果我将感叹号放入变量名称,则会出现奇怪的PHP行为所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。