KENT-WEB サポートコーナー 過去ログ [ 0052 ]


記事No: 4615
投稿日: 2008/10/03(Fri) 14:56:33
タイトル[postmail]文字数オーバーのメッセージが出ません
ID情報: makitomo
投稿者: マキ
URLhttp://sousui.jp/~makitomo/

お世話になっております。
今回、postmail(ver4.3)を設置させていただきました。
sendmailを使用しております。
(設置サイトはゲーム・マンガの二次創作同人サイトですので苦手な方はご注意ください)

動作確認をしていたところ、エラーメッセージがイメージ通りに表示されませんでした。

【設置場所:WEBサイトTOPページ】
「ひとこと」フォームとして設置させていただきました。
【問題のエラー:文字数オーバー】
制限文字数1000バイトを超えると、エラーにはなるのですが「正しく入力してください」というメッセージのみが出ます。
その際、$rightによって表示されるメッセージはアラーム色にはなりません。
スクリプトを見ると、「メッセージの入力内容が大きすぎます」というメッセージも出力されると思うのですが…

シンプルな一言フォームとして設置しまして、入力項目はメッセージのみです。(textarea使用)
メッセージは必須項目になっておりまして、入力がなかった場合の「メッセージは必須です」のエラーメッセージは問題なく表示されます。
また、文字数制限に引っ掛からなければ、メッセージの送信は問題なく動作します。

試しに、エラー画面を配布されているものと差し替えてみましたが、やはり「入力内容が大きすぎます」のメッセージは出ませんでした。
また、最大容量を「0」としてみたところ、メッセージはアラーム色にならないまま、チェックボックスの名前で「入力内容が大きすぎます」と出ました。
(日記で返信する形にしましたので、日記でのレスが不可能な場合にチェックを入れてもらうチェックボックスを1つだけ表示しています。
チェックボックスの入力内容が大きいというエラーが出るのは、チェックを入れた時のみです。)

自分で考え付く範囲では確認してみたのですが、これ以上はもう思いつきません。
過去ログ・現行ログともに、解決に繋がるような記事も確認できませんでした。
解決方法にお心当たりのある方は、どうぞ宜しくお願い致します。

・CGI設置URL
http://sousui.jp/~makitomo/
・CGIの絶対パス
http://sousui.jp/~makitomo/cgi-bin/form/hitokoto.cgi
(確認画面を使用していないので、チェックモードにすると、conf.htmlのみエラーになります。)
・エラー画面の絶対パス
http://sousui.jp/~makitomo/cgi-bin/form/tmpl/err1.html (参考)
http://sousui.jp/~makitomo/cgi-bin/form/tmpl/err2.html (今回問題のエラー画面はこちらです)

08/10/03 18:47追記
http://sousui.jp/~makitomo/cgi-bin/form/hitokotocgi.txt
↑CGIスクリプトの中身です。ご参考になれば…


記事No: 4616
投稿日: 2008/10/03(Fri) 17:20:47
タイトルRe: [postmail]文字数オーバーのメッセージが出ません
ID情報: pachira
投稿者: pachira
URLhttp://www5e.biglobe.ne.jp/~pachira/

> お世話になっております。
> 今回、postmail(ver4.3)を設置させていただきました。
> sendmailを使用しております。
> (設置サイトはゲーム・マンガの二次創作同人サイトですので苦手な方はご注意ください)
>
> 動作確認をしていたところ、エラーメッセージがイメージ通りに表示されませんでした。
>
> 【設置場所:WEBサイトTOPページ】
> 「ひとこと」フォームとして設置させていただきました。
> 【問題のエラー:文字数オーバー】
> 制限文字数1000バイトを超えると、エラーにはなるのですが「正しく入力してください」というメッセージのみが出ます。
> その際、$rightによって表示されるメッセージはアラーム色にはなりません。
> スクリプトを見ると、「メッセージの入力内容が大きすぎます」というメッセージも出力されると思うのですが…
>
> シンプルな一言フォームとして設置しまして、入力項目はメッセージのみです。(textarea使用)
> メッセージは必須項目になっておりまして、入力がなかった場合の「メッセージは必須です」のエラーメッセージは問題なく表示されます。
> また、文字数制限に引っ掛からなければ、メッセージの送信は問題なく動作します。
>
> 試しに、エラー画面を配布されているものと差し替えてみましたが、やはり「入力内容が大きすぎます」のメッセージは出ませんでした。
> また、最大容量を「0」としてみたところ、メッセージはアラーム色にならないまま、チェックボックスの名前で「入力内容が大きすぎます」と出ました。
> (日記で返信する形にしましたので、日記でのレスが不可能な場合にチェックを入れてもらうチェックボックスを1つだけ表示しています。
> チェックボックスの入力内容が大きいというエラーが出るのは、チェックを入れた時のみです。)
>
> 自分で考え付く範囲では確認してみたのですが、これ以上はもう思いつきません。
> 過去ログ・現行ログともに、解決に繋がるような記事も確認できませんでした。
> 解決方法にお心当たりのある方は、どうぞ宜しくお願い致します。
>
> ・CGI設置URL
> http://sousui.jp/~makitomo/
> ・CGIの絶対パス
> http://sousui.jp/~makitomo/cgi-bin/form/hitokoto.cgi
> (確認画面を使用していないので、チェックモードにすると、conf.htmlのみエラーになります。)
> ・エラー画面の絶対パス
> http://sousui.jp/~makitomo/cgi-bin/form/tmpl/err1.html (参考)
> http://sousui.jp/~makitomo/cgi-bin/form/tmpl/err2.html (今回問題のエラー画面はこちらです)

勘ですけど…(自信ないです。)
http://www.kent-web.com/support/search/namazu.cgi?key=%24right%81@%89%FC%8Ds&whence=0&max=20&result=normal&sort=score
これと同じかなぁ。

だとすると、以下の修正が必要ですね。(閉じタグの</tr>も抜けてますよ。)

<table style="width:450px;">
<!-- cell_begin -->
<tr><td style="width:20%" nowrap>
$left</td><td style="font-size:11pt;font-weight:bold;width:80%;">
$right
</td>
<!-- cell_end --></table></center>

↓↓↓

<table style="width:450px;">
<!-- cell_begin -->
<tr>
<td style="width:20%" nowrap>$left</td>
<td style="font-size:11pt;font-weight:bold;width:80%;">$right</td>
</tr>
<!-- cell_end -->
</table>


記事No: 4617
投稿日: 2008/10/03(Fri) 18:20:22
タイトル【未解決】ありがとうございます。
ID情報: makitomo
投稿者: マキ
URLhttp://sousui.jp/~makitomo/

pachira様

ご対応、ありがとうございます。
試しに、<!-- cell_begin -->〜<!-- cell_end -->までを改行なしに訂正し、</tr>タグも挿入してみましたが、やはり動作は改善されませんでした。
(<tr>の閉じタグは、日常的に省略しているもので、忘れたわけではないんですよ〜;)
今回は、$right・$leftの引用については問題なく表示されておりますので、事例が違うのかもしれません。

なにより気になるのは、配布されているerr2.htmlを使用しても同じように文字数オーバーの表示がされないことです。
現在、元々スクリプトに同梱されていたエラー画面に差し替えております。

引き続き、お心当たりの方、お願い致します。


記事No: 4618
投稿日: 2008/10/03(Fri) 22:39:37
タイトルKENTさんへ
ID情報: teketen
投稿者: てけてん

現段階で文字数オーバーのエラー表示を出したい場合は、入力必須項目は、「・タグの記述例 (4)」の_を付けて記述するのではなく、「・コマンドタグ (1)」のneedにて設定してください。

<input type="hidden" name="need" value="【メッセージ】" />
<textarea name="【メッセージ】" rows="1" cols="30" wrap="soft"></textarea>

とする。
(因みに、testareaには、maxlength=""はないようです。
参考URL
http://www.tagindex.com/html_tag/form/textarea.html



--------------
KENTさんへ

「タグの記述例 (4)」のアンダーバーをつけた場合、文字数がオーバーしても、文字数オーバーのエラーが出ません。
それは、decodeサブルーチンにて、

if (length($key) > $max_field || length($val) > $max_field) {
$max_flg = 1;
$err{$key} = $val;
}

としているのに、その下の記述では、

if ($key =~ /^_(.+)/) {
$key = $1;


としている為、@keyには、アンダーバーを抜かしたname値が格納されることになります。
この為、err_checkサブルーチンで、

elsif (defined($err{$key}))

としても、$err{$key}には値がない為、文字数オーバーのエラー表示が出ないことになります。
修正の方を、宜しくお願いいたします。


記事No: 4619
投稿日: 2008/10/03(Fri) 23:27:32
タイトル【解決しました!】ありがとうございます。
ID情報: makitomo
投稿者: マキ
URLhttp://sousui.jp/~makitomo/

必須項目の指定方法が原因だったのですね…!
私も素人ながらスクリプトの中身も見てみたものの、解明できませんでした。言われてみれば、なるほど!と感心しきりです。
ありがとうございます。
コマンドタグでの必須項目指定に変更したところ、思ったとおりの動作が返って参りました!
ありがとうございました!!

textareaでmaxlengthが効いていないのは気付いていたのですが…気休めに入れてみてました(^^;
八方塞だったもので;

おかげさまで解決いたしましたので、意味のないmaxlength表示も消しました。

pachira様、てけてん様、この度はお世話になり、本当にありがとうございました。
KENT様、いつも使いやすく設置しやすいCGIにお世話になっております。
これからもどうぞ宜しくお願い致します。


記事No: 4655
投稿日: 2008/10/07(Tue) 20:34:27
タイトル了解>てけてんさん
ID情報: kent
投稿者: KENT

> 現段階で文字数オーバーのエラー表示を出したい場合は、入力必須項目は、「・タグの記述例 (4)」の_を付けて記述するのではなく、「・コマンドタグ (1)」のneedにて設定してください。
>
> <input type="hidden" name="need" value="【メッセージ】" />
> <textarea name="【メッセージ】" rows="1" cols="30" wrap="soft"></textarea>
>
> とする。
> (因みに、testareaには、maxlength=""はないようです。
> 参考URL
> http://www.tagindex.com/html_tag/form/textarea.html
>
>
>
> --------------
> KENTさんへ
>
> 「タグの記述例 (4)」のアンダーバーをつけた場合、文字数がオーバーしても、文字数オーバーのエラーが出ません。
> それは、decodeサブルーチンにて、
>
> if (length($key) > $max_field || length($val) > $max_field) {
> $max_flg = 1;
> $err{$key} = $val;
> }
>
> としているのに、その下の記述では、
>
> if ($key =~ /^_(.+)/) {
> $key = $1;
>
>
> としている為、@keyには、アンダーバーを抜かしたname値が格納されることになります。
> この為、err_checkサブルーチンで、
>
> elsif (defined($err{$key}))
>
> としても、$err{$key}には値がない為、文字数オーバーのエラー表示が出ないことになります。
> 修正の方を、宜しくお願いいたします。

ご指摘をどうもありがとうございました。感謝します。
近日中に修正対応するようにいたします。


[検索ページ]