質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1486閲覧

PHPからJSONをPOSTする件に関して

Yasu0421

総合スコア37

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/08/27 05:31

皆様には、いつもお世話になっております。
送り側のPHPからJSONデータを受けてのPHPに渡して、そのリプライを表示する動作を確認するために、
学習サイトに掲示されているサンプルを例に実行してみましたが、うまく動作してくれません。
《送り側のPHP:send.php》

php

1<?php 2// 送信データ 3$data = array( 4"key1" => "value1", 5"key2" => "value2" 6); 7// JSON形式に変換 8$data = json_encode($data); 9// ストリームコンテキストのオプションを作成 10$options = array( 11// HTTPコンテキストオプションをセット 12'http' => array( 13'method'=> 'POST', 14'header'=> 'Content-type: application/json; charset=UTF-8', //JSON形式で表示 15'content' => $data 16) 17); 18// ストリームコンテキストの作成 19$context = stream_context_create($options); 20// POST送信 21$contents = file_get_contents('./reception.php', false, $context); 22// reception.php のレスポンスを表示 23echo "contents => $contents";

《受けてのPHP:reception.php》

php

1<?php 2// POST の生データの読み込む 3$json_string = file_get_contents('php://input'); 4// JSON形式で表示 5echo "JSON形式:".$json_string.""; 6echo "PHP変数に変換:"; 7// JSON エンコードされた文字列を PHP の変数に変換 8$contents = json_decode($json_string); 9// reception.php のレスポンスを表示 10print_r($contents);

《実行した結果》
contents =>
となり、なにもリプライされてこない状態です。
##確認してみたこと
ブラウザのデベロッパーで確認したところ下図のように、reception.phpのソースがそのまま
コメントとして$contentsに格納されているような状態でした。
イメージ説明

###原因と対策、ご教示いただければ助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/08/27 05:34

PHPのバージョンはいくつでしょうか
Yasu0421

2019/08/27 05:41

問合せありがとうございます。 5.6.38と7.1.23との両方で確認しましたが、どちらとも同じ状況でした。 よろしくお願いいたします。
guest

回答2

0

単にファイルとしてよみこんでるだけでは?
URLをフルパスで記述してください。

file_get_contents('./reception.php', ...

投稿2019/08/27 05:53

Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.H.

2019/08/27 05:54

あぁ遅かった(^-^;
guest

0

ベストアンサー

file_get_contents()はあくまで対象先の「ファイルの内容が格納された文字列」としてそのまま取り込むものす。
プログラムとして実行されていない.phpのファイルを指定しているのでコードがそのまま取得されます。

「実行結果」としたいのでしたらhttp://から始まるURLにすることで
指定先に対してリクエストを送ることになります。

私のローカルの例

php

1$contents = file_get_contents('http://localhost/reception.php', false, $context);

出力結果

contents => JSON形式:{"key1":"value1","key2":"value2"}PHP変数に変換:stdClass Object ( [key1] => value1 [key2] => value2 )

投稿2019/08/27 05:46

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/08/27 05:55

と偉そうに回答しましたが、動作検証して知ったことだったりします。 「実行結果返さなきゃいけないな~cURLとかのほうがいいのかな。あ、リクエスト送るならフルパスだ」という感じで。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問