• 締切済み

フォームメールへ引き継ぐ値が表示されないことがある。

Perl 5.6.1、cgi-lib.pl 2.17、jcode.pl 2.11です。 以下のソースで、htmlファイルより引き継いだ値(theme,number,day)をたまに取り込めていないというか、これらの値だけ表示されていないことがあるようです。 私の環境では再現できておりません。 ユーザーの環境に依存するようなソースコードなのでしたら変更したいと思っております。 どなたかご教授よろしくお願いいたします。 #!/usr/local/bin/perl require "./cgi-lib.pl"; require "./jcode.pl"; &ReadParse; $text = $in{'theme'}; &jcode'convert(*text, 'sjis'); $in{'theme'} = $text; $text = $in{'number'}; &jcode'convert(*text, 'sjis'); $in{'number'} = $text; $text = $in{'day'}; &jcode'convert(*text, 'sjis'); $in{'day'} = $text; print<<'end_mark'; Content-type: text/html <html> <title>XXX</title> </head> <form action="/cgi-bin/XXX.cgi" method="post"> <table> <tr> <td>テーマ/</td> <td> end_mark print "<input type=\"hidden\" name=\テーマ\" value=\"$in{'theme'}\">$in{'theme'}</td></tr>\n"; print<<'end_mark'; <tr><td>番号/</td><td> end_mark print "<input type=\"hidden\" name=\"番号\" value=\"$in{'number'}\">$in{'number'}</td></tr>\n"; print<<'end_mark'; <tr><td>日時/</td><td> end_mark print "<input type=\"hidden\" name=\"日時\" value=\"$in{'day'}\">$in{'day'}</td></tr>\n"; print<<'end_mark'; <tr> <td>会社名(正式名)</td><td> <input type="text" name="_会社名"></td></tr> <tr> <td> <input type="submit" value="申込み" name="submit"> <input type="reset" value="リセット" name="reset"> </td> </tr> </table> </form> </body> </html> end_mark

みんなの回答

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

htmlspecialchars対策を行っていないから、html構文として崩れたりしてるんじゃないのかな? クロスブラウザー対策としても、<>"& は、&lt;、&gt;、&quote;、&amp; に変換すべきです。 あとは、sjisのせいとか?2バイト目がx5c(=\バックスラッシュ)となる文字がvalue値内にあると、html構文解釈に支障を来すおそれがあります。でも、JavaScript構文でなければ、こっちは大丈夫だったと思ったけど。

yngway
質問者

お礼

お返事遅くなって申し訳ありません。 よく調べてみます。

すると、全ての回答が全文表示されます。

専門家に質問してみよう