9

GETURL から変数を取得し、セキュリティ目的でチェックするページ (index.php) があります。このGET変数は整数のみにする必要があります。これを確認するために次のコードを使用していますが、整数であるかどうかにかかわらず、すべてのインスタンスで index.php ページが表示されます。ヘッダーは表示されません。htmlこのコードの後に​​、タグで始まるページの残りの部分が表示されます。

PHP:

<?php ob_start(); session_start();
$q=trim($_GET['q']);
if (!is_numeric($q)){
header("HTTP/1.0 404 Not Found");
}
?>
4

3 に答える 3

28

クエリ文字列で渡された場合、整数にはなりません。

試すis_numeric()

于 2012-01-22T19:26:31.163 に答える
4

これを行うには、int にキャストするより良い方法があります。

$q = (int) $_GET['q'];

is_int期待どおりに動作しています。GET 引数は常に文字列であるためです。それらを var_dumping してみてください。

于 2012-01-22T19:28:09.057 に答える