現在很流行使用 JSON 的傳資料,更懶惰的是連名字都沒有指定,直接將值 json_ecode() 後,直接整個 POST 過來,但是這樣子 $POST 沒有名字就無法抓取值,要怎麼做呢?
PHP 抓取沒有名字的 POST 值的方法
想要抓取沒有名稱的 $POST,可以使用 file_get_contents('php://input') 來抓,要順便 json_decode() 的完整寫法如下:
- $POST = jsondecode(file_get_contents('php://input'), true);
範例程式
- vim post_raw.php
- <?php
- $POST = jsondecode(file_get_contents('php://input'), true);
- var_dump($POST);
- ?>
- vim post_raw_send.php
- <?php
- post_url('http://example.com/post_raw.php', json_encode('["a" => "abc", "b" => "def"]'));
- function post_url($url, $postvar)
- {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $postvar);
- $res = curl_exec($ch);
- curl_close($ch);
- return $res;
- }
- ?>
- php post_raw_send.php
- string(28) "["a" => "abc", "b" => "def"]"