$_REQUEST是PHP中的一個(gè)超全局變量,用于獲取來自GET、POST、COOKIE的請(qǐng)求參數(shù)。你可以通過$_REQUEST數(shù)組輕松地獲取提交的表單數(shù)據(jù)、Cookies或URL的查詢字符串。
與$_GET用于接收GET請(qǐng)求參數(shù)、$_POST用于接收POST請(qǐng)求參數(shù)不同,$_REQUEST是一個(gè)通用的請(qǐng)求變量。如果既有GET請(qǐng)求參數(shù)又有POST請(qǐng)求參數(shù),就可以使用$_REQUEST同時(shí)獲取兩者的參數(shù)。舉個(gè)例子,在表單提交方法為POST時(shí),可以通過以下代碼獲取表單中的所有數(shù)據(jù):
$data = $_REQUEST;當(dāng)然,使用$_REQUEST獲取請(qǐng)求參數(shù)會(huì)帶來一些安全問題。比如,由于$_REQUEST同時(shí)獲取GET和POST請(qǐng)求參數(shù),可能會(huì)意外獲取到潛在的惡意參數(shù)。 解決這個(gè)問題的一個(gè)辦法是在表單提交時(shí)使用POST方法,以避免惡意參數(shù)被插入到URL中。另一個(gè)解決方案是使用服務(wù)器端的安全框架來攔截惡意請(qǐng)求參數(shù)。 當(dāng)你使用$_REQUEST時(shí),應(yīng)該注意以下4個(gè)方面: 1. $_REQUEST影響到全局命名空間,因此它的使用應(yīng)該謹(jǐn)慎。當(dāng)你需要多次調(diào)用頁面或在多個(gè)頁面之間共享數(shù)據(jù)時(shí),應(yīng)該從$_REQUEST中解除數(shù)據(jù)。 2. $_REQUEST相對(duì)其他請(qǐng)求變量(比如$_GET和$_POST)耗費(fèi)更多的服務(wù)器資源。如果你可以明確需要的請(qǐng)求變量,最好使用$_GET和$_POST獲取參數(shù)。 3. 盡管$_REQUEST可以同時(shí)獲取GET和POST請(qǐng)求參數(shù),但不建議依賴參數(shù)的請(qǐng)求方式來確定接收到的請(qǐng)求參數(shù)類型。你應(yīng)該使用相應(yīng)的請(qǐng)求變量來獲取不同類型的請(qǐng)求參數(shù)。 4. 應(yīng)該避免使用$_REQUEST在處理文件上傳時(shí),因?yàn)樗鼰o法獲取上傳的文件。 總體來說,$_REQUEST是一個(gè)非常方便的變量,它允許你在一個(gè)數(shù)組中獲取來自不同來源的請(qǐng)求參數(shù)。但需要注意的是,它具有潛在的安全問題和資源開銷問題,與其它請(qǐng)求變量相比,應(yīng)該謹(jǐn)慎使用。 最終的建議是:無論何時(shí),盡可能使用明確的請(qǐng)求變量來獲取請(qǐng)求參數(shù)。如果需要處理多種請(qǐng)求類型,在代碼中判斷請(qǐng)求方式即可。
上一篇$_post()php