• 締切済み

query stringの受け取りについて

http://hogehoge/hoge.cgi?input=xxx」のように 飛んできたリクエストからQUERYSTRINGの値(input)を取得したい場合にGETで来てもPOSTで来ても取得は 可能でしょうか? GETで取れて、POSTで取れない原因で何か考えられる 原因とかありましたら教えて下さい。 よろしくお願いします。

  • CGI
  • 回答数2
  • ありがとう数0

みんなの回答

  • t140
  • ベストアンサー率39% (59/150)
回答No.2

一般に環境変数REQUEST_METHODを見て、GETかPOSTかで処理を分けて データを取得するCGIが多いですが、POST送信であっても "?" 以降のデータを取得することは可能です。 # POSTの場合 if ($ENV{REQUEST_METHOD} eq 'POST') { read (STDIN, $query, $ENV{CONTENT_LENGTH}); } # GETあれば連結 if ($ENV{QUERY_STRING} ne ''){ $query.= $query ne '' ? '&' : ''; $query.= $ENV{QUERY_STRING}; }

  • daaman
  • ベストアンサー率36% (55/151)
回答No.1

GETでもPOSTでも取得できます。 POSTは標準入力、GETは環境変数へデータが入ってきますので、どちらで要求があったかで値の取得方法が変わりますので、 GETの方しか記述してないのが原因ではないでしょうか? 取得方法は、POSTなら標準入力からCONTENT_LENGTH分の値を取得しますし、GETなら環境変数のデータをそのまま取得すればいいことになります。 以下の例では変数$queryに値が入ります。 if ($ENV{'REQUEST_METHOD'} eq 'POST' ) {    # POSTの場合    read (STDIN, $query, $ENV{'CONTENT_LENGTH'} ); } else {    # GETの場合    $query = $ENV{'QUERY_STRING'}; }

関連するQ&A

  • Request.QueryStringの型について

    Request.QueryString("testNo")で取得した値の型についてなのですが、私は文字列だと思っていました。 ところがここでわからなくなってしまったのが、 Request.QueryString("testNo")で取得した値を比較するときです。 たとえば ttp://xxxx/xxx.aspx?testNo=3 で受取ったRequest.QueryString("testNo")を比較するとします。 if Request.QueryString("testNo") = "3" then と if Request.QueryString("testNo") = 3 then ではどちらもTrueになるのですが、これはどうしてなのでしょう? どういった解釈がなされているのかが知りたいです。 もしくは、書いてあるページを教えていただけると幸いです。 今までは特に気にしてなかったのですが、文字列を数値で比較しても 大丈夫なのでしょうか? 自分の書いたところ見るとどっちのパターンでも書いてあって あやふやです。

  • クエリーストリングとは?

    Queri String という言葉がよく出てくるのですが、正確な説明(定義)を書いている書籍やウェブページを見た事がありません。 どなたか教えていただけませんでしょうか? もしくは説明が載っているウェブページを教えていただけませんか? たぶん、GetやPostの事だと思っているのですが、、。 Getだと  例)http://www.sample.com/test.cgi?id=23 このような行為の事でしょうか?

    • 締切済み
    • CGI
  • スクリプトまでのアドレスを取得するには?

    お世話になります。 http://hogehoge.com/aiu/eoka/hoge.cgi hoge.cgiから見た、「http://hogehoge.com/aiu/eoka/」を取得する方法はありますでしょうか。 「http://hogehoge.com/」から「hoge.cgi」までの間には、ディレクトリは2だけではなく3つや4つと、複数入る場合があります。 例えば$urlpathに、hoge.cgiまでのアドレスを取得するようにするには、どうすれば良いでしょうか。 ご教授をお願いします。

  • 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
  • Request.QueryString への値の代入。

    Request.QueryString("hoge") = Request.QueryString("hoge") + 1 上記のようなクエリーストリング自体に値を代入するためにはどうしたらよいですか? 上記のコードでは Microsoft VBScript 実行時エラー エラー '800a01b6' オブジェクトでサポートされていないプロパティまたはメソッドです。: 'Request.QueryString' となります。 ASP1.X+IIS5です。よろしくおねがいします。

  • ASP.NET C#でPOST受信

    WebサーバのPost受信を行う際に、 Request["parameter"] とすると、POSTを受信できますが、 GETのパラメータがあると、GETを優先して受信してしまいます。 GETのみだと、 Request["parameter"]でも Request.QueryString["parameter"]でも 受信可能です。 GETパラメータがあっても、POSTのみを受信する方法はあるのでしょうか?

  • POSTとGETについて

    POSTとGETについて2点質問が御座います。 PHPは最近手を付け始めましたので、初心者です。 (1)PHPでPOSTとGET両方使うことは出来ますでしょう   か? 内容:PHPファイルからCGIに値を引きつきたいのですが、テキストエリアのフォーム(POST)とCGIのリンク先に"hogehoge.php?id=xxxx"とGETのxxxxとPOSTのテキストエリアに記載した内容を2つ引き継ぎたいのですが、GETの方の値がCGIで反映されていません。 POSTとGETの両方引きつぎたいときはどのようにすれば良いでしょうか? (2)また(1)とは、別の話ですが、GETだけで2つの情報を引き継ぐことは可能でしょうか? "hogehoge.php?id=xxxx,?id2=yyyy"のようなイメージでxxxxとyyyyの両方を渡したいと思ってます。 どうかご教授宜しくお願い致します。

    • ベストアンサー
    • PHP
  • テキストボックスの表示

    よろしくお願いします。 早速ですが、テキストボックスにおいて、入力した値を POSTしても残すようにしていたのですが、突然できなくなりました。 何が原因と思われますか? php.iniの内容とか関係してきますでしょうか?? formのactionはPHP_SELFにして、 <input type=text name=hoge value=$hoge> にして -------------------------------------------------- $hoge=$_REQUEST["hoge"]; 以下処理を走らせてます。 今までは問題なかったのですが・・・・ よろしくお願いします

    • ベストアンサー
    • PHP
  • GETで?の後ろのnameをなしにしたい

    【PHP】 GETでパラメータを取得したいです。 通常、 hoge.php?q=hogehoge ↓ echo $_GET["q"]; ↓ hogehoge などとなりますよね? でも、 hoge.php?hogehoge ↓ echo $_GET["●●"]; ↓ hogehoge 出力、みたいにしたいのですが.. hoge.php?hogehoge&mogemoge とか hoge.php?hogehoge&a=mogemoge とかできたら尚良いです。 どうしたらいいのでしょうか? ●●部分を空白にする、とか? 仕様的に無理なんでしょうか? ご教示頂けましたら幸いです。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • $ENV{'QUERY_STRING'}以外で引数を取得するには?

    CGI上で$ENV{'QUERY_STRING'}を使用しないで引数を取得するにはどうしたらいいのでしょうか? hoge.cgi?XXXX の XXXX を取得したいのですがある理由によって$ENV{'QUERY_STRING'}が使用できません。 よろしくお願いいたします。

    • ベストアンサー
    • CGI

専門家に質問してみよう