こんにちは、さるまりんです。
PHPでサーバーにデータをPOSTで送信しようと思いまして。
file_get_contents()
でPOSTする
以下のように行います。
$url = '送り先URL';
$data = [];
// $dataに送るデータを詰めます。
$data['name'] = 'salumarine';
$data['type'] = 'monkey';
// 送信データをURLエンコード。
$data = http_build_query($data, "", "&");
// これを指定しないと動かない?
$header = [
"Content-Type: application/x-www-form-urlencoded",
"Content-Length: ".strlen($data)
];
// 送信の準備(ストリームを作る)
$options =[
'http' => [
'method' => 'POST',
'header' => implode("\r\n", $header),
'content' => $data
]
];
$context = stream_context_create($options);
$contents =file_get_contents($url, false, $context);
上のコードを簡単に説明しますね。
$url
は送信先のURLの文字列です。
送信するデータの配列を作成しデータを詰めます。
http_build_query()
で送信データをURLエンコードしたクエリー文字列にします。
Content-Type
を指定しないとエラーになる(ことがある?)のでヘッダーに"application/x-www-form-urlencoded"
を指定します。
そしてstream_context_create()
で渡すデータをストリームにして
ファイルの内容を取得するための関数file_get_contents()
でサーバーにデータを送信、その結果を取得します。
このfile_get_contents()
ですが、
$html = file_get_contents('https://salumarine.com/');
のようにしてシンプルにWebサイト上のページのソースを取得することができます。
POSTでデータ送信をするのにcurl
を使う方法もあります。
これについては次に書かせてもらいますね。
読んでくださってありがとうございます。
ではまた!