题
基本上我在一个页面上有很多链接,我会使用这样的东西
<?PHP echo $SITE_PATH ?>
在同一页面上多次出现,但会在 PHP 中显示这样做的通知。
我知道你应该使用类似的东西 伊塞特() 但我真的需要每次打电话时都使用它吗?
<?PHP echo $SITE_PATH ?>
- - 编辑 :
如果我改用已定义的变量,那么通知似乎就会消失
解决方案
两个解决方案,在这里:
- 只使用存在的变量——这可能是你应该做的。
- 或测试它们是否存在 (和
isset
) 在尝试使用它们之前。
没有什么魔法^^
如果您的应用程序使用许多未设置的变量,则您的设计可能存在一些问题。
在您提出的情况下,对于多次使用的变量,我会确保它存在,如果不存在,则将其设置为“”,例如在脚本的开头。
这看起来不太好,但它会起作用——这样,您就不必检查整个应用程序,修补所有内容。
(或者我也可能禁用 E_NOTICE
error_reporting
level——我不喜欢这个想法,但是,有时,这确实是处理某些代码库的唯一方法)
其他提示
可以通过使用剿消息@:
print @$site_path;
或者你可以使用一个三元操作以获取一个默认值:
print (isset($site_path)) ? $site_path : "default_path" ;
在比赛的最后阶段,不应该被使用的未设置变量。如果你是,你需要重新考虑你的方法。处理这种信息的前期,所以你的脚本的其余部分可以不喜欢这个问题上运行。
您真的应该确保变量在使用它(尤其是它呼应的页面)之前设置。如果变量是从一个不安全的源来($ _ GET,$ _ POST,数据库),那么你应该做一些类型的过滤,以防止安全漏洞(跨站点脚本(XSS),跨站请求伪造(CSRF)等。 。),但如果你觉得一切是安全的,你只是不希望显示错误(例如,在生产中)设置你的错误报告0
E.g。 error_reporting(0);
可以(在页面的顶部集error_reporting(0);
)在php.ini中水平或每页执行此操作。
在一个侧面说明,在生产,你永远不希望显示错误。登录他们,而不是。在发展你想看到所有的错误(E_STRICT)的。
您可以创建一个函数来检查变量设置并返回它:
function EchoVar() {
global $SITE_PATH;
return isset($SITE_PATH) ? $SITE_PATH : '';
}
// calling it
echo EchoVar();