drupalで自社のページをつくる 16 - キャプチャ認証(Captcha)を各フォームに仕込む

一通り自社ページの作成は終わって後は、バナーだの写真だのを準備すれば良い段階となった。
外部に公開するにあたり、未ログインユーザ(通常の閲覧者)がフォームを使える場所にキャプチャを仕込むことにした。


インストール:

CAPTCHA - http://drupal.org/project/captcha から

wget http://ftp.drupal.org/files/projects/captcha-6.x-1.0-rc2.tar.gz

でモジュールを取得し、いつものようにイントールし、モジュールを有効化すればよい


Captcha追加方法:

ホーム › 管理セクション › ユーザの管理 の CAPTCHA でいろいろ試してみればよい。
今回は、Challenge type per form の項目にリストアップされている全ての項目に、image_captchaを設定し、
それに加えて、前回webformを使って作った お問い合わせフォームと、社員募集のエントリーフォームにも追加した。
本来使われない(表示されない)フォームもあるが、念のため全部captcha入りにしておく。
不便になるがいたずらはいやずら。


webformで作ったフォームにcaptchaを追加したい場合には、Add CAPTCHA administration links to forms にチェックをつけた後、
the CAPTCHA point form. のリンクをクリックした後に出てくる設定画面の Form ID: に

追加したいフォーム内のhidden項目でnameがform_idのvalue値(webform_client_form_xx)をセットすればよい。
例:

<input type="hidden" value="webform_client_form_51" 
id="edit-webform-client-form-51" name="form_id"/>;

の場合はwebform_client_form_51をセットする。


Captchaのフォントとか色とか:

デフォルトだと、ライセンスの問題からttfフォントが付いていなくて、ビットマップフォントが使われて汚いので、
/usr/share/fonts/から適当にフォントをsites/all/modules/captcha/image_captcha/fontsにコピーして持ってくる。
例:

cp /usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf \
./sites/all/modules/captcha/image_captcha/fonts/

持ってきた後で、
ホーム › 管理セクション › ユーザの管理 › CAPTCHA 内のImage CAPTCHAで、
Font settings のFont: を変更すればOK
ついでに、色とかノイズとかを Color settings、Distortion and noise で好きに調整する。


日本語化:

例によって全部英語なので、外に見えるところは適当に翻訳する必要有り。

(翻訳してサイトで公開されている方もいるみたいなので探してみるのもいいかも)


レイアウト:

サブミットボタンの上部にキャプチャ入力用の領域のfieldsetが差し込まれるので、
CSS injectorでcssを調整して、違和感の無いように変更する必要有り。


こんな感じのキャプチャ、色とかノイズとかは調整出来る。

cssでフォームとうまく融合させる。あんまり出来てないけど。



いやー、楽だね。drupalが好きになってきた。枠組みとして。

CodeIgniter on drupal とか、Kohana on drupal とかやったらシステム開発も楽になるかな?
昔 ちいたん on xoops はやったけど、この時はモジュール開発が超速くなったが、
「何かのフレームワーク on drupal」って冗長過ぎるか?


でもはじめは素直にdrupalの流儀で開発する方がいいか。その前にCodeIgniterをマスターしなければ。


というわけで明日からはdrupalは一旦置いて、CodeIgniterをいじる事にする。
なんか簡単な機能でも作って公開しよう。