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

next.cgiでどう書けば「内容」が表示されますか?
まったく初心者の質問ですみません。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

 その場合、パラメータの内容は標準入力から、しかも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 にその値がはいるんですけど……こういう書き方で分かります?

この回答への補足

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

補足日時:2001/02/27 14:55
    • good
    • 0

 補足みました。



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

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

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

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

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

 ↑こんな感じで使います。

参考URL:http://cgi-lib.berkeley.edu/
    • good
    • 0
この回答へのお礼

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

そのうち、use CGI cgi-lib.pl についても使ってみたいと思います。(ちょっと自信なし。)

お礼日時:2001/02/27 17:51

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"で渡される
という違いがあります。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qフォームの

Perl で書いたフォーム要素に画像ボタンを次のように、next と prev の二つ作り、押した時の送信内容を知りたいのですが、分かりません。どうすればいいのでしょうか?次のようにやっても送信内容が変数$jobに入りません。

#!/usr/local/bin/perl
require 'cgi-lib.pl';
&ReadParse(*f);

$job = $f{'job'};

print <<EOD;
Content-type: text/html; charset=sjis-jp;
<HTML>
<HEAD>
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM method="POST" action="germJ.cgi" name="kdicFORM" target="frame1">
<INPUT type="image" Src="http://localhost/dic/ArrowMacPrev.GIF" name="job" value="prev">
<INPUT type="image" Src="http://localhost/dic/ArrowMacNext.GIF" name="job" value="next">
</FORM>
</BODY>
</HTML>
EOD
__END__
すみませんが、どなたか御教示をお願いします。
Perl 固有の問題ではないかも知れませんがお許し下さい。

Perl で書いたフォーム要素に画像ボタンを次のように、next と prev の二つ作り、押した時の送信内容を知りたいのですが、分かりません。どうすればいいのでしょうか?次のようにやっても送信内容が変数$jobに入りません。

#!/usr/local/bin/perl
require 'cgi-lib.pl';
&ReadParse(*f);

$job = $f{'job'};

print <<EOD;
Content-type: text/html; charset=sjis-jp;
<HTML>
<HEAD>
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM me...
続きを読む

Aベストアンサー

それは<INPUT type="image">で送信される内容でしょうか?
<INPUT type="image">で送信される内容はクリックした場所の座標が送信されます。
例えば、nameがjobの場合は$f{'job.x'}にX軸が、$f{'job.y'}にY軸が送信されます。
valueでの指定はどうだったか覚えていません。。(すみません

Qフォームに

Perl で書いたフォーム要素に画像ボタンを付けたいのですが、画像が表示されません。
次のように、next と prev のボタンに二つの方法で画像を呼び出そうとしましたが。。。
Print <<EOD;
<BODY>
<FORM method="POST" action="germJ.cgi" name="kdicFORM" target="frame1">
<INPUT type="image" SCR="http://localhost/dic/ArrowMacPrev.GIF">
<INPUT type="image" SCR="/ArrowMacNext.GIF">
----
</FORM>
EOD
URL をじかにアクセスするとIE6.0は表示します。

すみませんが、どなたか御教示をお願いします。
さらに、画像が表示された後のこと、つまり「送信」されるデータ(X=nnn, Y=nnn)をどうすればキャッチしてnext/prevの分岐を実現できるか、はつぎの問題なんですが。。
 Perl 固有の問題というよりか、javascriptの問題みたいで済みません。

Perl で書いたフォーム要素に画像ボタンを付けたいのですが、画像が表示されません。
次のように、next と prev のボタンに二つの方法で画像を呼び出そうとしましたが。。。
Print <<EOD;
<BODY>
<FORM method="POST" action="germJ.cgi" name="kdicFORM" target="frame1">
<INPUT type="image" SCR="http://localhost/dic/ArrowMacPrev.GIF">
<INPUT type="image" SCR="/ArrowMacNext.GIF">
----
</FORM>
EOD
URL をじかにアクセスするとIE6.0は表示します。

すみませんが、どなたか御...
続きを読む

Aベストアンサー

scrじゃなくてsrcだと思います。

Q
で開く窓の大きさ指定

Javascriptかもしれませんが、perl内で使いたいので一応ここで‥‥

A.cgiからフォームに入力後送信、B.cgiに飛びます。
その時、B.cgiを新しく開いたウィンドウに表示したいので下記のようにしてます。
A.cgi側フォーム
<FORM METHOD="post" ACTION="B.cgi" TARGET="_blank"></FORM>

この_blankで新しい窓は開きますが、この開いた窓の大きさを指定するにはどうしたらいいんでしょうか?
Javascriptはあまり良くわかりませんが、window.open()くらいなら使った事あります。これだと大きさも指定できますが、パラメーター(?)を渡しつつ、開いた窓の大きさも指定したいのです。

渡したいパラメーターは1種類(しかも変数で代入できる)なので、フォームじゃなくても
<A HREF="B.cgi=?$i"></A>って格好でもいいです。($iの値は固定されていない)

何か私でもできる簡単な方法はありますか?

Aベストアンサー

すみません。以下のままだと要望に応じることが出来ない状態でした。$iは何に変えてもOKです。
A.cgi
修正前
<INPUT type=hidden name=X value=500>
<INPUT type=hidden name=Y value=500>
修正後
<INPUT type=hidden name=X value=$i>
<INPUT type=hidden name=Y value=$i>
修正前
<FORM action=B.cgi>
修正後
<FORM METHOD="post" ACTION="B.cgi" TARGET="_blank">

Q「type=submit」をボタンにしない

早速お世話になります。

標題のように、
<input type=submit value="処理">とやった場合、
「処理」と表示されたボタンになりますが、
これをボタンの形にせず、文字のママにしたいのですが。
方法はありますでしょうか。

宜しくお願いします。

Aベストアンサー

カテゴリ javascript で質問した方がよいですよ。

過去の質問だと
http://oshiete.goo.ne.jp/qa/2551334.html
が参考になると思います。

Qperlスクリプト

<html>~</html>の中に複数のperlスクリプトは書けるのでしょうか?
htmlファイル1つの中には、<html>~</html>は1つだと思うのですが、
phpだと<?php>~<?>とすれば、<html>~</html>の中に複数書けるみたいですが、perlでも書けるのでしょうか?

Aベストアンサー

通常書けません(書くのは別にかまいませんが期待通りにはならないでしょう)。
逆にPerlスクリプト中にHTMLをヒアドキュメントという形で記述することは一般的です。
PerlはWebが生まれる前からありましたが、PHPはWebの為に生まれました。


このカテゴリの人気Q&Aランキング

おすすめ情報