Предпочтительнее будет все-же
filter_input.
О нем позже!
Смотри, подумай, что ты сделал.
Логически.
Сначала у тебя было
$_GET['id'], после ты сделал приведение к типу
(int), после, ты обращаешься к функции
intval - которая преобразовывает из строкового в целочисленное, затем ты берешь функцию для работы со строками
strip_tags - которая вырезает теги
html и
php из строки, и в итоге
htmlspecialchars которая смотрит сущности, которых нет.
А даже если бы и были, то функция
strip_tags которая не знает об этом, пропустила бы, а вот функция
htmlspecialchars - в это время сделает нам теги, которые хотела удалить функция
strip_tags
Это к примеру!
Достаточно было:
PHP:
if($id = (int) $_GET['id']) {
var_dump($id);
}
А вообще, лучше использовать:
PHP:
if($id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT)) {
var_dump($id);
}
Используйте нужный фильтр для вашей задачи, почитайте
Типы фильтров
Кстати да,
isset как-раз нужен будет не на переменной, а на самом
$_GET['id']
PHP:
if(isset($_GET['id']) && $id = (int) $_GET['id']) {
var_dump($id);
}
Чтобы не было
Notices.