php 輸入輸出資料流詳解及執行個體分析

來源:互聯網
上載者:User
本文主要介紹php 輸入輸出資料流,這裡整理了相關資料及簡單範例程式碼,有需要的小夥伴可以參考下

最近在學習http協議!為了更好理解http協議,看了一下nodejs的http的模組!感覺收穫還是挺多的。比如我用http的request發一個請求:

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 bodyreq.end('name=liuzhang&age=28');

上述代碼的意思是發送資料'name=liuzhang&age=28',回調是響應的對象,把伺服器響應的資料列印出來!

data.php 代碼是

print_r($_POST);

列印傳過來的資料!

在命令列啟動並執行結果是

可以看到Array是空,就是$_POST 沒有資料,一開始我以為是資料沒有傳過來!但是我把後端data.php 改成

echo file_get_contents("php://input");

接收到了傳過來的資料!

php://input 是個可以訪問請求的未經處理資料的唯讀流。 POST 請求的情況下,最好使用 php://input 來代替 $HTTP_RAW_POST_DATA,因為它不依賴於特定的 php.ini 指令。 而且,這樣的情況下 $HTTP_RAW_POST_DATA 預設沒有填充, 比啟用 always_populate_raw_post_data 潛在需要更少的記憶體。 enctype="multipart/form-data" 的時候 php://input 是無效的。

$_POST僅當資料按 application/x-www-form-urlencoded 類型提交時才能得到,form的enctype屬性為編碼方式,常用有兩種:application/x-www-form-urlencoded和multipart/form-data,預設為application/x-www-form-urlencoded。 當action為get時候,瀏覽器用x-www-form-urlencoded的編碼方式把form資料轉換成一個字串(name1=value1&name2=value2...),然後把這個字串append到url後面,用?分割,載入這個新的url。 當action為post時候,瀏覽器把form資料封裝到http body中,然後發送到server。

當我們把發送options改成

var options = { host: 'localhost', port: 80, path: '/backbone/data.php', method: 'POST', headers : {'Content-Type': 'application/x-www-form-urlencoded'}};

加上一個headers content-type 就可以用$_POST 接收到資料! 如果不是這種的form類型,你就可以用原始的輸入接收資料!

總結:以上就是本篇文的全部內容,希望能對大家的學習有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.