php 輸入輸出流詳解及示例代碼
最近在學(xué)習(xí)http協(xié)議!為了更好理解http協(xié)議,看了一下nodejs的http的模塊!感覺(jué)收獲還是挺多的。比如我用http的request發(fā)一個(gè)請(qǐng)求:
var options = { host: 'localhost', port: 80, path: '/backbone/data.php', method: 'POST' }; var req = http.request(options, function(res) { console.log('STATUS: ' + res.statusCode); console.log('HEADERS: ' + JSON.stringify(res.headers)); res.setEncoding('utf8'); res.on('data', function (chunk) { console.log('BODY: ' + chunk); }); }); // write data to request body req.end('name=liuzhang&age=28');
上述代碼的意思是發(fā)送數(shù)據(jù)'name=liuzhang&age=28',回調(diào)是響應(yīng)的對(duì)象,把服務(wù)器響應(yīng)的數(shù)據(jù)打印出來(lái)!
data.php 代碼是
print_r($_POST);
打印傳過(guò)來(lái)的數(shù)據(jù)!
在命令行運(yùn)行的結(jié)果是
可以看到Array是空,就是$_POST 沒(méi)有數(shù)據(jù),一開(kāi)始我以為是數(shù)據(jù)沒(méi)有傳過(guò)來(lái)!但是我把后端data.php 改成
echo file_get_contents("php://input");
接收到了傳過(guò)來(lái)的數(shù)據(jù)!
php://input 是個(gè)可以訪問(wèn)請(qǐng)求的原始數(shù)據(jù)的只讀流。 POST 請(qǐng)求的情況下,最好使用 php://input 來(lái)代替 $HTTP_RAW_POST_DATA,因?yàn)樗灰蕾?lài)于特定的 php.ini 指令。 而且,這樣的情況下 $HTTP_RAW_POST_DATA 默認(rèn)沒(méi)有填充, 比激活 always_populate_raw_post_data 潛在需要更少的內(nèi)存。 enctype="multipart/form-data" 的時(shí)候 php://input 是無(wú)效的。
$_POST僅當(dāng)數(shù)據(jù)按 application/x-www-form-urlencoded 類(lèi)型提交時(shí)才能得到,form的enctype屬性為編碼方式,常用有兩種:application/x-www-form-urlencoded和multipart/form-data,默認(rèn)為application/x-www-form-urlencoded。 當(dāng)action為get時(shí)候,瀏覽器用x-www-form-urlencoded的編碼方式把form數(shù)據(jù)轉(zhuǎn)換成一個(gè)字串(name1=value1&name2=value2...),然后把這個(gè)字串a(chǎn)ppend到url后面,用?分割,加載這個(gè)新的url。 當(dāng)action為post時(shí)候,瀏覽器把form數(shù)據(jù)封裝到http body中,然后發(fā)送到server。
當(dāng)我們把發(fā)送options改成
var options = { host: 'localhost', port: 80, path: '/backbone/data.php', method: 'POST', headers : {'Content-Type': 'application/x-www-form-urlencoded'} };
加上一個(gè)headers content-type 就可以用$_POST 接收到數(shù)據(jù)! 如果不是這種的form類(lèi)型,你就可以用原始的輸入接收數(shù)據(jù)!
以上就是對(duì)PHP 輸入輸出流做的資料整理,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料,謝謝大家對(duì)本站的支持!
相關(guān)文章
PHP配置把錯(cuò)誤日志以郵件方式發(fā)送方法(Windows系統(tǒng))
這篇文章主要介紹了PHP配置把錯(cuò)誤日志以郵件方式發(fā)送方法(Windows系統(tǒng)),本文給出了配置示例和使用例子,需要的朋友可以參考下2015-06-06thinkPHP內(nèi)置字符串截取函數(shù)用法詳解
這篇文章主要介紹了thinkPHP內(nèi)置字符串截取函數(shù)用法,結(jié)合實(shí)例形式分析了thinkPHP內(nèi)置的字符串截取函數(shù)功能與具體使用方法,以及針對(duì)無(wú)法添加省略號(hào)的源碼修改技巧,需要的朋友可以參考下2016-11-11服務(wù)器上配置PHP運(yùn)行環(huán)境教程
這篇文章主要介紹了如何在服務(wù)器上配置PHP運(yùn)行環(huán)境的方法及相關(guān)配置,十分全面,這里推薦給大家。2015-02-02php根據(jù)數(shù)據(jù)id自動(dòng)生成編號(hào)的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇php根據(jù)數(shù)據(jù)id自動(dòng)生成編號(hào)的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10PHP通用分頁(yè)類(lèi)page.php[仿google分頁(yè)]
PHP通用分頁(yè)類(lèi)。本代碼是用于分頁(yè)用的,稍做修改可用于各種程序。 使用方式請(qǐng)參考本人文章。2008-08-08PHP靜態(tài)調(diào)用非靜態(tài)方法的應(yīng)用分析
本篇文章介紹了,PHP靜態(tài)調(diào)用非靜態(tài)方法的應(yīng)用分析。需要的朋友參考下2013-05-05Yii中創(chuàng)建自己的Widget實(shí)例
這篇文章主要介紹了Yii中創(chuàng)建自己的Widget實(shí)現(xiàn)方法,結(jié)合具體實(shí)例形式較為詳細(xì)的分析了Yii中創(chuàng)建Widget的步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-01-01