• 締切済み

POSTで送信したデータを使いたいのですが

はじめまして、最近やり始めたばっかりの初心者です。 質問なのですがブラウザ上でテキストにデータベース名を入力して <form action=database5.cgi method=post> <input type=text name ="data1"> <INPUT TYPE=submit VALUE=" 送信 "> でdatabase5.cgiにわたして そのcgiのなかで #------------------------------------------<SELECT文 設定> $SQL = "select column_name,data_type from user_tab_columns where table_name = 'この指定の仕方がわからない '"; $hSt = $hDb->prepare($SQL) or die &err_ora; のtable_name として用いたいのですが、いったいどのようにそのテキストに 入力したテーブル名を取り出したらいいのかわからないのです。 あらかじめテーブル名を記述しておいてブラウザ上で呼び出すと結果でる というのはわかったのですが、実際にブラウザ上で任意のテーブル名を いれて同様の結果を得るという操作がどうしてもできません。 まだ初心者な者で質問の仕方も非常にわかりにくいのですが どなたかよきアドバイスをお願いいたします。

みんなの回答

  • noopee
  • ベストアンサー率38% (114/297)
回答No.1

PostやGetでデータを取得するためには、「env」の「REQUEST_METHOD」からPost・Getされていることを判別してやるなど、フォームをデコードする必要があります。 *************************************** if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } foreach (split(/&/,$buffer)) { ($key,$value) = split(/=/); $key =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("c",hex($1))/ge; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("c",hex($1))/ge; if (defined($in{$key})) { $in{$key} = join("\0", $in{$key}, $value); } else { $in{$key} = $value; } } *************************************** cgi-lib.plを使用するか、上記のようにデコードを実行して、 $data1 = $in{'data1'}; #上記コードの場合の書き方 のように呼んでやれば任意のデータが取れると思います。 わかりにくかったらごめんなさいね。

tattun
質問者

お礼

早速のご返事ありがとうございました。このような方法で任意のデータが 取り出せるとは知りませんでした。まだほんとに始めたばかりなのでまずは 教えていただいた方法を理解してから実際にやってみます。 ほんとうに、ありがとうございました。

関連するQ&A