戻る
2.投稿するメッセージのサイズ制限
掲示板へのイタズラの一つに、巨大なメッセージ(必ずしも文章とは限らない)を書き込むものがあります。これらは投稿するサイズを制限することで簡単に対策できます。
制限には2種類の方法がありますが、いずれも制限する長さを設定する必要があります。スクリプトの先頭部分の各種設定のところに、以下の各変数を追加します。
$max_value = 1000; # 内容のサイズ
$max_name = 100; # 名前のサイズ
$max_email = 100; # メールのサイズ
$max_subject = 100; # 題名のサイズ
この後は、これらの変数を使ってサイズの制限を行っていきます。
(1) 長い場合はエラー終了
この場合、length関数を使って、フォームから送られてきた値の長さを取得します。これと、スクリプト側で設定した長さとを比較して、長い場合はエラー終了するようにします。
$len = length($FORM{'value'});
&error("内容が長すぎます") if ( $len > $max_value );
$len = length($FORM{'name'});
&error("名前が長すぎます") if ( $len > $max_name );
$len = length($FORM{'email'});
&error("E-MAILが長すぎます") if ( $len > $max_email );
$len = length($FORM{'subject'});
&error("題名が長すぎます") if ( $len > $max_subject );
上記の処理を、サブルーチンregistの先頭付近に追加します。
変更後のサブルーチン
(2) オーバーする部分をカットして保存
制限するサイズを越える場合、超えた部分を切り捨てて保存する場合、substr()関数を使用します。
$FORM{'value'} = substr( $FORM{'value'}, 0, $max_value );
$FORM{'name'} = substr( $FORM{'name'}, 0, $max_name );
$FORM{'email'} = substr( $FORM{'email'}, 0, $max_email );
$FORM{'subject'} = substr( $FORM{'subject'}, 0, $max_subject );
上記の処理を、サブルーチンregistの先頭付近に追加します。
変更後のサブルーチン
以上の変更のうち、制限2の方法を取り入れたものをver0.91としておきます。
TinyBoard v0.91
戻る
CGI工房