gpt4 book ai didi

php - $_REQUEST 不是在使用可变变量时创建的?

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

考虑以下代码片段:

图表 A:

$_REQUEST = json_decode(stripslashes(json_encode($_REQUEST, JSON_HEX_APOS)), true);

图表 B:

${'_REQUEST'} = json_decode(stripslashes(json_encode(${'_REQUEST'}, JSON_HEX_APOS)), true);

图表 C:

${'_' . 'REQUEST'} = json_decode(stripslashes(json_encode(${'_' . 'REQUEST'}, JSON_HEX_APOS)), true);

AB 都工作得很好,C 但是显示了一个非常奇怪的错误信息:

Notice: Undefined variable: _REQUEST

更奇怪的是,如果我用 $_GET$_POST 尝试,这只会发生在 $_REQUEST 超全局> 或 $_COOKIE 所有实验都运行良好,不会引发错误通知。

我猜这是一个 PHP 错误?我在 PHP 5.3.0 上运行。

最佳答案

(我用 PHP 5.3.1 测试过)

一件有趣的事是这部分代码:

<?php
var_dump(${'_' . 'REQUEST'});

获取通知 Undefined variable: _REQUEST


但是这个:

<?php
var_dump($_REQUEST);
var_dump(${'_' . 'REQUEST'});

不给出任何通知,并显示两个空数组。


有一段时间,我认为这可能与 auto_globals_jit 有关,但是 $_REQUEST 似乎并不关心该指令......但是这里有一件有趣的事情说:

Usage of SERVER and ENV variables is checked during the compile time so using them through e.g. variable variables will not cause their initialization.

也许,毕竟,即使手册上没有说,auto_globals_jit$_REQUEST有影响...


而且,可以肯定的是,我在我的 php.ini 文件中关闭了 auto_globals_jit:

; When enabled, the SERVER and ENV variables are created when they're first
; used (Just In Time) instead of when the script starts. If these variables
; are not used within a script, having this directive on will result in a
; performance gain. The PHP directives register_globals, register_long_arrays,
; and register_argc_argv must be disabled for this directive to have any affect.
; http://www.php.net/manual/en/ini.core.php#ini.auto-globals-jit
auto_globals_jit = Off

再次尝试这段代码:

<?php

var_dump(${'_' . 'REQUEST'});

现在我得到一个空数组,不再是通知。

看来 auto_globals_jit 确实对 $_REQUEST 有影响——即使手册中没有提到。

关于php - $_REQUEST 不是在使用可变变量时创建的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2078102/

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