动态PHP对象访问在本地和服务器上有所不同

问题描述 投票:0回答:2

在本地XAMPP开发环境中,我可以通过调用:$xmltemplates->$_POST['xmlmap']->sheet;来访问PHP中的对象属性

但是在实时服务器上,我必须将POST变量放入一个字符串中,以便它可以工作:

$gehmiraufdiekeks = $_POST['xmlmap']; $xmltemplates->$gehmiraufdiekeks->sheet;

我是否需要修复代码或者是服务器配置问题?

更新:我期望XAMPP测试环境至少是7个。所以我只检查了服务器的PHP版本,即7个。但是当我加倍检查两个PHP信息时,我的本地PHP版本是5.6。 D'哦!所以有这种问题的人:请将您的代码更新为PHP 7.;)

php json post
2个回答
1
投票

两件事情:

  1. 配置(或应该)生产服务器以隐藏错误消息。这就是你没有得到的原因。您需要检查服务器日志或启用完整错误报告。
  2. 我理解你指的是在不使用花括号的情况下调用变量属性,如: $key = 'bar'; var_dump($foo->$bar); ... 而不是: var_dump($foo->{$bar}); 这在PHP / 7.0迁移指南(强调我的)的Changes to the handling of indirect variables, properties, and methods部分中进行了解释: 现在,将严格按照从左到右的顺序对间接访问变量,属性和方法进行评估,而不是之前的特殊情况组合。 [...] 必须重写使用旧的从右到左评估顺序的代码,以明确使用带花括号的评估顺序(请参阅上面的中间列)。这将使代码向前兼容PHP 7.x并向后兼容PHP 5.x.

1
投票

实际上,这是与PHP版本相关的。他们在PHP 7中对此进行了更改,因此没有人可以通过POST表单发送失败的非转义字符串来破坏您的脚本。

© www.soinside.com 2019 - 2024. All rights reserved.