is_int
проверяет, что тип данных является целым числом, но все в $_GET
будет строкой. Следовательно, он всегда будет возвращать false
.
В крайнем случае, вы можете привести к целому числу, а затем проверить! = 0.
$id = isset($_GET['id']) ? (int) $_GET['id'] : null;
if (!$id) { // === 0 || === null
header('HTTP/1.1 404 Not Found');
exit('404, page not found');
}
Но более надежное решение будет включать проверку или фильтрацию входных строк, например, встроенную в PHP filter_input_array()
.
(Отредактировано сообщение 13 октября, поскольку оно все еще получает голоса, и оно было несколько смутно сформулировано.)