1

基本上我在一个页面上有一堆链接,我会使用这样的东西

<?PHP echo $SITE_PATH ?>

在同一页面上多次出现,但这样做会在 PHP 中显示一个通知。

我知道你应该使用像isset()这样的东西,但我真的需要每次打电话时都使用它吗?

<?PHP echo $SITE_PATH ?>

--- 编辑:
如果我切换到使用定义的变量,那么通知似乎消失了

4

4 回答 4

9

这里有两种解决方案:

  • 只使用存在的变量——这可能是你应该做的。
  • 或在尝试使用它们之前测试它们是否存在(与isset) 。

没有魔法^^

如果您的应用程序使用了许多未设置的变量,则您的设计中可能存在一些问题。


在您介绍的情况下,对于多次使用的变量,我会确保它存在,如果不存在,则将其设置为 '',例如,在我的脚本开头。

这看起来不太好,但它会起作用——而且,这样,您不必遍历整个应用程序,修补所有内容。

(或者我也可能禁用E_NOTICE error_reporting关卡——我不喜欢这个想法,但有时,它确实是处理某些代码库的唯一方法)

于 2009-12-24T19:17:08.917 回答
4

您可以使用 @ 来隐藏消息:

print @$site_path;

或者您可以使用三元运算来获取默认值:

print (isset($site_path)) ? $site_path : "default_path" ;

最后,您不应该使用未设置的变量。如果你是,你需要重新考虑你的方法。预先处理此信息,以便您的其余脚本可以运行而不会出现此类问题。

于 2009-12-24T19:15:25.583 回答
1

你真的应该确保在使用它之前设置一个变量(尤其是在页面上回显它)。如果变量来自不安全的来源($_GET、$_POST、数据库),那么您应该进行某种类型的过滤以防止安全漏洞(跨站点脚本(XSS)、跨站点请求伪造(CSRF)等。 .) 但是如果你觉得一切都很安全并且你只是不想显示错误(例如在生产中),请将你的错误报告设置为 0。

例如error_reporting(0);

您可以在 php.ini 级别或按页面执行此操作(设置error_reporting(0);在页面顶部)。

附带说明一下,在生产过程中,您永远不想显示错误。而是记录它们。在开发中,您希望查看所有错误 (E_STRICT)。

于 2009-12-24T19:36:56.710 回答
0

您可以创建一个函数来检查变量是否已设置并返回它:

function EchoVar() {
    global $SITE_PATH;
    return isset($SITE_PATH) ? $SITE_PATH : '';
}

// calling it
echo EchoVar();
于 2009-12-24T19:20:18.957 回答