- ベストアンサー
CGI(Peal)でURLデコード
このURLを参考に、フォームの確認ページをつくっているのですが、URLがデコードできません。 何度やってもエラーばかりで…Pealって難しいですね(PHPのほうが簡単)。 どうすればいいですか? http://www.aimix.jp/cgi/syohofrmgetvw.html
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
PHPでもデコードが必要だとは思いますけどね。 モジュールを使わずに自前で実装すれば、どの言語でも難しくなります。 一番簡単なのはCGIモジュールを使った方法です。 サンプルを載せておきますので、参考にしてみてください(動作確認済)。 --- form.html --- <form action="test.cgi"> <input type="text" name="message" /> <input type="submit" "実行" /> </form> --- test.cgi --- #!/usr/bin/perl use strict; use CGI; my $cgi = CGI->new; my $message = $cgi->param('message'); print "Content-type: text/html\n\n"; print <<__HTML__ <html> <body> <h1>MESSAGE: $message</h1> </body> </html> __HTML__
その他の回答 (2)
- ORUKA1951
- ベストアンサー率45% (5062/11036)
>URLがデコードできません。 の意味がわかりません。 QUERY_STRINGSで受け取ったURLエンコードされた文字列を出コードできないという意味ですか? $enCodedQUERY_STRING =~ tr/+/ /; $enCodedQUERY_STRING =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
- kmee
- ベストアンサー率55% (1857/3366)
PealがPerlの間違いだとして(もし、Pealと言う言語の話だったら、話が違うかもしれません) まずは、そのエラーの内容を確認するのが最初です。 それがわからなければ、何を直せばよいか判断できません。 表示が出ないようなら、2行目に use CGI::Carp qw(fatalsToBrowser); とでも入れてください。 エラー内容がブラウザに表示されるはずです。 他にありがちなものでは1行目の > #!/usr/local/bin/perl が使っている環境とあってない、というのがあります。 # 2回も「Peal」と書いてることからすると、もしかしたらここもpealになってたりして。 また、ファイルの実行権が無いのかもしれません。 ついでに。 そのサイトを斜め読みしましたが、書き方が若干古いです。 最近では、 use strict して、変数は my を付けて有効範囲を限定するのが主流です(特に規模が大きなスクリプトでは) また、CGIモジュールを使えば、Perlでもフォームとのデータのやりとりが簡単にできます。