gpt4 book ai didi

php - php $_SESSION 变量可以有数字 id 因此 : $_SESSION ['1234’ ]

转载 作者:可可西里 更新时间:2023-11-01 00:10:44 27 4
gpt4 key购买 nike

我一直被这个问题逼疯了。

我正在动态创建一个 session ID,以便在刷新时保留页面状态。

如果单击了一个页面元素,我会获取该元素的 ID 并将其传递给创建 session 变量的服务器端脚本:

$_SESSION[$id] = $id; 

奇怪的是,这只在某些时候有效,我将其缩小到一些元素具有纯数字 id 而其他元素没有的事实:

if (is_numeric($id))
{
$_SESSION[$id] = $id;
$_SESSION['test'] = $id;

}else{

$_SESSION[$id] = $id;
};

在上面的示例中,只有非数字 session ID 是可见的。例如,我可以 echo $_SESSION['test']; 完全没有问题。

有什么想法吗?

最佳答案

来自手册:$_SESSION 关联数组中的键与 PHP 中的常规变量名称受到相同的限制,即它们不能以数字开头,必须以字母或下划线开头。有关详细信息,请参阅本手册中有关变量的部分。

在 session 中使用纯数字键是行不通的。如果它是数字,您可以尝试在它前面加上下划线。

编辑:从 2015 年 10 月的 PHP 5.5.9 开始,这似乎仍然是正确的,尽管手册引用不再出现。

测试代码:

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);

session_start();
$_SESSION['a123'] = 'a123';
$_SESSION['123'] = '123str';
$_SESSION[455] = '455int';
$_SESSION['_123'] = '_123';

产量:

Notice: Unknown: Skipping numeric key 123 in Unknown on line 0

Notice: Unknown: Skipping numeric key 455 in Unknown on line 0

然后 var_dump($_SESSION); 只显示:

array(2) {
["a123"]=>
string(4) "a123"
["_123"]=>
string(4) "_123"
}

这实际上似乎发生在请求结束时 session 数据被序列化时 here .显然, session 引擎本身会阻止将数字 session key 保存到 session 中。

关于php - php $_SESSION 变量可以有数字 id 因此 : $_SESSION ['1234’ ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7450371/

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