PHPでPOST受け取れないと思ったら – React Native

 

やりたかったこと

ネイティブ側のフォームからパスワードとメアドを入力してもらい、それをPHPへPOST送信、ちゃんと受け取れてるかPHP側で受け取ったPOSTをネイティブ側でリクエストの結果をレスポンスで受け取ってアラート表示させるというもの。

できねえ

ネイティブ側でこういう風に書いて


    body: JSON.stringify({

    password: value.password,

    username: value.username

    })

PHP側でこういう風に受け取っても空っぽ


$_POST['password']; 
$_POST['username'];



原因

見過ごしていた、ネイティブ側の送信側で、ヘッダーがこういう風になっていた。これじゃあできないわな。クライアント側では直接JSONを本文に投げてきていた。Content-Type:application/json で送信されると、key=valueが無いので当然ながら、$_POST変数が空っぽになります。


    headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    },



解決

こんな感じですね。file_get_contents(‘php://input’);の部分はコピペでいいよ。

 


<?php


$json_string = file_get_contents('php://input');
echo $json_string;
$obj = json_decode($json_string);

$myObj->password = $obj['password'];
$myObj->username = $obj['username'];

$myJSON = json_encode($myObj);

echo $myJSON;

 

勉強になる参考

 

多分、ここら辺を読めば、今書いてることは詳しくわかる

 

藤沢瞭介(Ryosuke Hujisawa)
  • りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

未整理記事