2016-09-27 24 views
-2

我目前正在检查在旧版PHP中开发的软件的弃用功能。它是在2006年开发的。我已经看到很多这种格式的变量$_SESSION[name]$_GET[name]变量没有引号,不同的响应现场和本地

这里的问题是它不会给部署的网站带来错误。但在我的本地它给Notice: Use of undefined constant name - assumed 'name'

我知道我可以通过在每个变量上添加单引号或双引号来解决这个问题,但编辑有很多。而且我无法访问服务器配置。

任何想法为什么这不适合我的本地。我使用PHP 5.6。

编辑::我只是想知道背后的原因。

谢谢。

回答

0

在这种奇怪的场景中,您有电子通知提示:Notice: Use of undefined constant name - assumed 'name'。由于您无法访问服务器,(直到您这样做)您可以简单地创建临时文件说:_DEFINES.php并将其包含在您的脚本中。在这个文件中,你可能只是定义这些变量作为字符串,像这样:

<?php 
    defined('name')   or define('name',   'name'); 
    defined('another_string') or define('another_string', 'another_value'); 
    defined('yet_another') or define('yet_another', 'yet_another'); 

这样的话,你可能有暂时击败了噩梦......

注:这不是太大的解决方案......这只是一个时间变通,直到你能解决从服务器端的问题....

+0

谢谢,我可以d o但是我需要知道的是它工作的原因..我正在使用实时软件的副本。但它“呈现”的方式不同。 – makoto

+1

@makoto它的工作原因已在'电子通知'中。这是因为它期望'name'是一个'String',但发现一些似乎是'Constant'的东西。然后,由于它无法在任何地方找到该常量,PHP引擎会自动尝试通过假设/将该'FALSE CONSTANT'转换为'LITERAL STRING EQUIVALENT'来帮助您,然后尝试警告/通知您'NOTICE'它做了什么:* *将似乎是未声明的常量转换为简单的String。**就是这样... – Poiz