• ベストアンサー

どうしてもCookieとCGI・perlの関係?が理解できない。

ととろさんのところを(http://tohoho.wakusei.ne.jp/www.htm)みながら、なんとかPerl・CGIを勉強しているところです。 普通にフォームに入力されたものをログファイルにとる、などはできるようになったのですが、 どうしてもクッキーのところでつまづいてしまいます。 Cookie書き込みの例、のところに、 Set-Cookie: NAME=tanaka; Fri, 31-Dec-2030 23:59:59; とやったら、tanakaというクッキーが作成されるのでしょうか? どうしてもこの辺がわからないのです。 これを実行する場合、 #!/usr/local/bin/perl print "Content-type:text/html\n"; print "Set-Cookie: NAME=tanaka; Fri, 31-Dec-2030 23:59:59;" print "\n"; のようにやるのですか? 最終的にはフォームの入力値を取得・反映したいと考えているのですが…。 あちこちわかりやすいと言われるcgi・PERL解説サイトをみたのですが、どうしてもここだけが理解できませんでした。

  • CGI
  • 回答数4
  • ありがとう数4

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

  • ベストアンサー
  • so_blue
  • ベストアンサー率48% (50/104)
回答No.1

Set-Cookie: クッキー名=値; 有効期限 なので、tanakaという名前のcookieを作るのでしたら Set-Cookie: tanaka=namae:hoge; 有効期限 ですね。 あと、 print "Content-type:text/html\n"; print "Set-Cookie: NAME=tanaka; Fri, 31-Dec-2030 23:59:59;" print "\n"; は、惜しくも2行目に改行が足りないです。 >最終的にはフォームの入力値を取得・反映 get_cookie はフォーム値のデコードと似ています。 反映させるには <input type=text name=namae value=$COOKIE{'namae'}>という感じです。

KODAMAR
質問者

お礼

回答ありがとうございます! アドバイスをいただいたように変更してみました。 #!/usr/local/bin/perl print "Content-type:text/html\n"; print "Set-Cookie: tanaka=namae:hoge; Fri, 31-Dec-2030 23:59:59\n"; print "\n"; print "<input type=text name=namae value=$COOKIE{'namae'}>"; exit; ※tanaka=namae:hogeの「hoge」って何でしょうか? この場合、フォームのところは別のファイルで操作してフォームのアクションで、このcgiを選択すると、その情報がクッキーに入るのですか? 1.名前入力フォーム表示 (1回目だったら名前を入力してもらう。2回目以降なら表示させる。) 2.ボタンを押すとログファイルに名前を残す。 というようにしたいのです。

その他の回答 (3)

  • so_blue
  • ベストアンサー率48% (50/104)
回答No.4

>print "Set-Cookie: tanaka=NAME:hoge; Fri, 31-Dec-2030 23:59:59\n"; >で、「tanaka」というファイル名で、「NAME=hoge」という値が 解釈はOKですが、正確には「NAME:hoge」ですね。 >かいてあることはきちんと合っていますでしょうか? テストされてみましたか? たぶん、書き換えが上手くいかないのではないでしょうか。 それはフォーム値のデコードが行われていないからです。 # 転記してないだけかもしれないですが デコードに関しては別件になるので、参考URLを入れておきます。 これが理解できれば、getcookieが何をしているのかよく解ります。 HTML部分はあまりきちんと見ていませんが、 スクリプトを一度に全部を実行するのではなく、 cookieの取得 → 値の確認 → HTMLへの代入 などのように 少しずつ切り分けて確認することをオススメします。 でないと、どこで不具合が起きているのか判別しづらいですからね。 欲しい値が、意図したところに入っているか、 少しずつprintして確認してみましょう。 >C\Documents and Settings\user名\Cookies\user名@****.txt >として保存されるんですよね?(win2000です。) >この****の部分がさきほど設定した「tanaka」となるわけではないのでしょうか? このあたりは環境/ブラウザの仕様によるようです。 win2kでも、Netscapeなら C:\Program Files\Netscape\Users\USER_NAME\cookies に、まとめて記述されます。 >保存されている「回数」を一旦リセットしたい場合 &clearCookie を使うか、0を代入する形でいいのではないかな、と思います。

参考URL:
http://metuocgi.virtualave.net/nihongo1.html
  • so_blue
  • ベストアンサー率48% (50/104)
回答No.3

> >前の質問にも回答しましたがご覧になっていませんか? > もちろん読まさせていただきました。 こういう場合(1つの事例で複数の質問を立てる時)は、前回のURLを入れておくといいですね。 そうすれば同じ回答を繰り返して遠回りをすることもないですし、 前回答えた人も答え甲斐があり、気持ちがいいです。 何より、情報の共有・資源の活用になります。 余談でした。 さて、自分も結構cookieには苦しみましたので... >※tanaka=namae:hogeの「hoge」って何でしょうか? 例えば、namaeというformにhogeさんが名前を入力します。 <input type=text name=namae> この「namaeというformにはhogeという値」というモノをcookieに保存するには? まず、自分のスクリプト用のcookieの名前が必要になります。 それが、NAMEの部分です。 ここでは「tanaka」というクッキー名にしましょう。 次に、「tanaka」という名前のクッキーに、モノを保存します。 保存したいモノを「名前:値(namae:hoge)」とセットにして、全体をtanakaというcookieに入れます。 それが Set-Cookie: tanaka=namae:hoge; 有効期限 という例文です。 cookieにとっての名前はtanaka、値はnamae:hogeです。 そしてget_cookieの時は、これ(tanaka=namae:hoge; 有効期限)を分解するわけです。 詳しくは割愛しますが、ログ保存の前のデコードと構文は似ています。 最終的に$COOKIE{'namae'}の中に、hogeという値が入っていれば、 <input type=text name=namae value=$COOKIE{'namae'}> とすることで、textboxの中に表示される、というわけです。 長文失礼しました。ご参考までに。

KODAMAR
質問者

お礼

回答ありがとうございます。 >こういう場合(1つの事例で複数の質問を立てる時)は、前回のURLを入れておくといいですね。 前回のをかいておくと逆にまたわかりづらくなるかな、と思って避けてしまってました。 配慮が足りませんでした。すいません。 「hoge」というのは値なんですね。 最終的にはここをフォームのテキストボックスの値、というようにしてやればいいんですよね。 今現在以下のようなことでテストをしています。 ---------------------------------------- #!/usr/local/bin/perl print "Content-type:text/html\n"; print "Set-Cookie: tanaka=NAME:hoge; Fri, 31-Dec-2030 23:59:59\n"; print "\n"; exit; ---------------------------------------- で、「tanaka」というファイル名で、「NAME=hoge」という値がセットされるんですよね? ---------------------------------------- #!/usr/local/bin/perl # # Cookieの値を得る # &getCookie(); $time = $COOKIE{'KAISUU'}; if ($time eq "") { $time = 1; } $date = $COOKIE{'HIZUKE'}; if ($date eq "") { $date = "???"; } $name = $COOKIE{'NAME'}; if ($name eq "") { $name= "???"; } # # 書き込むCookieの値を得る # $time_new = $time + 1; ($sec, $min, $hour, $mday, $mon, $year) = localtime(); $date_new = sprintf("%04d/%02d/%02d %02d:%02d:%02d", $year + 1900, $mon + 1, $mday, $hour, $min, $sec); $name_new=$name; # # ページを表示する。 # print &setCookie("KAISUU", $time_new); print &setCookie("HIZUKE", $date_new); print &setCookie("NAME", $name_new); print "Content-type:text/html\n\n"; #print "Set-Cookie:NAME=chc; Fri, 29-Oct-2002 23:59:59\n"; #print "\n"; print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>Cookie Test</TITLE>\n"; print "</HEAD>\n"; print "<BODY TEXT=black BGCOLOR=white>\n"; print "<HR>\n"; print "<H3>読み込んだCookieの値(整形前)</H3>\n"; print "HTTP_COOKIE = $ENV{'HTTP_COOKIE'}\n"; print "<HR>\n"; print "<H3>読み込んだCookieの値(整形後)</H3>\n"; print "これまでの訪問回数:$time<BR>\n"; print "前回の訪問日:$date<BR>\n"; print "お名前:$name_new<BR>\n"; print "<HR>\n"; print "<H3>書き込んだCookieの値</H3>\n"; print &setCookie("KAISUU", $time_new); print "<BR>\n"; print &setCookie("HIZUKE", $date_new); print "<BR>\n"; print &setCookie("NAME", $name_new); print "<HR>\n"; print "リロードしてみてください。\n"; print "一度ブラウザを終了させても、値が保存されています。\n"; print "</BODY>\n"; print "</HTML>\n"; # # Cookieの値を読み出す # sub getCookie { local($xx, $name, $value); foreach $xx (split(/; */, $ENV{'HTTP_COOKIE'})) { ($name, $value) = split(/=/, $xx); $value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg; $COOKIE{$NAME} = $value; } } # # Cookieに値を書き込むためのSet-Cookie:ヘッダを生成する # sub setCookie { local($tmp, $val); $val = $_[1]; $val =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg; $tmp = "Set-Cookie: "; $tmp .= "$_[0]=$val; "; $tmp .= "expires=Thu, 1-Jan-2030 00:00:00 GMT;\n"; return($tmp); } # # Cookieを削除するためのSet-Cookie:ヘッダを生成する # sub clearCookie { $tmp = "Set-Cookie: "; $tmp .= "$_[0]=xx; "; $tmp .= " expires=Thu, 1-Jan-1980 00:00:00 GMT;\n"; return($tmp); } ---------------------------------------- として中身を呼び出しています。 かいてあることはきちんと合っていますでしょうか? (とほほさんのところを拝借させていただいています。) この時保存されたクッキーというのは、 C\Documents and Settings\user名\Cookies\user名@****.txt として保存されるんですよね?(win2000です。) この****の部分がさきほど設定した「tanaka」となるわけではないのでしょうか? また、ここで保存されている「回数」を一旦リセットしたい場合はどうすればいいのでしょうか?

  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.2

前の質問にも回答しましたがご覧になっていませんか? これから書くことは前の回答とほぼ同じ内容です。 Cookieについてはこちらの方がわかりやすいかもしれません。 http://www.futomi.com/lecture/cookie/index.html このサイトの例としては print 'Set-Cookie: CookieTest=%83e%83X%83g; expires=Tue, 01-May-2001 11:32:58 GMT;'; print 'Content-Type: text/html',"\n"; print "\n"; とContent-Typeの前に書かれています。 >Cookie書き込みの例、のところに、 >Set-Cookie: NAME=tanaka; Fri, 31-Dec-2030 23:59:59; >とやったら、tanakaというクッキーが作成されるのでしょうか? 正確にはNAMEというのがクッキー名です。これをパラメータ名(変数)としてtanakaというデータが入っていると考えてください。 Cookieの読み込みはとほほさんのサンプルソースが参考になると思います。 あとはPerl標準のCGI.pmというPerlモジュールを使うとより簡単にCookieの設定が出来ます。 連想配列とかもCookieにセットできます。 http://member.nifty.ne.jp/hippo2000/perltips/Cgi.htm http://member.nifty.ne.jp/hippo2000/perltips/CGI/Cookie.html http://www.itboost.co.jp/perl/perl_10.php http://www13.cds.ne.jp/~ohsaru/perl/cgipm.html ととろさんではなくとほほさんなのでは・・・。

KODAMAR
質問者

お礼

再度回答ありがとうございます。 >前の質問にも回答しましたがご覧になっていませんか? もちろん読まさせていただきました。 ただ以前はいろいろとつけて質問したがために自分でわからなくなってしまったので、今回はシンプルに質問をしてみたんです。 少しずつ進めていこうと思って…。 >Cookieの読み込みはとほほさんのサンプルソースが参考になると思います。 みてみたのですが、とてもたくさんあって、ひとつひとつみてはいるのですが、まだまだ理解が及ばない状態です。 日付のところとかがなんとかわかる程度です。 >あとはPerl標準のCGI.pmというPerlモジュールを使うとより簡単にCookieの設定が出来ます。 >連想配列とかもCookieにセットできます。 試してみます。 >ととろさんではなくとほほさんなのでは・・・。 そのとおりです(恥)。すいませんとほほさん…。 いつもお世話になっているのに…。

関連するQ&A

  • Cookieが保存できない。

    CGIをつかってクッキーを保存しようと試みています。 以下のように記述しておりますがなぜかクッキーファイルが生成されません。 print "Content-type: text/html\n"; print "Set-Cookie: NAME=test\n"; print "\n"; print "テスト"; 何か問題がるのでしょうか?もちろんブラウザ上ではクッキーは有効にしていますし、ほかの他クッキーファイルは存在します。 ブラウザはIE6.0です どなたかご教授お願いします。

    • ベストアンサー
    • CGI
  • Cookieを用いてのセッション管理

    以前も問い合わせさせていただいた件なのですが、 未だ解決していないので、再掲させていただきます。 やりたいことは、 個人認証のページを作り、ログオフ後、ブラウザの戻るボタンを押しても、 ログイン中となるのを避けたい。 以下のような感じで、cookieを使って実現しようとしているのですが、 ログオフ時にcookieの削除は、うまくいったのですが、 ブラウザの戻るボタンでログイン中のページに戻ると、 $ENV{'HTTP_COOKIE'}の中身を見ると、実際にはCookieは削除されているにも関わらず、 Cookieの情報がよみこまれているため、ログイン中となってしまいます。 何か基本的なやり方を間違っているような気がします。 どなたかご教授願います。 ↓a1.cgi(ログイン画面)--------------  : (ID、パスワード認証後) #Cookie書き込み print "Content-type: text/html\n"; print "Set-Cookie: NAME=aaa; expires=Tue, 1-Jan-2030 00:00:00 GMT;\n"; print "\n";  : ↑a1.cgi(ログイン画面)-------------- ↓a2.cgi(ログイン中)--------------  : #Cookie読み込み $cookie01 = "$ENV{'HTTP_COOKIE'}\n";  : <HEAD> <!-- キャッシュクリア --> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT">  : </HEAD>  : ↑a2.cgi(ログイン中)-------------- ↓a3.cgi(ログオフ)--------------  : #cookie削除。 print "Content-type: text/html\n"; print "Set-Cookie: NAME=aaa; expires=Fri, 31-Dec-1999 23:59:59 GMT;\n"; print "\n";  : </HEAD>  : ↑a3.cgi(ログオフ)-------------- ※a1.cgi、a2.cgi、a3.cgiは同じディレクトリです。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • Cookieがクリアされない

    入力フォームを作っています。 トップのフォームにクッキーをセットして、確認画面→登録完了フォームでクッキーをクリアにしています。 クッキーの登録は全て良いんですが、Cookieは、IEではちゃんとクリアされるんですが、Netscape,Firefoxではクリアされません。 色々試したんですが、お手上げ状態です。 ご教授お願いします。 print "Content-type: text/html\; charset=shift_jis\n"; $CookieSet .= "Set-Cookie: $CookieName=$CookieValue\; expires=$GmtString\;"; print "\n"; print "Content-type: text/html\; charset=shift_jis\n"; $ClearCookie .="Set-Cookie: $CookieName=clear\; expires=$ExpiresTimeString\;";#過去の日付'Thu, 01-Jan-2000 00:00:00 GMT' print "\n";

    • ベストアンサー
    • Perl
  • cookieについて教えてください。

    iswebのサーバーを借りています。 cookieの書きこみを下のような記述を試しています。 ($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time + 60*60*3); @mons = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); @week = ('Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sut'); $date = sprintf("%s, %02d\-%s\-%04d %02d:%02d:%02d GMT",$week[$wday], $mday, $mons[$mon], $year+1900, $hour, $min, $sec); $mydata = "abc"; print "Set-Cookie: AAA=$mydata; expires=$date;"; print "Content-type: text/html\n"; print "\n"; print "<meta http-equiv="Set-Cookie" content="AAA=$mydata; expires=$date">"; 以下いろいろつづく。 この時にSet-Cookie: AAA=$mydata; expires=$date;";を残すとエラーが出てmetaを残すと動きます。 自分のパソコンの中では、両方動きます。 そこで教えていただきたいのですが、 javascriptのdocument.cookie、perlのSet-Cookie、metaのSet-Cookieの違いを教えてください。

    • ベストアンサー
    • Perl
  • perlのcgiが動かない・・・

    cgiを組もうと思い、まずは簡単なもので試そうと思ったのですが、 うまくいかず困っています。 ↓プログラムは、こんな感じです。 ファイル名:index.cgi #!/usr/bin/perl print "<html>"; print "<body>"; print "abc"; print "</body>"; print "</html>"; <やってみたこと> ・Perlのパス「#!/usr/bin/perl」 が間違っていないか? which perl で /usr/bin/perl とでます。 ・Apache の設定が正しく行なわれているか? http://localhost でindex.htmlがきちんと表示できています。 ・「hello.cgi」 の設置場所を間違っていないか? プログラムソースが出るということは、 間違っていないのではないでしょうか? ・ためしに実行してみた TELNETで ./index.cgi <html><body>abc</body></html> とでてきました。 これはちゃんと動いているのでは?? 何か勘違いしていますか? お気づきの点を教えてください。よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • perlがうごきません

    htmlファイルには <html> <form action="form2.cgi" method="get"> 食品名1<input type="text"name="form1"> <br> 食品名2<input type="text"name="form2"> <input type="submit"value="送信"> </form> </html> cgiファイルには #! /usr/bin/perl require "cgi-lib.pl"; &ReadParse(); print "Content-type:text/html\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<title>フォーム</title>\n"; print "</head>\n"; print "<body>\n"; print "おいしい$in{'form1'}\n"; print "まずい$in{'form2'}\n"; print "</body>\n"; print "</html>\n"; exit; cgi-lib.plはサーバーにいれております。 どうしてうごかないのでしょうか。 perlの場所も正確です。

    • ベストアンサー
    • Perl
  • クッキー書き込みが正常に行われない?

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=394703 を質問していたものです。 1.フォームで名前を入力 2.1の情報をクッキーに書き込み ということをやりたいのです。 (応用いたしますが、基本はこれです。) 1つ目のcgiで、フォームで名前を入力。 -----1.cgi-------------------- #!/usr/local/bin/perl print "Content-type:text/html\n\n"; print "<form method=post action=2.cgi>\n"; print "<input type=text name=name></input><BR>\n"; print "<input type=submit value=ok></input><BR>\n"; print "</form>\n"; exit; ------------------------------ 1.cgiの名前のデータを呼び込もうとしてもエラーになる。 -----2.cgi-------------------- #!/usr/local/bin/perl read(STDIN,$atai,$ENV{'content_length'}); ($key, $value) = split(/=/, $atai); $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; print &setCookie("name",$value); print "Content-type:text/html\n\n"; print "名前:<FONT COLOR=RED>",$value,"</FONT>と送信されました。<br>\n"; #Cookie書き込み。 sub setCookie{ local($tmp,$val); $val = $_[1]; $val =~ s/(\W)/sprintg("%%%02X",unpack("C",$1))/eg; $tmp="Set-Cookie: "; $tmp .="$_[0]=$val; "; $tmp .="expires=Thu, 1-Jan-2030 00:00:00 GMT;\n"; return($tmp); } ------------------------------ クッキー書き込みをしないで実行すると、きちんと名前が表示されます。 どこをなおせばきちんとクッキーにセットされるのでしょうか? 何度も申し訳ありませんがよろしくお願いします。

    • ベストアンサー
    • CGI
  • 書き込んだばかりのcookieが読み込めません

    cookieを書込んだ直後、書込めたか(cookieをオフにしていたり、cookieを書込めない携帯端末からのアクセスかもしれないので)確認をしようと、cookieを読込もうとしたのですが、cookieが書込まれているにもかかわらず情報を取得することができません 実験環境として、htmlファイルにボタンを作って、cgiへ飛び、そのcgi内でcookieを書込み、cookieが書込めたかどうかで分岐して、表示するようにしています (cgiを一度実行したあと一旦ブラウザで前のhtmlファイルに戻って)cookieが既に書込まれた状態で、改めてhtmlファイルのボタンを押せばcookieは読込めますが、最初にcookieを書込んだ時に同じcgi内で即読込みを行ったら読込めません 書込が完結する前に読込みに行っているから読込めないのかとも思い、読込み前にタイムラグを作っても見ましたがやはり読込めません どうすれば書込み直後に読み込めるのでしょうか? 色々ネットで調べても見ましたが、いっこうに解決策が見つかりません ご存じの方ぜひご教授下さい よろしくお願いします なお、下にperlのコードを書いておきます #クッキーを書込 $test{sid} = "12345"; &set_cookie($test{sid}); #タイムラグ use Time::HiRes; Time::HiRes::sleep(0.8); #クッキーを読込 ($cookie{test}) = &get_cookie; if(!$cookie{test}){ print "読み込めてない"; } else{ print "読み込めた"; } ######→読み込めません##### #クッキー書込sub sub set_cookie { local(@cook) = @_; local($gmt, $cook, @t, @m, @w); @t = gmtime(time + 2*60*60); @m = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); @w = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); $gmt = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT", $w[$t[6]], $t[3], $m[$t[4]], $t[5]+1900, $t[2], $t[1], $t[0]); foreach (@cook) { s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg; $cook .= "$_<>"; } print "Set-Cookie: SID=$cook; expires=$gmt; path=/;\n"; } #クッキー読込sub sub get_cookie { local($key, $val, *cook); $cook = $ENV{'HTTP_COOKIE'}; foreach ( split(/;/, $cook) ) { ($key, $val) = split(/=/); $key =~ s/\s//g; $cook{$key} = $val; } foreach ( split(/<>/, $cook{'SID'}) ) { s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg; push(@cook,$_); } return (@cook); }

    • ベストアンサー
    • Perl
  • 次のカウンターのCGIプログラムで間違っているところはどこでしょうか?

    参考書を手にしながら次のようにCGIを作成しましたが、上手く動きません。 個人別カウンター(アクセスしてきた個人ごとにカウンターが変わる)CGIです。 いろいろ調べたのですが、どこが間違っているのか分からなくなりました。 どうぞお願いいたします。 ======= #!/usr/local/bin/perl $cookie = $ENV{'HTTP_COOKIE'}; @array = split(/; /, $cookie); foreach $tmp (@array){ ($key, $value) = split(/=/, $tmp); if($key eq 'count'){ $count = $value; } } if( $key == ""){ $count = 0; } $count++; ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = gmtime(time + 60*60*24*30); @day = ("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "sat"); @month = ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Set", "Oct", "Nov", "Dec"); $expireDate = sprintf("%s\, %02d\-%s\-%04d %02d:%02d:%02d GMT", $day[$wday], $mday, $month[$mon], $year+1900, $hour, $min, $sec); print "Content-Type: text/html\n"; print "Set-cookie: count=$count; expires=$expireDate \n\n"; Print "<html>\n"; Print "<title>counter4</title>\n"; print "<body>\n"; print "<h1>個人別カウンター</h1>\n<hr />"; print "あなたは$count回目のご訪問です。\n"; print "</body>\n"; print "</html>"; exit;

    • ベストアンサー
    • CGI
  • Perl/CGIについて

    #!/usr/bin/perl use CGI; $cgi = new CGI(); $from = $cgi->param('from'); $namae = $cgi->param('namae'); $naiyou = $cgi->param('naiyou'); print "Content-type: text/html\n\n"; # 設定 $sendmail = '/usr/lib/sendmail'; $jcode = './jcode.pl'; $to = 'ha***@***.ne.jp'; #$from = ''; $subject ='名鉄と地下鉄の直通運転'; # 文字コードライブラリの読み込み require $jcode; # メール送信 &jcode'convert(*subject,'jis'); open(MAIL,"| $sendmail -t"); # ヘッダ情報出力 print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n\n"; # 本文出力 print MAIL " $namae\n\n"; print MAIL " $naiyou\n"; close(MAIL); #確認表示 print " $namae\n"; print " $naiyou\n"; print "メールを送信しました\n"; end #確認表示の所で表示が改行されない。

    • ベストアンサー
    • Perl

専門家に質問してみよう