• もっと見る
<< 2024年04月 >>
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
カテゴリアーカイブ
最新記事
最新コメント
PHP Apache PostgreSQL Fedora (POST受信、GET受信を自動選択) [2019年10月26日(Sat)]
PHP Apache PostgreSQL Fedora (POST受信、GET受信を自動選択)


 ネット上のページを参考にしてプログラムを作成し、Webサーバ上で動かしてみて、修正をしています。

 備忘録として、プログラムの一部を書いておきます。

 今回のテーマは、POST受信、GET受信を自動的に選択する。
$_SERVER["REQUEST_METHOD"]


 phpのプログラムでは、「form」は「POST」送信、「<A Href=」は「GET」送信と、自分で決めていました。

**********引用開始**********
【PHP入門】POST送信、GET送信する方法
・POSTで送信したデータを取得する
PHPではPOSTで送信したデータを取得するには、スーパーグローバル変数である$_POSTを使用します。

・GETで送信したデータを取得する
PHPではGETで送信したデータを取得するには、スーパーグローバル変数である$_GETを使用します。
**********引用おわり**********


 例えば、雑誌の号ごとの内容をデータで管理するために、データを「genntei.php」プログラムに「POST」送信していました
**********引用開始**********
?>
<!--- form 開始 --->
<form method=post action="genntei.php">
<select name=retu_2>
・・・
</select>
<input type=hidden name=retu_1 value = "<?php print ($retu_1); ?>">
<input type=submit value="指定のみ検索開始"><br>
<!--- form 終了 --->
</form>
<?php
**********引用おわり**********
 とか作成していました。

 今日、雑誌の号ごとの内容をより使いやすくするために、一覧表の中の「<A Href=」のデータを受け取ってから表示するプログラムを作成しようとして、「genntei.php」プログラムを使うことを考えました。
**********引用開始**********
?>
<td bgcolor=yellow><A Href="genntei.php?retu_1=<?php print($zasshi); ?>&retu_2=<?php print($gou); ?>"><?php print("$zasshi"); ?></A></td>
<?php
**********引用おわり**********
 となります。

 ところが、「<A Href=」を使って「GET」送信すると、

Notice: Undefined index: retu_1 in /var/www/html/**********/genntei.php on line 12
Notice: Undefined index: retu_2 in /var/www/html/**********/genntei.php on line 13

という、エラー表示が出ます。

 ネット検索すると、変換するためには「javascript」の文字が出てくるので、これ以上の「javascript」検索は止めました。

 別の方法は無いかと調べると、「POSTかGETかを判別」というページが見つかりました。

 このページの内容を参考にして、「genntei.php」にプログラムを追加しました。

// 受信したデータの判別
if($_SERVER["REQUEST_METHOD"] != "POST"){
$retu_1 = $_GET['retu_1'];
$retu_2 = $_GET['retu_2'];
}else{
$retu_1 = $_POST['retu_1'];
$retu_2 = $_POST['retu_2'];
}

 「POST」送信を受信した場合と、「GET」送信を受信した場合で区分するだけのものです。

**********引用開始**********
POSTかGETかを判別
 フォームからの投稿によって表示されたのかどうかの判別の方法はいくつかありますが、フォームからPOSTでリクエストが来ているのか、それてともURLを直接指定して表示されているのかで判別してみます。フォームでGETを指定した時だけではなく単にブラウザでHTMLファイルを要求した時もGETのリクエストが来る事になっています。

 実際には下記のように「$_SERVER["REQUEST_METHOD"]」を調べることでPOSTかGETかどちらで要求が来ているかを調べることができます。

if($_SERVER["REQUEST_METHOD"] != "POST"){
    print('GETによる要求です');
}else{
    print('POSTによる要求です');
}
**********引用おわり**********

Posted by 山田 雄一郎 at 22:02
この記事のURL
https://blog.canpan.info/hofu_nanboku/archive/456
プロフィール

山田 雄一郎さんの画像
山田 雄一郎
プロフィール
ブログ
リンク集
https://blog.canpan.info/hofu_nanboku/index1_0.rdf
https://blog.canpan.info/hofu_nanboku/index2_0.xml