克服NetBeans中的警告 - PHP - 不要直接使用Superglobals数组$ _GET

时间:2014-11-20 14:11:53

标签: php netbeans superglobals

我有一些这样的代码行;

一个。

    if ( isset($_GET["logout"]) && $_GET["logout"] == 1){
    do_something;
    }

我替换为(以消除警告);

    if ( isset( filter_input(INPUT_GET,'logout',FILTER_SANITIZE_NUMBER_INT)  ) &&  
    filter_input(INPUT_GET,'logout',FILTER_SANITIZE_NUMBER_INT) == 1){ 
    do_something;
    }

但我最终用B打破了应用程序。登录屏幕甚至没有出现。 apache错误日志中也没有错误。

这是示例网址;

 http://192.168.0.91/test-app/?logout=1

我的B.语法/代码出了什么问题?我想我错误地使用了filter_input?

UPDATE1:

php version - > php5-5.4.20-34.3.x86_64 netbeans版本 - > 8.0.1

2 个答案:

答案 0 :(得分:1)

  1. A没有任何问题。禁用Netbeans中的提示,或忽略它。

  2. 不,B没有任何问题。filter_input如果密钥不存在则返回null,如果条件为isset将返回false null,所以你的逻辑很好,而且函数的使用也是如此。唯一的问题可能是您的PHP版本太旧了。 filter_input在5.2.0中引入。

答案 1 :(得分:0)

通过更改为

来修复代码B.
if ( filter_input(INPUT_GET,"logout",FILTER_SANITIZE_STRING) !== null &&    
filter_input(INPUT_GET,"logout",FILTER_SANITIZE_INT)==1) { 
dosomething;
}

应用程序现在运行良好。

这个修复的灵感来自David Zentgraf在http://kunststube.net/isset/的精彩文章。 希望有办法联系他来感谢他,但......显然他是一名常客。

Thanx Bro:)