gpt4 book ai didi

php - 如果我在变量名中加上感叹号会出现奇怪的 PHP 行为

转载 作者:可可西里 更新时间:2023-10-31 23:11:39 28 4
gpt4 key购买 nike

我遇到了 PHP 本身最奇怪的问题,这是我见过的。

设置:

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

问题:只要我将感叹号放入 session 数组中的键中,PHP 就会删除所有 session 数据。

示例:

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 内部结构。例如,您不能使用具有相同结果的数字键。
后一个更简单 - 不要将感叹号放在 session 数组中的键中。

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

关于php - 如果我在变量名中加上感叹号会出现奇怪的 PHP 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3486955/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com