PHP中$_GET是一個(gè)全局?jǐn)?shù)組,可以用于接收GET請求中包含的參數(shù)。
在使用$_GET獲取GET請求參數(shù)時(shí),為了提高程序的健壯性和安全性,常常需要進(jìn)行一些過濾和驗(yàn)證。下面我們來分別介紹一些常見的GET請求參數(shù)過濾和驗(yàn)證方式。
1. 過濾非法字符
在接收GET請求參數(shù)時(shí),可以使用正則表達(dá)式過濾掉一些非法字符,例如:
$name = isset($_GET['name']) ? $_GET['name'] : ''; $name = preg_replace('/[^\w\s]/', '', $name);
代碼中的preg_replace函數(shù)使用了正則表達(dá)式匹配非數(shù)字、字母、下劃線和空格的字符,并用空字符串替代。
2. 驗(yàn)證輸入長度
為了防止提交的參數(shù)過長導(dǎo)致程序出錯,可以在接收參數(shù)時(shí)對其長度進(jìn)行檢測,如下所示:
$name = isset($_GET['name']) ? $_GET['name'] : ''; if(strlen($name) >20){ die('名稱不能超過20個(gè)字符!'); }
3. 過濾SQL注入
在接收參數(shù)后,需要對其進(jìn)行過濾,以防止SQL注入攻擊,例如:
$id = isset($_GET['id']) ? $_GET['id'] : 0; $id = intval($id);
代碼中的intval函數(shù)將$id轉(zhuǎn)換為整數(shù)類型,如果$id不是一個(gè)合法的整數(shù),則返回0。
4. 過濾XSS攻擊
在接收參數(shù)后,可以使用htmlspecialchars函數(shù)將其中的HTML特殊字符轉(zhuǎn)義,以防止XSS攻擊,例如:
$name = isset($_GET['name']) ? $_GET['name'] : ''; $name = htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
代碼中的htmlspecialchars函數(shù)將$name中的HTML特殊字符轉(zhuǎn)義,其中的ENT_QUOTES參數(shù)表示將雙引號和單引號都轉(zhuǎn)義。
總之,在使用$_GET接收GET請求參數(shù)時(shí),一定要進(jìn)行合適的過濾和驗(yàn)證,以確保程序的健壯性和安全性。