У меня есть несколько строк кода, как это;
A.
if ( isset($_GET["logout"]) && $_GET["logout"] == 1){
do_something;
}
Я заменяю на (чтобы избавиться от предупреждения);
B.
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 также нет ошибок.
Это образец URL;
http://192.168.0.91/test-app/?logout=1
Что не так с моим синтаксисом / кодом B. Я предполагаю, что я использую filter_input неправильно?
Update1:
версия php -> php5-5.4.20-34.3.x86_64
версия NetBeans -> 8.0.1
В A. нет ничего плохого. Отключите подсказку в Netbeans или проигнорируйте ее.
Нет, с Б. все в порядке filter_input
возвращается null
если ключ не существует, и isset
вернусь false
если условие null
, так что ваша логика в порядке, и использование функции тоже. Единственная проблема может заключаться в том, что ваша версия PHP слишком старая. Фильтр_вход был введен в 5.2.0.
Код Б. был исправлен путем изменения на;
if ( filter_input(INPUT_GET,"logout",FILTER_SANITIZE_STRING) !== null &&
filter_input(INPUT_GET,"logout",FILTER_SANITIZE_INT)==1) {
dosomething;
}
Приложение работает нормально сейчас.
Вдохновением для этого исправления является фантастическая статья в http://kunststube.net/isset/ Дэвид Зентграф.
Хотелось бы, чтобы был способ связаться с ним, чтобы поблагодарить его, но … очевидно, он здесь постоянный.
Спасибо Бро 🙂