検証コード画像を生成するには? 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
true
http://www.bkjia.com/PHPjc/326861.html
技術記事
検証コード画像を生成するにはどうすればよいですか? PHPを使ったGD?はい、そうです。実際、Zend の Captcha モジュールはパッケージ化されています。この記事では、Zend の Captcha モジュールの使用方法について説明します。 環境のインストール...