我有一些这样的代码行;
一个。
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
答案 0 :(得分:1)
A没有任何问题。禁用Netbeans中的提示,或忽略它。
不,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:)