ThinkPHP3.2.3検証コード表示、リフレッシュ、検証
11160 ワード
認証コードの表示
まず、Home/Clontrollerの下に共通コントローラPublicControllerを作成します.
ThinkphpのUメソッドを用いて検証コードを生成するピクチャを形成する.
この認証コードで正常に表示されます.
検証コードの更新をクリック
上に検証コードを生成するリンクから、ドメイン名/public/verifyが検証コードを生成できることがわかります.Thinkphpの認証コード生成メカニズムは,新しい認証コードを生成する必要がある場合には,そのリンクの後に変数値を1つ追加すればよい.
public/verify/変数値を実現する形式URLを考えることができる.
JSを利用して現在のタイムスタンプを取得してURLに追加すればよい.
これにより,検証コードのクリックリフレッシュ機能を実現できる.具体的な表現形式は、自分で勝手にしますね.
非同期検証コード
皆さんはきっといくつかのウェブサイトで見たことがあります.私たちが検証コードを入力するとき、入力中にテキストボックスの後ろにエラーが表示され、私たちが入力したときに検証コードの正しい形式を提示するまで.次のコードが実装されます.
onekeyupを利用します.原理はもう言う必要はないでしょう.
これにより、ユーザー名パスワードを提出する前に認証コードの検証を一度行い、フォームの提出後にもう一度検証を行い、ユーザー体験を向上させることができます.
まだ終わっていません:
以上の形式で検証コードの2回の検証を実現すると、最初の非同期検証に成功するに違いありませんが、フォームを提出して検証コードが間違っていることを示します.その理由はThinkphpのVerifyですclass.php上:
以下は、クラスの初期config構成です.
最後のプロパティresetは、検証に成功した後に検証コードをリセットするかどうかを示していることに注意してください.皆さんご存知のように、私たちが最初の検査に合格した後、実はこの検証コードはすでに失効しました.ただ、私たちが非同期検査を取ったため、ページがリフレッシュされていません.2回目の検査申請の時とシステムが変わっただけです.だから、この2回のチェックのスタイルが好きなら、resetをfalseに設定すればいいと考えてみてください.
Thinkphp 3に基づいて2.3の検証コードの問題は今日ここまでまとめました.実装方法を大まかに説明しただけで、具体的な内容はTP公式マニュアルを参照してください.間違いがあれば、皆さんの指摘を歓迎します.
まず、Home/Clontrollerの下に共通コントローラPublicControllerを作成します.
1 <?php
2 namespace Home\Controller;
3
4 use Think\Controller;
5 use Think\Verify;
6
7 class PublicController extends Controller
8 {
9
10 /* */
11 public function verify()
12 {
13 $config = [
14 'fontSize' => 19, //
15 'length' => 4, //
16 'imageH' => 34
17 ];
18 $Verify = new Verify($config);
19 $Verify->entry();
20 }
21
22 /* */
23 public function check_verify($code, $id = '')
24 {
25 $verify = new \Think\Verify();
26 $res = $verify->check($code, $id);
27 $this->ajaxReturn($res, 'json');
28 }
29 }
verify ,config 。 , Thinkphp/Library/Think/Verify.class.php , 。
check_verify 。 post , $res==true false 。
index.html
1 <div class="">
2 <label for="j_verify" class="t"> :</label> <input id="j_verify"
3 name="j_verify" type="text" class="form-control x164 in">
4 <img id="verify_img" alt=" " title=" "
5 src="{:U('public/verify',array())}" class="m">
6 </div>
ThinkphpのUメソッドを用いて検証コードを生成するピクチャを形成する.
この認証コードで正常に表示されます.
検証コードの更新をクリック
上に検証コードを生成するリンクから、ドメイン名/public/verifyが検証コードを生成できることがわかります.Thinkphpの認証コード生成メカニズムは,新しい認証コードを生成する必要がある場合には,そのリンクの後に変数値を1つ追加すればよい.
public/verify/変数値を実現する形式URLを考えることができる.
1 $("#verify_img").click(function() {
2 var verifyURL = "public/verify";
3 var time = new Date().getTime();
4 $("#verify_img").attr({
5 "src" : verifyURL + "/" + time
6 });
7 });
JSを利用して現在のタイムスタンプを取得してURLに追加すればよい.
これにより,検証コードのクリックリフレッシュ機能を実現できる.具体的な表現形式は、自分で勝手にしますね.
非同期検証コード
皆さんはきっといくつかのウェブサイトで見たことがあります.私たちが検証コードを入力するとき、入力中にテキストボックスの後ろにエラーが表示され、私たちが入力したときに検証コードの正しい形式を提示するまで.次のコードが実装されます.
1 $("#j_verify").keyup(function() {
2 $.post("public/check_verify", {
3 code : $("#j_verify").val()
4 }, function(data) {
5 if (data == true) {
6 //
7 } else {
8 //
9 }
10 });
11 });
onekeyupを利用します.原理はもう言う必要はないでしょう.
これにより、ユーザー名パスワードを提出する前に認証コードの検証を一度行い、フォームの提出後にもう一度検証を行い、ユーザー体験を向上させることができます.
まだ終わっていません:
以上の形式で検証コードの2回の検証を実現すると、最初の非同期検証に成功するに違いありませんが、フォームを提出して検証コードが間違っていることを示します.その理由はThinkphpのVerifyですclass.php上:
以下は、クラスの初期config構成です.
protected $config = array(
'seKey' => 'ThinkPHP.CN', //
'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY', //
'expire' => 1800, // (s)
'useZh' => false, //
'zhSet' => '…… , !', //
'useImgBg' => false, //
'fontSize' => 25, // (px)
'useCurve' => false, //
'useNoise' => false, //
'imageH' => 0, //
'imageW' => 0, //
'length' => 5, //
'fontttf' => '', // ,
'bg' => array(243, 251, 254), //
'reset' => true, //
);
最後のプロパティresetは、検証に成功した後に検証コードをリセットするかどうかを示していることに注意してください.皆さんご存知のように、私たちが最初の検査に合格した後、実はこの検証コードはすでに失効しました.ただ、私たちが非同期検査を取ったため、ページがリフレッシュされていません.2回目の検査申請の時とシステムが変わっただけです.だから、この2回のチェックのスタイルが好きなら、resetをfalseに設定すればいいと考えてみてください.
Thinkphp 3に基づいて2.3の検証コードの問題は今日ここまでまとめました.実装方法を大まかに説明しただけで、具体的な内容はTP公式マニュアルを参照してください.間違いがあれば、皆さんの指摘を歓迎します.