2011-12-18 71 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=12 ...

任何人都有這個解決方案? :)在此先感謝...

+0

SO是什麼問題?你線的PHP似乎檢查存在的價值,如果它是數字。什麼不適合你? – Nanne 2011-12-18 13:17:13

+0

你會得到哪些錯誤? – middus 2011-12-18 13:17:31

+0

作爲什麼iv'e發佈這是在分頁 '$ offset = 3; $ limit =($ page - 1)* $ offset; $ onset = $ limit + $ offset;' 如果我在參數上加零,它會返回錯誤,也會給alpa和特殊字符... – 2011-12-18 13:20:21

回答

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 ..明白了:)謝謝你brooo :) – 2011-12-18 13:45:21

0

我只想用intval()$page默認值:

$page = 1; 

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

是否有頁面0?大部分時間'1'不是第一頁? – PeeHaa 2011-12-18 13:30:03

+0

我剛把它改爲1;)我以爲他直接把這個變量放到MySQL查詢中:'SELECT * FROM tbl LIMIT $ page,10'。但他用下面的公式計算極限值:'$ limit =($ page - 1)* $ offset;' – ComFreek 2011-12-18 13:31:45

+0

這個計算結果不錯,但只有在alpa和特殊字符中。 – 2011-12-18 13:37:46

0

使用intval然後檢查其轉換爲數字。如果該值不是數字,intval將返回0:

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

或更緊湊:

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

這是好的兄弟,但是當我把alpa和特殊字符的參數返回對象沒有找到! – 2011-12-18 13:39:43

+0

已解決...謝謝大家...... :)謝謝你so muchh ,,, – 2011-12-18 13:44:48

0

你已經有了一個封閉支架在錯誤的地方 - 應該是:

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

注意'is_numeric()後的第二個右括號 – Chris 2011-12-18 13:39:33