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

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

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

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

Q&A

解決済

5回答

10358閲覧

複数のPHPファイルにPOST送信を行いたい

akoro

総合スコア27

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

1グッド

1クリップ

投稿2018/12/14 08:10

■背景
PHP始めて数日のド初心者です。
まだ効率の良い調べ方も身についていないため、情報が取れませんでした。
初歩的な初歩的な質問かもしれません。
ご教授くださると助かります。

■達成したいこと
1枚目で入力した内容を、複数のPHPファイルからで取得したい

■現状
以下の通り入力すると、file3.phpでは$_POST['name']が反映されず、
Undefined index:
というエラーが出る

■試したこと
①file1.phpに以下のようにPOST送信先を二つ設定してみた 

<form action='file2.php' method="POST"> <form action='file3.php' method="POST"> <?php echo" 名前を入力してくください。<br>\n" ?> <input type="text" name="name">

file2.php

<form action='file3.php' method='POST'> <?php $name=$_POST['name']; //名前の出力 echo "こんにちは"; echo $name. "さん"; ?>

file3.php もう一度$_POSTしてみた  

$name=$_POST['name']; echo $name."さんは~~~";

■環境
xampp,atom,windows,localhost

よろしくお願いします。

DrqYuto👍を押しています

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

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

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

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

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

guest

回答5

0

まず、「もう一度POSTしてみた」という記述は操作として何をしたのでしょうか?

file1.phpで実際のファイルがどうなっているのかはわかりませんが、
formの中にformがあるような状況でブラウザは認識していると思います。
そのため、file1.phpはfile2.phpにしかHTTPリクエストを送っていないと思います。

「POST」というデータ送信は
「HTTPリクエスト」のPOSTという種類でデータを送っているものと言うイメージだと思うので、
複数のPHPにPOSTを送るという動作を実現しようとすると、javascriptなどでリクエストを2回する必要があるのではないでしょうか。
そのときには、通常の画面の動きにはなりません。

file1からfile2へ送られたものを、file2からfile3へ送るのであれば
下記のようにphpの出力の中にinputのtype="hidden"を入れれば値を引き継げると思いますよ。

lang

1<form action='file3.php' method='POST'> 2 <?php 3 $name=$_POST['name']; 4 5 //名前の出力 6 echo "こんにちは"; 7 echo $name. "さん"; 8 echo '<input type="hidden" name="name" value="'.$name.'">' 9 ?> 10?>

投稿2018/12/14 09:22

yamame

総合スコア81

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

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

akoro

2018/12/17 04:11

ありがとうございます。 このやり方でエラーは解消できました。 ただしfile1.phpで入力した文字列は引き継がれ、空欄になってしまうのですが、何か解消法はありますでしょうか? もう一度POSTしてみた  →file2では名前を入力するinputはないけれど、file1から引っ張れるかと思い、file3で$_POSTしたという意味でした 伝わりづらい表現で失礼しました。
yamame

2018/12/18 04:22

>ただしfile1.phpで入力した文字列は引き継がれ、空欄になってしまうのですが、何か解消法はありますでしょうか? ->phpというよりhtmlになると思いますが、inputの初期表示は[value=""]の部分に入っている値になるので、表示した段階で中身がないためだと思います。 私の回答だと結果的にfile2.phpに画面に表示はしていないけど、inputをHTML上は入れてるので、邪道だったのかもしれませんね。
guest

0

回答を修正しました

同一サーバに対して複数の submit を用意したいというのは、おおよそ設計がおかしいです。
POST の項目として分岐条件を記述し、投稿先で分岐させるのが一般的です。

質問内容を実装するには、JavaScript で、submit を横取りし POST すると実現できると思います。
合わせて、仕様によってページ遷移先もJavaScript で記述して上げる必要があります。

投稿2018/12/14 08:36

編集2018/12/14 10:13
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/12/14 10:13 編集

この回答、言いたいことがうまく表現できていないので、後で書き直します^^; → 修正しました。
guest

0

自己解決

いろいろな方のアドバイスを参考に試したところ、これで解決しました。
file2.phpにこれを入力しました。

<form action="file3.php" method="POST"> <input type="hidden" name="name" value="<?php echo $name; ?>">

ありがとうございました。

投稿2018/12/19 01:05

akoro

総合スコア27

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

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

0

二重のformはできません。
action='file2.php'で file2.php プログラムにとび、
file2.php の中に

<script type="text/javascript"> window.open('http://localhost/file3.php?name=<?= $name ?>'); </script>

を入れて$nameの内容を引き連れて追加のウインドウを開き、file3.phpを表示をします。
このコードはPOSTではなく、GETで取得しなければならないので、file3.phpは

$name=$_GET["name"]; echo $name."さんは~~~";

の形にする必要があります。

投稿2018/12/14 08:54

seastar3

総合スコア2285

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

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

0

ajaxで処理すればよいのでは?

投稿2018/12/14 08:35

yambejp

総合スコア114572

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問