postとgetでデータ送信する方法とは?

このQ&Aのポイント
  • データを変数に効率よく入れる方法を教えてください。
  • 現在は$_REQUESTを使用していますが、クッキー情報も含まれてしまうので他の方法を考えています。
  • 送信形式がPOSTかGETかを判断する方法を教えてください。
回答を見る
  • ベストアンサー

post と get

postとgetの両方でデータ送信が行われる可能性がある場合(あるときはpost、あるときはget)に簡単に効率よくデータを変数に入れてやる方法ってありますか? 最初は$_REQUEST を使っていたのですが、これではクッキー情報も入ってしまったため、これはやめました。そこで今は下のような方法を考えています。 if(postならば){ while(list ($key, $val) = each($_POST)) { $INPUT[$key] = $val; } } else {//getなら while(list ($key, $val) = each($_GET)) { $INPUT[$key] = $val; } } ただ、検索の仕方が下手なのか、受信した送信形式がPOSTかGETなのかということを知る方法がわかりません。 どなたかアドバイスを下さい。

  • ytse
  • お礼率71% (88/123)
  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • neo_ap1
  • ベストアンサー率26% (105/395)
回答No.1

PHPですよね? if( $_SERVER["REQUEST_METHOD"] == "POST" ){ //postなら } else { //getなら } でどうでしょうか?

ytse
質問者

お礼

ありがとうございます。無事できましたv

関連するQ&A

  • $_SESSIONと、POSTやGETの違い

    SESSION ・クッキーにセッションIDを作り、データをサーバーへ送信して保存。 ・セッションIDを元に、送受信系のもので送られ保存されたデータをどのページでも取得できる。 ・セキュリティが強い。 GET ・クッキーにセッションIDを作り、データをサーバーへ送信して保存。 ・セッションIDを元に、送受信系のもので送られ保存されたデータをどのページでも取得できる。 ・URLとして送信される。 ・アンカータグからも送れる。 ・セキュリティが弱い。 POST ・クッキーにセッションIDを作り、データをサーバーへ送信して保存。 ・セッションIDを元に、送受信系のもので送られ保存されたデータをどのページでも取得できる。 ・セキュリティが強い。 ・大量のデータ向け。 GETとの違いは分かるのですが、POSTとSESSIONの違いが良く分かりません。 $session_start(); $_SESSION["abc"] = "エービーシー"; のようにセッションを作って変数に格納し $session_start(); echo $_SESSION["abc"]; のように他のページで変数を使うことができますが、 POSTやGETも他のページで使えるので自動でセッションIDが作られていて SESSIONやPOSTやGETなどの送受信系のもので保存されたデータは 送受信系のものでデータを自由に取得できるのかなと思い試してみると $_SESSION["abc"]で送信したデータを他のページで$_SESSION["abc"]で取得すると正常に動き、 $_SESSION["abc"]で送信したデータを他のページで$_GET["abc"]で取得するとエラー、 $_SESSION["abc"]で送信したデータを他のページで$_POST["abc"]で取得するとエラー、 $_GET["abc"]で送信したデータを他のページで$_GET["abc"]で取得すると正常に動き、 $_GET["abc"]で送信したデータを他のページで$_POST["abc"]で取得するとエラー、 $_GET["abc"]で送信したデータを他のページで$_SESSION["abc"]で取得するとエラー、 $_POST["abc"]で送信したデータを他のページで$_POST["abc"]で取得すると正常に動き、 $_POST["abc"]で送信したデータを他のページで$_POST["abc"]で取得するとエラー、 $_POST["abc"]で送信したデータを他のページで$_SESSION["abc"]で取得するとエラー、 送信された方法と受信する方法が一致しないもの以外はエラーになりました。 おんなじ方法で送信と受信をしないとダメなのですね。

    • ベストアンサー
    • PHP
  • 意味を教えてください。

    <?php @reset($HTTP_POST_VARS); while (@list($key,$val) = each($HTTP_POST_VARS)) { if ($key <> "pw_step") { echo "<input type=\"hidden\" name=\"" . $key . "\" value=\"" .        $val . "\">\n"; } } @reset($HTTP_POST_VARS); ?> 上記の書き方で$val.の.はつなげる意味と同じで使われているのですか? また、$keyと$valの関係を教えてください。 ネットでもこの記述が多いのですが、優しい解説がなくて・・・。 どなたか優しく解説お願いします(^.^)

    • ベストアンサー
    • PHP
  • method=POSTしているのにGETで送信

    WEBのシステムでHTML上はmethod=POSTと書いてリクエストを実行しているのに、たまにアクセスされるリクエストのログがGETで送信されるという事象が発生しました。もちろんPOSTで送信されるべき画面がGETで送信されているのでリクエストのパラメータが渡ってきていません。 ユーザが勝手にHTMLを書き換えてアクセスしているということはまず考えられないのですが、なにか原因はありすでしょうか? ちなみにIE6での利用です。

  • $_POSTのものを$_GETとして使うのはなぜ?

    http://www.phppro.jp/school/phpschool/vol19/2 こちらの講座にあるサンプルコードで分からないところがあります。 schedule_edit.phpのサンプルでは if (isset($_POST["year"]) && is_numeric($_POST["year"]) && $_POST["year"] > 2000) { $year = $_POST["year"]; <form action="schedule_edit.php" method="post"> <input type="text" name="year" id="schedule-year" value="<?php print(htmlspecialchars($year, ENT_QUOTES)); ?>" /> <label for="schedule-year" id="label-year">年</label> formで入力されたデータはhtmlspecialchars($year, ENT_QUOTES)の$yearに格納され、 $_POST["year"]としてデータが渡り、 php側で$year = $_POST["year"];のように$_POST["year"]のデータが$yearに格納し直されています。わざわざ格納し直す理由も分からないのですが、一番知りたいところは schedule_list.phpのサンプル内ではPOSTでなくGETで渡されているところです。 if ($schedule_date == date("Ymd", mktime(0, 0, 0, $_GET["month"], $_GET["day"], $_GET["year"]))) $_POST["day"]ではなぜだめなのか分かりません。 この$_GET["year"]はschedule_edit.phpの$_POST["year"]を見ているわけではないのでしょうか。

    • ベストアンサー
    • PHP
  • 1アクションでPOST・GET、両方送信したい

    1つのフォームからボタンをクリックして、 POST・GET送信と、両方飛ばすには、どうすればよいでしょうか? URLに「表示させたいパラメータ」と「表示させたくないパラメータ」 があります。 「表示させたいパラメータ」は、GETで、 「表示させたくないパラメータ」は、POST送信したいのですが、 1つのフォームで、同時に飛ばす方法が分かりません。 <form method =post action=hoge.php>  <input type=text name="piyo" value="piyo">  <input type=hidden name=puyo_id value=puyo>←これだget送信したい  <input type=submit value="送信"> </form>

    • ベストアンサー
    • PHP
  • フォームのPOST情報が渡らない?

    こんにちは。 PHPを使ってフォームからの入力情報をPOSTで受け取り確認画面を出す、というような機能を作成しているのですが、たまにデータが受け取れずに初期画面へ戻ってしまう現象が起こります。 POSTではなくGETにするとキチンと送信出来ているようなのですが、情報量やその他の面からGETを使うことは避けたいと思っています。 POSTされた情報が受け取れないという現象は、再現が難しく、出るときは出るし出ないときはまったく出ません。 これまで調べた回避方法で以下の2つは試してみましたが、どちらも現象を止めるには至りませんでした。  ・<form>タグに『 enctype="multipart/form-data"』を追加する  ・<input type="hidden" name="spoof">を追加する また、マルチバイト文字をフォームに入力しない場合は、現象がまったく再現しないようでした。 この現象の回避策を何かご存知の方、アドバイスよろしくお願いいたします。 ------使用環境-------------- OS   :Windows2000 ブラウザ:Internet Explorer 6.0.2800.1106(更新バージョンSP1) Apache :Server version: Apache/1.3.29 (Unix) PHP   :PHP 4.3.4 (cli) (built: Dec 1 2003 18:13:50) ------POST情報取得処理------ function get_post_vers(){ foreach($_POST as $key => $val){ $GLOBALS["$key"] = $val; } return; }

    • ベストアンサー
    • PHP
  • POSTでもGETでも対応するには

    Perlでプログラムを制作していたのですが、 PHPに乗り換えようと勉強中です。 ひとつのプログラムが、POSTでもGETでも 対応できるようにする場合、 Perlであれば $ENV{'REQUEST_METHOD'}の値を調べることによって 対応可能ですが、 調べてみたところ、PHPの場合はPerlの $ENV{'REQUEST_METHOD'}に相当する変数が無いように見受けられます。 どちらでも対応可能にする場合には、 どのようにコーディングすればよいのでしょうか。

    • ベストアンサー
    • PHP
  • 紙谷氏の「Perl/CGI入門」、ハッシュeach関数の例題について

    ハッシュのeach関数を使って「猫はcat犬はdogお茶tea」と表示させるプログラムの主要部分です。 %list = ("猫"=>"cat" , "犬"=>"dog" , "お茶"=>"tea"); while( ($key,$val) = each( %list ) ){   print "$keyは$val"; } whileの条件部分の意味が分かりません。 ・なんで条件部分なのに代入みたいな式が入るのか? ・$keyと$valというのは普通のスカラー変数とは違うのか? 良く分からないので質問の仕方もおぼつかないですが、どなたか分かりやすく説明して頂けないでしょうか?

    • ベストアンサー
    • Perl
  • CGI:method="post"でもGETになる

    CGIで標準入力によりフォームデータを取得できないため、環境変数%ENV内の値を 調べましたところ、入力フォーム(html)のformタグでmethod="POST"と明示しているにも 拘らず、REQUEST_METHODの値がGETになっており、POST用のCONTENT_LENGTHも GET用のQUERY_STRINGも共に空になっております。 htmlでmethod="GET"と指定した場合には、REQUEST_METHODの値は正しくGETになり QUERY_STRINGからフォームデータを取得できます。 同じCGIをPC上のApache2.4でテストした結果、REQUEST_METHODはhtmlのmethod=~で 指定した通り正しくPOSTまたはGETとなり、それぞれフォームデータを 取得できることを確認いたしております。 この点についてプロバイダに問合せいたしましたが、サポート対象外ということで、 回答を得ることができませんでした。 このような現象の原因について、お心当たりのある方がおられましたら、 ご教示いただけないでしょうか、お伺いいたします。 (1)ホスト動作環境 a.CGIサーバ:Apache b. perl 5.10系 (2)PC動作環境 a.OS: Windows 7 b.ブラウザ: Internet Eexplorer 11 c.CGIサーバ: Apache 2.4 d. Activeperl 5.20

    • 締切済み
    • CGI
  • 「test.php?」の後のデータの読み方

    初歩的な質問で申し訳ありません。 例えば、「data」というデータを送りたい場合、 ( U.R.L. )/test.php?i=data $_GET[i] でデータを受け取る事はできます。 そこで ( U.R.L. )/test.php?data という場合、どういうコマンドでデータを 読む事ができるのでしょうか? 下記のプログラムを実行すると while(list($key,$val) = each ($_GET) ) {print("$key = $val <br>\n");} data = と表示され、これを利用すると データを読む事は出来ますが、 もう少し簡単な方法はあるでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう