這篇文章主要講解了“PHP中接收外部參數(shù)的方式有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“PHP中接收外部參數(shù)的方式有哪些”吧!
企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對外擴(kuò)展宣傳的重要窗口,一個(gè)合格的網(wǎng)站不僅僅能為公司帶來巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺,創(chuàng)新互聯(lián)公司面向各種領(lǐng)域:成都自拌料攪拌車等成都網(wǎng)站設(shè)計(jì)公司、營銷型網(wǎng)站建設(shè)解決方案、網(wǎng)站設(shè)計(jì)等建站排名服務(wù)。
對于PHP這樣一個(gè)web語言來說,接參是非常重要的一個(gè)能力。畢竟從前端表單或異步請求傳遞上來的數(shù)據(jù)都要獲取到才能進(jìn)行正常的交互展示。當(dāng)然,這也是所有能夠進(jìn)行web開發(fā)的語言的必備能力。今天我們就來看看PHP各種各樣的接參形式。
首先,我們要準(zhǔn)備一個(gè)靜態(tài)頁面,就像下面這個(gè)一樣,它提供了一個(gè)表單,同時(shí)url里還帶有一個(gè)GET參數(shù):
Document
// 正常的GET、POST
echo $_GET['show'], '
'; // 1
echo $_POST['name'], '
'; // 提交的內(nèi)容
這是最基礎(chǔ)的也是最直接的接參方式,GET參數(shù)通過 $_GET 獲取,POST參數(shù)通過 $_POST 獲取,互相都不干擾。
// 使用REQUEST
echo $_REQUEST['show'], '
'; // 1
echo $_REQUEST['tel'], '
'; // 提交的內(nèi)容
$_REQUEST 則是獲取所有請求中的參數(shù),不包括上傳文件。也就是說,它包含了 $_GET 、 $_POST 以及 $_COOKIE(需要配置,默認(rèn)不包含) 這三個(gè)接參變量中的所有內(nèi)容。這里需要注意的一點(diǎn)是,PHP5.3以后, $_REQUEST 接受的參數(shù)變量內(nèi)容由 php.ini 文件中的 request_order 指定,默認(rèn)情況下這個(gè)配置參數(shù)的值是 GP 也就是 GET 和 POST ,并沒有 COOKIE ,想要 COOKIE 的話需要修改這里添加一個(gè)C就可以了。
如果 $_GET 、 $_POST 中有同名的內(nèi)容呢?$_REQUEST 展示的順序也是根據(jù)這配置參數(shù)的順序來的,從左至右,后面的覆蓋前面的,比如你配置的是GP 那么參數(shù)覆蓋的順序是:POST > GET,最終顯示的就是 POST 中的內(nèi)容。
// register_globals 如果打開
echo $name, '
'; // 提交的內(nèi)容
echo $tel, '
'; // 提交的內(nèi)容
這是一個(gè)不安全的配置,也是在 php.ini 文件中進(jìn)行配置的。它的作用就是將請求來的參數(shù)直接轉(zhuǎn)成變量,有全局變量污染的問題,不要打開?。?!現(xiàn)在的 php.ini 文件中基本都是默認(rèn)關(guān)閉的。
// import_request_variables 抱歉,5.4之后已經(jīng)取消了
import_request_variables('pg', 'pg_');
echo $pg_show, '
';
echo $pg_name, '
';
這個(gè)函數(shù)是手動將指定的參數(shù)變量里面的內(nèi)容注冊為全局變量,同樣的,它也在5.4之后被取消的,這樣的函數(shù)都會存在風(fēng)險(xiǎn),我們了解一下曾經(jīng)有過這樣一個(gè)函數(shù)即可。
extract($_POST, EXTR_PREFIX_ALL, 'ex');
echo $ex_name, '
'; // 提交的內(nèi)容
echo $ex_tel, '
'; // 提交的內(nèi)容
extract 是目前可以代替上面兩種參數(shù)轉(zhuǎn)變量的方式中目前依然支持的。它是由我們自己來控制對已存在變量的覆蓋的,也就是第二個(gè)參數(shù),這樣在可控的環(huán)境下可以極大地避免污染全局變量的問題,當(dāng)然前提還是我們自己要確定使用它,具體內(nèi)容可以自行查找文檔參考哦!
// 參數(shù)名中的.和空格
echo $_REQUEST['address_prov'], '
'; // 提交的內(nèi)容
echo $_REQUEST['address_city'], '
'; // 提交的內(nèi)容
表單提交的 input 的 name 中如果包含 . 或者 空格 ,將直接轉(zhuǎn)換成 下劃線 。不過我們在前端命名中也不建議使用 . 或者 空格 ,需要的時(shí)候直接就使用 下劃線 就好了,前后端不要造成歧義。
// 參數(shù)名中的[]
print_r($_REQUEST['interest']); // Array (v,....)
echo '
';
print_r($_REQUEST['edu']); // Array (k/v,....)
當(dāng)表單提交的 input 的 name 是數(shù)組形式的,也就是 "interest[]" 或 "edu[one]" 這種形式時(shí),我們接收到的參數(shù)默認(rèn)就會成為一個(gè)數(shù)組形式的內(nèi)容。
// php://input
$content = file_get_contents('php://input');
print_r($content); //name=xxx&.....
最后就是現(xiàn)在接口開發(fā)中經(jīng)常會使用的 php://input 形式接參。一般是因?yàn)榘踩騾?shù)字段較多的情況下,前端騎過 Body Raw 的形式直接傳遞一整段的 Body 內(nèi)容過來。這時(shí)候就只能用這種形式獲取到了,這個(gè) Body Raw 的原始內(nèi)容一般會是一整段的文字,也有可能是進(jìn)行過一些加密處理的內(nèi)容,格式可以自己定義。而面對普通表單,我們將會接收到的也是原始的表單內(nèi)容,就像上面的 name=xxx&tel=xxx&.... 這樣的內(nèi)容。
需要注意的是 enctype="multipart/form-data" 時(shí)它是無法獲取到內(nèi)容的。同時(shí),這種方式也是代替 $HTTP_RAW_POST_DATA 全局變量的,不要再使用淘汰的能力了哦,盡早更新新版本的PHP使用新的語法特性哦!
感謝各位的閱讀,以上就是“PHP中接收外部參數(shù)的方式有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對PHP中接收外部參數(shù)的方式有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!