2

私は自分のウェブサイトの訪問者からフィードバックを集めるための簡単なウェブフォームを開発しています。訪問者は認証されていないので、ユーザーの画像検証手順を実装したいと思います。atk4のドキュメントを検索しましたが、同様の実装のリファレンスが見つかりませんでした。また、at4-addonsソースを確認し、View_ReCaptchaとForm_Field_Verificationの2つのリソースを見つけました。

どちらをフォローすればいいのかわかりません。Webフォームの画像検証手順を実装するために参照できるサンプルコードまたはチュートリアルはありますか?

4

1 に答える 1

2

アジャイルツールキットKCapcha

これは、コントローラーやビューを使用せずに、キャプチャの非常にハードコアな実装を実装します。もちろん、そのようにコーディングすることはお勧めしませんが、期限がある場合は、これが使用できる最後の手段です。

$sec_image_field = $f->addField('line', 'sec_image', 'Security code')
    ->setNotNull()
    ->setNoSave();


$captcha_src = '/lib/kcaptcha/?' . $session_name . '=' . session_id();
$kaptcha_img = $sec_image_field->getTag('img',array('src' => $captcha_src, 'id' => 'kpt' ));
$kaptcha_img .= ' <a href="#" onclick="d=new Date(); (jQuery(\'#kpt\')'.
   '.attr(\'src\', \'' . $captcha_src . '&t=\' + d.getTime()));return false;">';
$kaptcha_img .= '<i class="atk-icon atk-icons-nobg atk-icon-arrows-left3"></i>';
$kaptcha_img .= ' reload</a>';
$sec_image_field->template->set('after_field', '<ins>Enther the code you see below</ins> <span>' . $kaptcha_img . '</span>'

注:kcapchaをダウンロードして、Webサイトから/ lib /kcapcha/にインストールする必要があります。

例:http ://agiletech.ie/contact

アジャイルツールキットReCapcha

あなたが見つけたReCapchaの実装ははるかにまともですが、理想的ではありません。POSTデータを手動で調べ、正しく入力されたかどうかを示すフラグを設定するだけです。使用例は次のとおりです。

$rc = $form->add('View_ReCaptcha');
....
if($form->isSubmitted()){
    ...

    if(!$rc->isValid()){

        $js=$this->js->univ();

        if($r->getError()){
            $js->alert($rc->getError());
        }else{
            $js->alert('Error in capcha');
        }
        $js->execute();
    }
    ....
}

注:recapchalibをインストールする必要があります。ソースを参照してください。

より良いキャプチャを作成する

おそらく最善の方法は、すべてを完全に自動的に実行する新しいフィールドタイプ(Form_Field_Capcha)を導入することです。PHPライブラリをバンドルするべきではありませんが、画像の生成はサードパーティのサービスに依存します。また、標準形式の検証を使用する必要があります。

于 2011-10-07T14:39:16.240 に答える