Ho una pagina (index.php) che prende una variabile GET
dall'URL e la controlla a fini di sicurezza. Questa variabile GET
dovrebbe essere solo un numero intero. Sto usando il seguente codice per controllare questo, ma in tutti i casi, intero o no, ottengo la pagina index.php. L'intestazione non appare mai. Dopo questo codice, viene visualizzato il resto della pagina a partire dal tag html
.PHP is_int non funziona come previsto
PHP:
<?php ob_start(); session_start();
$q=trim($_GET['q']);
if (!is_numeric($q)){
header("HTTP/1.0 404 Not Found");
}
?>
Non so se lo sai già, ma dovresti aggiungere un 'exit();' dopo l'intestazione '(..)'. Altrimenti lo script continuerà a stampare i contenuti della pagina. – laher
Leggendo [la documentazione] (http://php.net/manual/en/function.is-int.php) verrebbe mostrato che 'is_int()' verifica il tipo della variabile, quindi stringa con "' 123 '' in 'is_int()' non restituirà 'true', poiché si tratta di una stringa. Inoltre perché hai taggato il tuo post con 'http-status-code-404'? – Tadeck
@ Tag tag rimosso. grazie per quella documentazione ora sto usando is_numeric e non funziona ancora – kirby