Intval函數獲取變量整數數值
Intval最大的值取決於操作系統。 32 位系統最大帶符號的 integer 范圍是 -2147483648 到 2147483647。舉例,在這樣的系統上, intval(‘1000000000000’) 會返回 2147483647。64 位系統上,最大帶符號的 integer 值是 9223372036854775807。
這個有個應用就是在判斷數值是不是回文上,如果參數為2147483647,那么當它反過來,由於超出了限制,所以依然等於2147483647。即為回文。
is_numeric() 判斷變量是否為數字或數字字符串,不僅檢查10進制,16進制是可以。
is_numeric函數對於空字符%00,無論是%00放在前后都可以判斷為非數值,而%20空格字符只能放在數值后。所以,查看函數發現該函數對對於第一個空格字符會跳過空格字符判斷,接着后面的判斷!
該函數還可能造成sql注入,例如將‘1 or 1'轉換為16進制形式,再傳參,就可以造成sql注入
intval($req["number"])=intval(strrev($req["number"])) 如果要求不是回文,但又要滿足這個條件,可以用科學計數法構造0=0:number=0e-0%00