【问题标题】:Undefined variable php notice workaround?未定义的变量php通知解决方法?
【发布时间】:2011-05-04 07:31:57
【问题描述】:

我刚刚打开通知,因为它包含一些我在调试时需要的重要信息……话虽如此,我发现未定义的变量真的很麻烦。

例如,要删除未定义的变量通知,我必须打开以下代码:

if($the_month != $row['the_month'])

进入

if(isset($the_month)  &&  $the_month != $row['the_month'])     

还有其他方法可以解决这个问题吗?这个解决方案对我来说似乎是浪费时间。

【问题讨论】:

标签: php


【解决方案1】:

在使用之前定义变量。这是唯一确定的方法。

许多网络主机仍然启用register_globals。这允许任何访问者通过向查询字符串添加内容来将变量注入到您的脚本中。

例如,如果您的脚本被称为example.php?the_month=5,则变量$the_month 会自动填充为5。这可能非常危险,因为有人可能会弄乱重要的变量关系到安全!因此,register_globals 现已弃用。

但这并不能改变许多网络主机仍然启用它的事实,因此每个 PHP 开发人员必须在使用它之前将每个变量定义为安全的东西。 否则,您无法保证该变量将包含您认为的内容。

【讨论】:

  • 很好的答案:这就是 KeenLearner 收到警告的原因,这是一个非常有效的警告。
【解决方案2】:

这个答案可能会有所帮助,因为它是相似的:

PHP: printing undefined variables without warning

例如:

你可以运行它并出现错误 抑制运算符@。

echo @$variable;

但是,最好不要忽略 unset 变量。未设置的变量可以 表示逻辑错误 脚本,最好确保所有 变量在使用前设置。

【讨论】:

    【解决方案3】:

    始终确保 $the_month 设置为某个值,即使是 NULL

    【讨论】:

      【解决方案4】:

      您不能随意访问可能已定义或未定义的变量,就这么简单。仅仅因为 PHP 允许你这样做并不意味着它是一种理智的编写代码的方式。请在此处参考我对类似问题的广泛回答:How to avoid isset() and empty()

      【讨论】:

        猜你喜欢
        • 2023-03-18
        • 1970-01-01
        • 2012-06-11
        • 1970-01-01
        • 1970-01-01
        • 2015-11-07
        • 1970-01-01
        • 2012-08-15
        • 2017-11-17
        相关资源
        最近更新 更多