KCAPTCHA + Ethna

EthnaKCAPTCHAを使うというお話。
KCAPTCHAは、よく会員登録サイト等である「ぐにゃ」っと曲がった文字列で画像認証するやつを作るためのPHPクラスライブラリ。PHP+GDで画像を作成してくれます。
例えば、

<img src="sample.php">

の様にして認証用画像を取得。sample.phpの中身はこんな感じ。

<?php
include('kcaptcha.php');
if(isset($_REQUEST[session_name()])){
session_start();
}
$captcha = new KCAPTCHA();
if($_REQUEST[session_name()]){
$_SESSION['captcha_keystring'] = $captcha->getKeyString();
}
?>

上のソースはサンプルのまま。
コンストラクタでヘッダ込みの画像データが吐かれるのでimgタグに画像が表示される。と。
表示の後、認証するためには画像に表示されている文字列を画面遷移後も保持しておく必要があるのでこのサンプルでは$_SESSION['captcha_keystring']に保持されているのだけど、ethnaの場合、Ethna_Sessionクラスでセッションが管理されるのでセッションIDが異なるので保持されない。
ということで、Ethnaのアクションクラスを作成

ethna add-action captcha

これで作成される app/action/Captcha.php の perform() 内に上記を真似て次の様な処理を書いておく。

<?php
include('kcaptcha.php');
//(中略)
function perform(){
if(!$this->session->isStart()){
$this->session->start();
}
$captcha = new KCAPTCHA();
$this->session->set("captcha_keystring", $captcha->getKeyString());
return 'captcha';
}
?>

これで、Smartyテンプレート内で

<img src="?action_captcha=true"><br>

何ぞと書けば無事表示。且つ、Ethna_Sessionにも表示した文字列が保持されているので、次のアクションでActionFormで取得した値とセッションの値とを比較すればよい。
なんと便利なライブラリだろう。作者の方に感謝。

…あとでキレイにまとめる。

ずっと愚直にサンプル通りやって、なんでうまくいかないんだろうと悩んでいたのだが、今朝バスに乗った瞬間、気づいたので駅までに着く間の10分でプログラムを書き上げた。
今日、一番集中力が出たのはあの時間だけだったかもしれない。

そういえば

ここ数年サプライズ起こしてないよな。と思った。

いってみた

ヨドバシ開店ということで行ってみた。夕方過ぎたくらいだったのに人が多い!
f:id:hideack:20070701192628j:image
専門店とか食事ができるところは遅れて開店する様です。
レストランには元横綱のちゃんこ屋も入るみたいです。
近辺にはなかったので一度行ってみたいなぁ。

今日は日曜日ですよ。

と、思いつつも気になることがあったので結局仕事場へ。
地味に、しかしながら着実に仕事が片付く。電話とかの割り込みが無いのが大きいな。

工事中

一番後ろの車両に乗っていたのだが、行き先の案内板や、社内の液晶ディスプレイの行き先表示をデジタルカメラで撮り続ける人が。
どうも、工事のため普段終点にならないところが表示されているのが珍しい。ということで撮られている模様。
おそらくこのまま何処かで時間を過ごされて工事完了後の一番列車に乗ろうと考えている様な格好であった。
なるほど、貴重なのか。

動物園

行ってきましたパンダのいる動物園。
東京暮らしを初めて数年ですが、行ったことが無かったので…。
入り口から進むこと100m程度でパンダのコーナー発見。現在は一匹しかいないんですね。
小屋自体は当初いた4頭分があるのですが、現在は1頭分しか使われておらず少し寂しい感じも。

パンダと初対面。
f:id:hideack:20070630223052j:image
…結構、衝撃的な姿でしたが斜めから見ると顔が拝めました。
こんな感じに。
f:id:hideack:20070630223051j:image
なお、パンダ周辺には警備員が数人配置。貴重さが伺えます。
頭が動いた瞬間が撮れた。
f:id:hideack:20070630223048j:image
他にもいろいろな動物がいた。
シロクマもいたのだけど、地元の動物園とは違い、冷風がでる仕組みが付けられていた。斬新。
f:id:hideack:20070630223427j:image
f:id:hideack:20070630223426j:image
あと、プレーリードックも発見。集団の中で一匹、立って遠くを見つめる奴が。
なんかのCMの様です。
f:id:hideack:20070630223429j:image
アルマジロなんてのもいました。丸まって全然動かないけど。
f:id:hideack:20070630223428j:image

午後からずっと歩き回りましたが、やはり敷地が大きい。
歩き回るといい運動になりました。
これ、子供連れてたら完全にバテるだろうねぇ。などと、最後に話したり。
確かに大変そうだ。
また季節のいいときに、ふらりと歩き回りたいですねぇ。

ふぅ。。。

帰宅時間が、また押し戻り始めた気配。

SFが現実に。

最近、読んだ本はコレ。

NHKスペシャル グーグル革命の衝撃

NHKスペシャル グーグル革命の衝撃

NHKスペシャルで放映されたのでテレビでも見ましたが、その際の取材を元に更に詳細にまとめられている。
これを読んでいて思い出した小説がある。

アド・バード (集英社文庫)

アド・バード (集英社文庫)

椎名誠が書いたSF小説で未来の都市は広告が支配しているという話。
学生のときに読んだので細かいところまでは忘れてしまってるのだけど、広告の役割をする鳥(アド・バード)が飛んでいたり、洗面所で蛇口をひねると広告が流れたり*1する世界で物語が描かれているのですが。
当時(1990年,文庫になったのが97年)はSF小説として不思議・奇怪な未来を描くためにこの様な設定が使われたのかもしれないけど、今、現在のgoogleがweb上の様々な箇所(検索結果だったり、メールだったり…)を広告媒体として利用しているのと微妙にシンクロしたなぁ。と。

…そう考えると少し、恐い気もします。いや、もう少し楽観的に考えてもいいのかもしれないけど。

*1:…というシーンがあった気がするのだが、記憶が確かでないところが悲しい