web拍手改造

連投規制を緩和する

 2005年はこととねにおけるweb拍手年。以下は略。

 web拍手はいたずらを防止するため、連続して送れる拍手の回数を十回に制限している。実際の話、十回連続で拍手を送るということはそれほどあり得ないとは思うのだが、いや、そりゃうちだけの話か。こいつは素晴らしいコンテンツだぜ、というようなサイトであれば、十回、あるいはそれ以上の拍手を送りたいということもあるだろう。

 現実的な話をすると、十回制限に引っかかるのは一言メッセージを送る時だろう。いや、別に大量のメッセージであっぷあっぷさせてやろうというのが目的ではなくって、デフォルトで五十文字と設定されている一言メッセージを使って、ある程度まとまった意見を送ろうという場合、どうしても連投せざるを得なくなる。なに、二三回でまとめられるような用件なら問題ないさ。けれど、もっともっと色々を伝えたいとき、あるいは込み入った内容に言及するときには、結構十回制限に引っかかることもあるのだよ。

 というわけで、今回は拍手の十回制限を緩和する改造をしてみようと思う。

CGIを改造する

 拍手の回数を制限できるということは、どこかで拍手の回数を記録しているということである。では、いったいどこでその拍手回数のカウントが行われているかといえば――、まあここは、いつものようにweb拍手送信完了画面のソースを読んでみることにしよう。

拍手回数のカウント

 web拍手送信完了画面のソースを見てみれば、以下にあげるような文字列を見付けることができるだろう。

<input type=hidden name=kaisuu value=1>

 type属性にhiddenが設定されているため画面には表示されないが、name属性の値がkaisuuとあることを見ても、これが拍手の回数であることがわかる。実際、拍手を繰り返しつつそのつどソースを確認してみれば、value属性値がひとつずつ増加していることがわかるだろう。

 じゃあ、この数値が増えないようにすればいいのかといえば、そういうわけではなくて、このkaisuuをチェックする部分をCGIの内部に見付けて、その制限を緩和してやるというのである。

clap.cgiを書き換える

 kaisuuをチェックする部分はいったいどこにあるのだろうかというと、clap.cgiの147行目である。

if ($kaisuu < 9){

 フォームから送られてきたkaisuuの値は、$kaisuuという変数にセットされている。

 clap.cgiの147行目では、$kaisuuの値が9より小さいかどうかを判定して、もし9より少なければ$kaisuuに1を加えた後に、一言メッセージの送信フォームを出力する。そうでない場合(つまり$kaisuuが10以上の場合)には連投を禁止するメッセージを表示するという、そういう仕組みになっている。上に取り出した147行目は、$kaisuuの数値を判定するための部分である。

 プログラムソースを見れば、不等号があるのがわかるだろう。147行目を言い換えると、$kaisuu小なり9が真ならば、となる。つまり、今回書き換えるべき数値は、ここにある9であるわけだ。

 もし拍手の連投を20まで許すならば、小なりの後にいくつを設定してやればよいのだろうか。20ではないよ。20にすると、20より少ない場合に送信フォームが出力されるということになり、21度目の拍手を許してしまう。つまり、20回以上の拍手を禁止する場合には、19と設定してやればよい。

変更前

if ($kaisuu < 9){

変更後

if ($kaisuu < 19){

 これで拍手の連投規制が、デフォルトの十回から二十回まで緩和されるはずだ。

もう一ヶ所修正する

 もう一ヶ所修正しておいたほうがいいところがある。それはclap.cgiの160行目だ。

print '<font size=2>いたずら防止のため、10回以上連続で拍手を送れないようになっています。</font>';

 強調した部分を、10回から20回に書き換えておくべきだろう。そうでないと、少々間抜けなことになってしまう。こうした箇所の変更忘れは意外と多いので、気をつけておきたい。


<   >

わたしの愛した機械へ トップページに戻る

公開日:2005.04.20
最終更新日:2005.05.26
webmaster@kototone.jp
Creative Commons License
こととねは、クリエイティブ・コモンズ・ライセンス(表示 - 継承 2.1 日本)の下でライセンスされています。