戻る

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工房