院生エンジニアのにっき

  • Change style to Blue
  • Change style to Red
  • Change style to Green
  • Change style to Pink

日本語CAPTCHAでコメントスパムを撃退   2008-02-18

今まではCakePHP+kcaptchaコンポーネントでコメントスパムを撃退していたのですが、自分でコメントを書くときに「人間でもこのCaptcha読めないじゃん・・」と思いました。

コメントスパムを撃退することは必要ですが、それによってコメントしてくださる方まで撃退していては本末顛倒かと思ったので、日本語CAPTCHAを導入しました。

従来のCAPTCHAは
captcha
こんな感じでした。

kcaptchaコンポーネントの使い方はIntegrate CakePHP with Kcaptcha | The Bakery, Everything CakePHP : Articlesにあるのですが、ちょっと改造して使っておりましたのでそれはまたの機会に紹介します。

今回の日本語Captchaはいたって簡単、日本語の画像を作ってそれをアップ、validateCaptcha()などを作って中でその日本語と等しいかを見るだけです。

webroot/imgフォルダ内に日本語文字が記載された画像(仮に、captcha.png)を置き

<img src="<?php echo $this->webroot;?>img/captcha.png" />
<?php echo $form->input('captchaText',
  array(
    'label'=>'上記画像の文字列を記入してください'
  ));?>

とし、

コメント投稿部で

function validateCaptcha() {
  $val = $this->controller->data['Blog']['captchaText'];
  return $val == '画像の日本語';
}

としてやるだけです。

参考:Geekなぺーじ : 海外からのコメントスパムを全て撃退


コメントを書く