PHP 5.3 支持奇怪的 '${}' 代码吗?

标签 php php-5.3

我刚刚升级到 PHP 5.3,并开始为新客户端支持旧网站。它似乎使用了相当奇怪的 PHP 代码,我以前从未遇到过。

在尝试访问 $_GET 或 $_REQUEST 变量时,开发人员使用了以下内容:${"variable_name"}

我收到由于 undefined variable 而生成的通知(可能是因为 PHP 未解析 ${"variable_name"} 样式代码)。

将其更改为 $_REQUEST['variable_name'] 按预期工作,但我无法查看他们的所有代码并更改它,因为该网站很大并且使用专有的布局方法。

有谁知道是否可以打开对这些标签/代码块的支持?我查看了 PHP.ini,其中提到了 ASP 样式标签和短标签,但启用这些没有效果(无论如何它们看起来完全不同,我只是认为值得一试)。

最佳答案

我认为该语法没有什么新内容:

$a = 10;
var_dump(${"a"});

工作得很好;-)


您的问题可能是由于之前 register_globals已启用(默认情况下,如果 PHP <= 4.something),现在已禁用 - 这对安全性有好处!

将 register_globals 设置为 On 时,$_REQUEST 中的任何变量都会作为变量自动注入(inject)到您的应用程序中——实际上,这取决于 variables_order配置选项,但这个几乎总是包括 Get、Post 和 Cookie,至少如此。

例如,如果有一个像 $_GET['my_var'] 这样的变量,那么您也会有一个 $my_var 变量...而且这个也可以使用语法 ${'my_var'}

进行访问


考虑到 register_globals 默认情况下是 Off,因为 PHP 4.2 之类的东西,并且应该在 PHP 6 中消失(如果我没记错的话),我建议不要重新激活它...至少,如果您有时间纠正/测试代码...

关于PHP 5.3 支持奇怪的 '${}' 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1323623/

相关文章:

php - 从源代码安装 PHP 时如何修复找不到 xml2-config 的错误?

php - 如何使用提交的请求重定向回我的上一页

php - 在 Laravel 5.3 中覆盖 Auth 忘记密码

PHP 脚本混淆 GEO Lite DB

php - 处理 : libapache2-mod-php5 php5 php5-cli 时遇到错误

mysql - PDO 多MYSQL语句执行和错误日志文件

PHP命名空间组织、命名

php - 尝试 SQL 查询,并在成功时返回文本

php - Wamp 服务器和 Electron io

php - Laravel/broadcasting/auth 总是失败并出现 403 错误