Zend_Service_ReCaptcha を使ってみる。
2009年11月09日 16:36
Optical Character Recognition 技術で有名な悪意ユーザーを退治する ReCaptcha が Zend_Service に知らないうちに組み込まれてたんでプロジェクトに使ってみる。かなりシンプルな API 対応なんで想像つくけど、あるもんは使う。
reCAPTCHA でアカウントを作って、Public Key と Private Key を作成。
これを ini ファイルに設定して、こんな感じで設定。
$_params = array(
'theme' => 'blackglass'
);
$this->_recaptcha = new Zend_Service_ReCaptcha($this->_recaptchaIni->public_key, $this->_recaptchaIni->private_key);
$this->_recaptcha->setOptions($_params);
View には
$this->view->_recaptcha = $this->_recaptcha->getHtml();
後は変数に post された際に下記な感じか。
if($_req->isPost()) {
$_recaptcha_challenge_field = $_req->getPost('recaptcha_challenge_field');
$_recaptcha_response_field = $_req->getPost('recaptcha_response_field');
$_recaptchaResult = $this->_recaptcha->verify(
$_recaptcha_challenge_field,
$_recaptcha_response_field
);
if(!$_recaptchaResult->isValid()) {
$_msg = 'reCaptcha field is needed to be filled correctly.';
array_push($this->_errors, $_msg);
}
if(!empty($this->_errors)) {
return;
}
}
楽やな。
・・・・・
海外に来て、日本じゃあまり聞いたことの無いサービスの API に連携しないといけない事が多々ある。自分だけ知らないのかもしれないが。Silverpop がその1つ。メーリングリスト系のウェブサービスらしい。さすがにこれは Zend_Service に無かった。PHP 系のサイト制作には高頻度使用なので、自作しよう。
日本ではあり得ない仕様が海外だと結構あり得たりする。
ここら辺は本当にむずい。そのうちここら辺については書こう。

