• ベストアンサー

GETのうけとり。

a-kumaの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

あなたは、この test2.cgi をどこに置いたのでしょう? > 「サーバーが見つからないか、DNS エラーです。」という表示がでてきます。 の表示の通り、ブラウザにサーバが分からないんです。 > http://127.0.0.1/test2.cgi?jikanst=0&jikanend=24&youbi=0&rinji=0 ********* の部分の問題で、Perl のレベルの問題ではないです。 Content-type: 行の出力に問題があるのは、No.1 の回答の通り。

Iam2888
質問者

補足

 私のPC内にて、ローカールサーバを立ち上げて使用してます。 test.cgiから、GETで、test2.cgiへデータを移行したいのですが、 test.cgiは、問題なく作動し、http://127.0.0.1/test2.cgi?jikanst=0&jikanend=24&youbi=0&rinji=0と、アドレスバーにも表示されます。 ちなみに、test.cgiとtest2.cgiは、同じフォルダに入ってます。  やっぱり、perlがおかしいのでしょうか?

関連するQ&A

  • UTF-8から送信されたデータを日本語化するには?

    %E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A これを あいうえお に変換するには、どのようにデコードすればいいのでしょうか? ご教授お願いします。m(_ _)m [現在のソース] $buffer = $ENV{'QUERY_STRING'}; @pairs = split(/&/,$buffer); foreach $pair (@pairs){ ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; my $value = Jcode::convert($value, 'utf8'); $FORM{$name} = $value; } ↓ 「縺ゅ>縺・∴縺・」が検出されます。

    • ベストアンサー
    • Perl
  • "ー"を含むとサーバーエラーになる

    HTMLのShift_JISに合わせて、Jcode.plで日本語コード変換のeucをsjisに変更したのですが、"ー"が$FORM{'key'}に含むとサーバーエラーになります。 どうしたら、sjisで"ー"など一部文字でエラーなく処理できるのでしょうか? アドバイスお願い致します。 if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name,$value) = split(/=/, $pair); $name2 = $name; $value2 = $value; $FORM2{$name} = $value; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value,'sjis'); #←ここを変更

    • ベストアンサー
    • CGI
  • Jcode.plを使用してコンバート

    if($ENV{\'QUERY_STRING\'} eq \"\"){ read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'}); }else{ $buffer = $ENV{\'QUERY_STRING\'}; } @pairs = split(\'&\',$buffer); foreach $pair (@pairs) { ($name, $value) = split(\'=\', $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(\"C\", hex($1))/eg; &jcode::convert(\\$value,\'sjis\'); $form_data{$name} = $value; } Getメソッドで文字「?a=あ」をperlのJcode.plを使用してコンバートしましたが、 ブラウザのURL表示部は「?a=%82%A0」となり、shift_jisの16進数表示されてしまいます。 クッキーに取り込んで表示しても??と表示されてしまいます。 何かしら変換しているみたいのですが、 変換方法はあってるのでしょうか?

    • ベストアンサー
    • Perl
  • 半角カナを検出したい

    フォーム入力の半角カナを検出または全角に変換したいです。 ここで同じような質問をいくつかみて、いろいろ試しましたが どうもうまくいきません。 jcode.pl,v 2.6です。 デコード部分は以下のようになってます。 #!/usr/bin/perl require 'jcode.pl'; print "Content-type: text/html\n\n"; $request_method=$ENV{'REQUEST_METHOD'}; if($request_method eq "POST"){ read(STDIN,$query_string,$ENV{'CONTENT_LENGTH'}); }else{ $query_string=$ENV{'QUERY_STRING'}; } @pairs=split(/&/,$query_string); foreach $pair(@pairs){ ($key,$value)=split(/=/,$pair); $key=~ tr/+/ /; $key=~ s/%([\dA-Fa-f][\dA-Fa-f])/pack("C",hex($1))/eg; &jcode'convert(*key,'sjis'); $key=~ tr/,/_/; $value=~ tr/+/ /; $value=~ s/%([\dA-Fa-f][\dA-Fa-f])/pack("C",hex($1))/eg; &jcode'convert(*value,'sjis'); $value=~ tr/,/_/; $input{$key}=$value; } よろしくお願いします。

    • ベストアンサー
    • Perl
  • if文を使用すると表示されません。

    フォームに年月日を入力してもらい、下記のスクリプトで 入力画面を表示させようとしています。 年月日を入力するフォームにはhiddenをいれ、if文でサブルーチン &newFormを表示させようとしているのですが、うまくいきません。 <input type=hidden name=mode value="data"> if文を使用せずに、&newFormを直接呼び込むと表示するのですが・・・。 ぜひご教授願えればと思います。 よろしくお願いします。 ===================================================================== &query; # 初期設定 if($in{'mode'} eq "date"){ &newForm; } sub newForm{ print"Content-type:text/html\n\n"; print <<EOF; <html> <head> <title></title> </head> <body> <textarea name="diary" rows="30" cols="70"></textarea><br> <input type="submit" value="書き込み"> </body> </html> EOF } sub query{ $ENV{'REQUEST_METHOD'}=~ tr/a-z/A-Z/; if ( $ENV{'REQUEST_METHOD'} eq "POST" ){ read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }else{ $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $in{$name} = $value; } }

    • ベストアンサー
    • CGI
  • safariで買い物かごに残らない

    ある買い物カゴCGIを使用していますがsafariだと日本語表記の商品だけ買い物カゴに入れても残りません。 次の買い物をしたり買い物カゴを確認した時に入っていません。英数表記の商品は大丈夫です。 CGIそのものが古いので替えるのがベストなんですが、諸事情により当面これを使用しなければいけないので何とか御教授お願い致します。 多分下記の部分が問題だと思うのですがCGIなどは全くの素人なので分かりやすくお願い致します。 *********************************************************** if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # 記録するデータはsjisに統一する &jcode'convert(*name,'sjis'); &jcode'convert(*value,'sjis'); $value =~ s/</&lt;/g; $value =~ s/>/&gt;/g; $value =~ s/://g; $value =~ s/,//g; $FORM{$name} = $value; } $soryo = $FORM{$soryo}; #--------# $cookies = $ENV{'HTTP_COOKIE'}; @cookie_pairs = split(/;/,$cookies); foreach $cookie_pair (@cookie_pairs) { ($name, $value) = split(/=/, $cookie_pair); $name =~ s/ //g; $DUMMY{$name} = $value; } $goods_next = 0; foreach $goods_num (1 .. $#cookie_pairs + 1) { $cookie_name = 'CARGO_'.$goods_num; if ($DUMMY{$cookie_name} =~ /^goods:/ || $DUMMY{$cookie_name} =~ /^removed/) { $GOODS[$goods_num] = $DUMMY{$cookie_name}; $goods_next = $goods_num + 1; } } #--------# ***********************************************************

    • ベストアンサー
    • CGI
  • デコード処理について

    sub decode { if ($ENV{'REQUEST_METHOD'} eq "POST") { if ($ENV{'CONTENT_LENGTH'} > 51200) { &error("投稿量が大きすぎます"); } read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $in{$name} = $value; } while (($k,$v) = each %in) { $v =~ s/&/&amp;/g; $v =~ s/</&lt;/g; $v =~ s/>/&gt;/g; $v =~ s/"/&quot;/g; $in{$k} = $v; } } 上記の処理が、具体的にどうなっているのかよくわかりません。 どなたか分かる方、説明をお願いします。

  • 掲示板を作りたい

    perlを勉強中です 掲示板に挑戦してみました 引用の文字色を変えたいと思っています。下記のように>>をいれるとその行の文字色を改行まで変えたいです >>引用文 しかし、やってみると、他の置換えがあってうまくいきません。 どうすればうまくいくのでしょうか? よろしくお願いします sub form_decode{ if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $form, $ENV{'CONTENT_LENGTH'}); } else { $form = $ENV{'QUERY_STRING'}; $NG = 1; } @pairs = split(/&/,$form); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg; $name =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg; $value =~ s/>(&gt;[^<]*|>[^<]*)/&gt;&gt;<font color=\"red\">$1<\/font>/g; $value =~ s/>/&gt;/g; $value =~ s/</&lt;/g; $value =~ s/\r//g; $value =~ s/\n//g; &jcode'convert(*value,'sjis'); &jcode'convert(*name,'sjis'); $FORM{$name} = $value; } }

    • ベストアンサー
    • Perl
  • 半角スペースが有効にならない。

    前のページで入力された値を取得するCGIですが、どうしても半角スペースを認識しません。 それどころか、半角スペースの後ろを一切消してデータを取得しています。 同じように作成したものはきちんと動いているのに…。 どこが間違ってるかご指摘お願いします。 ---------- #!/usr/local/bin/perl read(STDIN,$buffer,$ENV{'content_length'}); @atai = split(/&/,$buffer); foreach $atais(@atai){ ($key, $value) = split(/=/, $atais); $FORM{$key}=$value; } $buffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $key =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $buffer =~ tr/+/ /; $value =~ tr/+/ /; $key =~ tr/+/ /; print "Content-type:text/html\n\n"; print "$key<BR>\n"; print "<A HREF=./***.cgi>Back</A><BR>\n"; open (FH,">***.log"); @filew="$buffer\n"; print FH @filew; close(FH); exit; ---------- 以上です。よろしくお願いします。

    • ベストアンサー
    • CGI
  • Perl 指定行への書き込み

    #!/usr/bin/perl require './jcode.pl'; $file = "houkoku.txt"; if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value,'sjis'); $value =~ s/</&lt;/g; $value =~ s/>/&gt;/g; $value =~ s/\t//g; $value =~ s/\r\n/\n/g; $value =~ s/\r/\n/g; $value =~ s/^\s+//; $value =~ s/\s+$//; $FORM{$name} .= (defined $FORM{$name}) ? "," . $value : $value; } open( WRITE, "+< $file" ); print WRITE $FORM{'name'},",",$FORM{'color'}."\n"; close(WRITE); foreach ( keys %FORM ) { if( $FORM{$_} eq '' ) { $FORM{$_} = '入力がありません'; } } #if ( $FORM{'name'} eq '' ) { $FORM{'name'} = '入力がありません'; } if ( $FORM{'color'} eq '' ) { $FORM{'color'} = '入力がありません'; } print "Content-Type: text/html\n\n"; print <<END_HTML; <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <center> <table border="1"> <td> $FORM{'name'}</td> <td> $FORM{'color'}</td></tr> </table> </center> </body> </html> END_HTML exit; として、カンマ仕切りでデータを保存できるようになりました。 これを、指定行への書き込みを行いたいのですが、どのようにしたら良いでしょうか。 たとえば、5行目にこのデータを書き込んで、常に5行目を上書き更新するような感じです。 よろしくお願いします。

    • ベストアンサー
    • Perl