2011-12-18 14 views
1

こんにちは、番号をGET変数として受け入れる

$_GETの方法で数字だけを許可したいと思います。私はこれは私が特殊文字やアルファを入力した場合、それはこれが可能にすべきではないエラー

を返し

$page = (isset($_GET['page']) && is_numeric($_GET['page']) ? (int) $_GET['page'] : 1);

を確保するためにページネーションである使用:

index.php?page=AAindex.php?page='[email protected]#$%^&*()

これだけ: index.php?page=1または2 ...

誰でもこれに対応していますか? :)事前のおかげで...

+0

だから問題は何ですか? phpの行は、値が存在するかどうか、それがnummericかどうかをチェックするようです。何があなたのために働くのですか? – Nanne

+0

どのエラーが表示されますか? – middus

+0

何をiv'eとして投稿しているかはページ番号 '$ offset = 3; $ limit =($ page - 1)* $ offset; $ onset = $ limit + $ offset; ' パラメータを0にすると、アルファと特殊文字にもエラーが返されます... –

答えて

4

私はあなたが閉鎖を持ってfilter_input()

$page= filter_input (INPUT_GET, 
         'page', 
         FILTER_VALIDATE_INT, 
         array('options'=>array('min_range' => 1))); 
if(!$page)$page=1; 
+0

ahh whew ..ありがとうございます:) –

0

私はちょうど$pageためintval()とデフォルト値を使用します。

$page = 1; 

if (isset($_GET['page'])) 
    $page = intval($_GET['page']); 
+0

ページはありますか?最初のページはほとんどの時間 '1'ですか? – PeeHaa

+0

私はちょうど1に変更しました;)私は彼がこの変数をMySQLのクエリに直接入れると思った: 'SELECT * FROM tbl LIMIT $ page、10'。しかし彼は '$ limit =($ page-1)* $ offset;' – ComFreek

+0

で計算を行うことはできますが、アルファと特殊文字でしか計算できません。 –

0

はそれをチェックしintvalを使用して数に変換します。

if (isset($_GET['page'])) 
    if (intval($_GET['page'] == 0) 
     $page = 1; 
    else 
     $page = intval($_GET['page']); 

以上のコンパクト::値が数値でない場合、intvalは0を返します

$page = (isset($_GET['page']) && intval($_GET['page'] != 0) ? intval($_GET['page']) : 1; 
+0

それは良い仲間ですが、私はアルパと特殊な文字をパラメータに返すオブジェクトが見つかりません! –

+0

解決済み...皆さんありがとうございました... :) –

0

の使用をお勧めしますブラケットを間違った場所に置いてください。 -

$page = (isset($_GET['page']) && is_numeric($_GET['page'])) ? (int) $_GET['page'] : 1; 
+0

'is_numeric()'の後ろに2番目の閉じ括弧があることに注意してください。 – Chris

関連する問題