ホームページ >バックエンド開発 >PHPチュートリアル >Zend_PHP チュートリアルに基づいたキャプチャ メカニズムのアプリケーション

Zend_PHP チュートリアルに基づいたキャプチャ メカニズムのアプリケーション

WBOY
WBOYオリジナル
2016-07-21 15:11:35956ブラウズ

検証コード画像を生成するには? PHPを使ったGD?はい、そうです。実際、Zend の Captcha モジュールはパッケージ化されています。この記事では、Zend の Captcha モジュールの使用方法について説明します。


環境のインストール
まず、ZendのCaptchaはGDをインストールする必要があります。 GD がインストールされているかどうかを確認するには、phpinfo() に移動して、GD モジュールがあるかどうかを確認する必要があります。 (php -m のモジュールには gd が含まれているが、phpInfo() のモジュールには含まれていない可能性があることに注意してください。この問題は、PHP と Apache が正しくインストールされていないことを意味します。詳細については、Google で調べてください)

(gd のインストール中に Missing dependency: libt1.so.5 モジュール エラーが表示された場合は、この記事をお読みください: http://www.siutung.org/post/730/)


確認コード画像を生成します
Zend_Captcha_Image クラスを使用します

コードをコピーします コードは次のとおりです:

$captcha = new Zend_Captcha_Image()
$captcha->setWordLen('4');
-> setHeight('60')
->setFont(NCCHANNEL_FONT_DIR . '/arial.ttf')
->setImgDir(NCCHANNEL_CAPTCHA_DIR)
->setDotNoiseLevel('5')
->setLineNoiseLevel( '5');

$id = $captcha->generate();


1
ここで説明する必要がある変数は 2 つあります。 $id と $code。 画像ファイル名は $id です。この ID は乱数です。

$code はこの画像内のテキストであり、確認コードの答えです

2

setWordLenなどの設定インターフェースは、認証コード画像を設定するためにZend_Captcha_Imageにより外部に公開されます。実際、その関数の名前を見れば、その関数が何を行うのかを知ることができます。詳細については、Zend の API マニュアルを参照してください。

3

font フォント ファイルはサーバー上に存在する必要があり、ImgDir は画像生成パスに設定されます

確認コードの画像を確認します

さて、確認コードの画像が生成されました。次は、確認コードを確認します。
検証手順では、Zend_Session_Namespace セッション ストレージ モジュールを使用する必要があります。

まず、検証コードを生成するときに、保存する必要がある変数は id と code の 2 つです。

OK、前のステップに戻ってコードを変更します


コードをコピーします コードは次のとおりです:
$captcha = new Zend_Captcha_Image()
$captcha->setWordLen('4' )
- >setHeight('60')
->setFont(NCCHANNEL_FONT_DIR . '/arial.ttf')
->setImgDir(NCHANNEL_CAPTCHA_DIR)
->setDotNoiseLevel('5')
->setLベル('5' );

$id = $captcha->generate();
$codeSession = new Zend_Session_Namespace('captcha_code_' . $id);

$codeSession->getWord ();


ここでわかるように、$captcha_code_$id を使用してコードを保存します。目的は、検証ステップまで待って使用することです。

ステップ 2 フォームをページに渡すときに、$id と確認コードの画像を渡します。


ユーザーに確認コードを入力してもらいます。

3 番目のステップは検証です。

この検証ステップでは、ユーザーは 2 つのパラメーターを指定する必要があります: $id と検証コードの回答 $code



コードをコピーします コードは次のとおりです:
$codeSession = new Zend_Session_Namespace('captcha_code_' . $ this->_params[ 'id']);
if ($codeSession == null || strto lower($codeSession->code) != strto lower($this->_params['code'])) {
$this->Output (ERROR);

}


このコードは読みやすいはずです。captcha_code_$id にコードが保存されており、そのコードがユーザーが入力したコードと一致する場合、検証は成功しました。

このようにして、認証コードの認証プロセスは終了です。


よく考えてください
実は、確認コードはそれほど単純ではありません。検討する価値のある質問がいくつかあります
認証コード画像は自動的に削除されないため、生成された認証コード画像が配置されているフォルダーのサイズは増加し続けます。何をするか?

Image クラスはメソッド $captcha->setGcFreq(5) を提供します。


具体的な使用法についてはAPIをご覧ください

$idを自分で設定したいのですが、どうすればよいですか?

その答えは、Zend_Captche_Image で別のレイヤーをカプセル化し、generate() メソッドを書き直すことです

たとえば、クラスを書き直しました:

コードをコピーします コードは次のとおりです:

クラス Test_Captcha_Image は Zend_Captcha_Image を拡張します
{
protected $_fid = "";

public functiongenerate()
{
$word = $this->_generateWord();
$this->_setWord($word); ️ If (mt_rand (1, $this->getGcFreq()) == 1) {
$this->_fid = $id;
$this;
このクラスを使用するコードは次のようになります



コードをコピーします

コードは次のとおりです:


$captcha = new Test_Captcha_Image();
$captcha->setWordLen('4')
->setHeight(
')
-> ;setId($user_id);
$id = $captcha->generate();
$codeSession = new Zend_Session_Namespace('captcha_code_' . $user_id); ->code = $captcha->getWord ();
--------------

//セッションを確認
$codeSession = new Zend_Session_Namespace('captcha_code_' . $this-> ;_params['user_id']);

if ($codeSession == null || strto lower($codeSession->code) != strto lower($this->_params['code'])) { $this- >出力(エラー); }
PS

Zend のキャプチャは、基本的な検証コード アクションをカプセル化します。簡単な認証コードを生成する場合は基本的に内部コードを見る必要はありませんが、認証コードの表示テキストを変更するなど、認証コードに対してより高度な操作を行う必要がある場合は、内部コードを参照することをお勧めします。 Captcha のソースコード。




http://www.bkjia.com/PHPjc/326861.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/326861.html

技術記事

検証コード画像を生成するにはどうすればよいですか? PHPを使ったGD?はい、そうです。実際、Zend の Captcha モジュールはパッケージ化されています。この記事では、Zend の Captcha モジュールの使用方法について説明します。 環境のインストール...



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。