-PR-
解決
済み

もっとも初歩的なデータの渡し方を

  • 困ってます
  • 質問No.45473
  • 閲覧数44
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 47% (767/1609)

もっとも初歩的なデータの渡し方を教えていただけませんか。
<FORM ACTION="next.cgi" METHOD="POST">
<INPUT TYPE="TEXT" NAME="内容" SIZE="12">
<INPUT TYPE="SUBMIT" NAME="Submit" VALUE="送信"></form>

next.cgiでどう書けば「内容」が表示されますか?
まったく初心者の質問ですみません。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1

 その場合、パラメータの内容は標準入力から、しかもURL形式に変換されて渡されてきます。
 メソッドが「POST」の場合は、

  read(STDIN, $in, 255);

 とやると引数が全部まとめて $in に入ってきます。
 ただし 255 は引数の長さなので、臨機応変に色々やる必要があります。
 で、これをエンコードとかなんとか色々やるわけです。

$in =~ s/\+/ /g;
($key, $val) = split(/=/,$in[$i],2);
$key =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;
$val =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;

 こうやると $key に '内容' が、$val にその値がはいるんですけど……こういう書き方で分かります?
補足コメント
s-holmes

お礼率 47% (767/1609)

回答ありがとうございます。むずかしいですね。フリーCGIの一部だけ修正して値を別ページに持っていきたいだけなので、できれば、「内容」というテキストボックスの値のシンプルなひっぱって行き方を御教授いただけると助かります。 (^^;
投稿日時 - 2001-02-27 14:55:38
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.2
レベル12

ベストアンサー率 57% (232/402)

PerlのVer.5以降がインストールされているのであれば、プログラムの頭に use CGI; my $query = new CGI; の2行を付けておけば、あとは「$query->param('パラメータの名前')」で渡されたデータにアクセスできるようになります。 なおPerlのバージョンについては、telnetでshellが使える環境なら「perl -v」で ...続きを読む
PerlのVer.5以降がインストールされているのであれば、プログラムの頭に

use CGI;
my $query = new CGI;

の2行を付けておけば、あとは「$query->param('パラメータの名前')」で渡されたデータにアクセスできるようになります。
なおPerlのバージョンについては、telnetでshellが使える環境なら「perl -v」で確認できますが、おそらく管理者に問い合わせるのが一番でしょう。

ちなみに<input>タグのname属性のところに漢字を使うのはあまり好ましくありません。
別に出来ないというわけではないんですが、CGIの場合ブラウザから漢字コードが何で渡されてくるかがわからないので、きちんとそのへんを変換処理できるだけの腕がないと、扱うのは危険です。
もちろんCGIに渡されたvalueについても、一般的には漢字コードを変換してやる必要があります。そのへんは、Perlの漢字変換用ライブラリとして使われているjcode.plの使い方を勉強した方がいいです。そんなに難しいことはありませんし。

あと参考までに、FORMでsubmitされたデータは、
○METHOD="GET"の場合:環境変数"QUERY_STRING"に入る
○METHOD="POST"の場合:標準入力に入り、データの長さは環境変数"CONTENT_LENGTH"で渡される
という違いがあります。


  • 回答No.3

 補足みました。  use CGI を使わないのであれば、さっきの方法が一番シンプルなんですけど……(^_^;  これ以上シンプルとなると、フリーで cgi-lib.pl というモジュールが出ています。これを require すると、&ReadParse; という関数を呼び出すだけで、%in という変数に値が入ってくれます。(←はよ言えや)  このとき、キーが NAME の値、$in ...続きを読む
 補足みました。

 use CGI を使わないのであれば、さっきの方法が一番シンプルなんですけど……(^_^;
 これ以上シンプルとなると、フリーで cgi-lib.pl というモジュールが出ています。これを require すると、&ReadParse; という関数を呼び出すだけで、%in という変数に値が入ってくれます。(←はよ言えや)

 このとき、キーが NAME の値、$in{...} の中身が VALUE の値になります。

 このモジュールは下記から取得できます。

require './cgi-lib.pl';
&ReadParse;

print "$in{'内容'}\n";

 ↑こんな感じで使います。
お礼コメント
s-holmes

お礼率 47% (767/1609)

皆様助言ありがとうございました。意味は全然わかっていませんが、とりあえずread(STDIN, $in, 255); 以下の方法でなんとか必要な部分だけ取得できました。お手数をおかけしました。

そのうち、use CGI cgi-lib.pl についても使ってみたいと思います。(ちょっと自信なし。)
投稿日時 - 2001-02-27 17:51:24
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ