9.文字数制限・エラーメッセージ
前項で、HTMLのフォームから入力された「名前」と「暗証番号」が送信された場合
デコード処理され、HTML上で表示できる様になりました。
さて~っ!
今回は、「名前」と「暗証番号」の入力フォームに、入力された値の送信時に
文字数制限を付けたいと思いますです。
オプションみたいな~・・・みたいなぁ~?だしぃ~?・・・( ̄〇 ̄)あ( ̄o ̄)ほ( ̄。 ̄)
◎前項までのスクリプト
(注:↓サブルーチン「sub decode」の実際のソースは、cgibessou_page008.txt のスクリプトに置き換えて下さい。
ここでは、HTMLのTEXTAREAタグを使用して表示してるので、実際のスクリプトとは異なります。)
(注:↑サブルーチン「sub decode」の実際のソースは、cgibessou_page008.txt のスクリプトに置き換えて下さい。
ここでは、HTMLのTEXTAREAタグを使用して表示してるので、実際のスクリプトとは異なります。)
文字数制限もCGIの部屋を参照なんだけど
今回は名前と暗証番号を別々に文字数制限したいんだよな~。
(注:↑サブルーチン「sub decode」の実際のソースは、cgibessou_page008.txt のスクリプトに置き換えて下さい。
ここでは、HTMLのTEXTAREAタグを使用して表示してるので、実際のスクリプトとは異なります。)
名前 <input type = "text" name = "name"maxlength
= 8> ← バイト制限では無く、文字制限 8
暗証番号 <input type = "password" name = "pass"maxlength
= 10> ← バイト制限では無く、文字制限 10
で、フォームの入力文字数制限をしてみました。
maxlength ←フォームの入力画面の文字数制限タグ
これでは完璧?では無いらしく、CGI側でも文字数制限もした方が安全らしいです。^^;
って事で、CGIのスクリプトに
if($buffer_length >= 50){exit;}
と加えてお試しで、名前と暗証番号を空白のまま送信してみたところ・・・
$buffer_length : 11
$buffer : name=&pass=
name=&pass= が、11バイトって解釈で、プラス
名前の制限が8文字、暗証番号の制限が10文字で、合計約46バイト位。
if($buffer_length >= 57){exit;} → exit
if($buffer_length >= 58){exit;} → 正常表示
半角英数文字などは、約1バイト
全角文字は、約2バイト
って事ですかいな?^^
今のところCGI側の文字数制限は 60 に設定してみました。
ムンださBBSの ini.cgi を持ち込んで来てカスタマイズして
require './ini.cgi'; で呼び出して エラーメッセージ表示をできる様にしたっす。
現在のソース : cgibessou_page009.txt
ini.cgi : ini.txt