ホームページ  >  記事  >  バックエンド開発  >  thinkphp3.2 [更新] をクリックして検証コードを生成する

thinkphp3.2 [更新] をクリックして検証コードを生成する

高洛峰
高洛峰オリジナル
2017-02-03 17:53:351495ブラウズ

thinkphp3.2検証コードの使い方を紹介する前に、まずThinkPHP検証コードを詳しく紹介します

ThinkPHPには検証コードサポートが組み込まれており、直接使用できます。検証コードを使用するには、拡張クラス ライブラリに ORG.Util.Image クラス ライブラリと ORG.Util.String クラス ライブラリをインポートする必要があります。
検証コードメソッド
検証コードを表示するためにモジュールクラスにverifyメソッドを追加します。 最も単純な例:

Public function verify(){
  // 导入Image类库
  import("ORG.Util.Image");
  Image::buildImageVerify();
}

インポートメソッドは、上記でインポートされたThinkPHPの組み込みクラスライブラリとファイルインポートメソッドです。例 このファイルは、ThinkPHP システム ディレクトリにある Lib/ORG/Util/Image.class.php ファイルです。 Image クラス ライブラリが Lib/ORG などの現在のプロジェクトにコピーされている場合は、以下を使用できます。

import("@.Util.Image");

インポート メソッドは、ThinkPHP の組み込みクラス ライブラリとファイル インポート メソッドです。上記の例でインポートされたファイルは、次のとおりです。これは、ThinkPHP システム ディレクトリの Lib/ORG/Util/Image.class.php ファイルにあります。
認証コードにアクセスする
ブラウザで認証コードメソッドに直接アクセスして、認証コードが正常に表示できるかどうかを確認できます:
http://127.0.0.1/index.php/Public/verify
すべてが正常であれば、検証コードは次のように表示されます。 表示:

thinkphp3.2 [更新] をクリックして検証コードを生成する

フォームで検証コードを使用する
フォームページで検証コードを使用する場合は、HTML img タグで呼び出されます:

<input type="text" name="verify">
<img  id="verifyImg" src="-Article-verify" onClick="changeVerify()" title="点击刷新验证码" / alt="thinkphp3.2 [更新] をクリックして検証コードを生成する" >

src 属性値は検証コードのメソッドですアクセスアドレスは実際の状況によって異なります。
検証コードの更新
検証コードの画像をクリックすると、JavaScriptのchangeVerify()関数がトリガーされて検証コードを再読み込みし、それによって検証コードが更新されます。この関数のリファレンスは以下の通りです:

<script language="JavaScript">
function changeVerify(){
 var timenow = new Date().getTime();
 document.getElementById(&#39;verifyImg&#39;).src=&#39;-Article/verify/&#39;+timenow;
}
</script>

検証コード検証
検証コードverifyを呼び出すと、buildImageVerifyはこの検証コードのMD5情報を記録します。フォーム検証操作では、次のメソッドを使用して検証コードが正しいかどうかを確認します。

if($_SESSION[&#39;verify&#39;] != md5($_POST[&#39;verify&#39;])) {
  $this->error(&#39;验证码错误!&#39;);
}

$_SESSION['verify'] の検証名は、buildImageVerify メソッドのデフォルトの SESSION 登録名です。 詳細については、を参照してください。 buildImageVerify 構文。
上記の例は、ThinkPHP 検証コードを使用する最も簡単な方法を示しています。上記の例の検証コードは 4 桁です。他の形式の検証コードや中国語の検証コードを使用したい場合は、このセクションの残りの部分「ThinkPHP はさまざまな形式と中国語の検証コードを使用する」を参照してください。
認証コードが表示されない原因
以下のような原因が考えられます。
1. PHPにGDライブラリサポートがインストールされているかどうか。
2. 出力前に何か出力があるか(特にUTF8のBOMヘッダー情報の出力)。
3. Image クラス ライブラリが正しくインポートされているかどうか。
4. フォームページの場合は、認証コード表示メソッドが正しく呼び出されているか確認してください。

以下にthinkphp3.2の検証コード生成と更新検証コードの実装方法を紹介します

1.検証コードを生成するクラスをインスタンス化します(このメソッドはIndexControllerに配置します)。 easy access)

/**
 *
 * 验证码生成
 */
public function verify_c(){
  $Verify = new \Think\Verify();
  $Verify->fontSize = 18;
  $Verify->length  = 4;
  $Verify->useNoise = false;
  $Verify->codeSet = &#39;0123456789&#39;;
  $Verify->imageW = 130;
  $Verify->imageH = 50;
  //$Verify->expire = 600;
  $Verify->entry();
}

2. フロントデスクが検証コードを生成するために必要な画像の src 属性は

<p class="top15 captcha" id="captcha-container">
 <input name="verify" width="50%" height="50" class="captcha-text" placeholder="验证码" type="text">        
 <img width="30%" class="left15"    style="max-width:90%" alt="验证码" src="{:U(&#39;Home/Index/verify_c&#39;,array())}" title="点击刷新">
</p>

3. 上記を記述すると、ページ初期化用の検証コードが表示されます。以下に記載されているのは、新しい認証コード画像をクリックして更新することです。認証コード画像(画像の src 属性を jquery で変更することで完成します。リクエストの後に乱数が追加されることを除いて、リクエスト処理機能は同じです)。前の画像のリクエストと区別するため)

// 验证码生成
var captcha_img = $(&#39;#captcha-container&#39;).find(&#39;img&#39;)
var verifyimg = captcha_img.attr("src");
captcha_img.attr(&#39;title&#39;, &#39;点击刷新&#39;);
captcha_img.click(function(){
  if( verifyimg.indexOf(&#39;?&#39;)>0){
    $(this).attr("src", verifyimg+&#39;&random=&#39;+Math.random());
  }else{
    $(this).attr("src", verifyimg.replace(/\?.*$/,&#39;&#39;)+&#39;?&#39;+Math.random());
  }
});

4. 検証コードの入力が正しいか確認します

a. グローバル関数

/**
 * 验证码检查
 */
function check_verify($code, $id = ""){
  $verify = new \Think\Verify();
  return $verify->check($code, $id);
}

を追加します b. コントローラーに対応する処理メソッドにチェックコードを追加しますフォーム送信の

// 检查验证码
$verify = I(&#39;param.verify&#39;,&#39;&#39;);
if(!check_verify($verify)){
  $this->error("亲,验证码输错了哦!",$this->site_url,9);
}

をこの tp3.2 確認コードに入力するだけです。

補足: 書いているときに、検証用に4番目のステップbをajaxに入れてテスト結果を返しました。その後、返された結果に基づいてフォームを送信するかどうかを決定しますが、検証コードが最初の検証に合格した後、2 回目の検証が機能しません。

これがこの記事の全内容です。記事の最後に小さな質問があります。この記事があなたの学習に役立つことを願っています。

thinkphp3.2 に関連するその他の記事については、更新をクリックして検証コードを生成し、PHP 中国語 Web サイトに注目してください。

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