thinkphp3.2点击刷新生成验证码,thinkphp3.2验证码
thinkphp3.2点击刷新生成验证码,thinkphp3.2验证码
再介绍thinkphp3.2验证码的使用方法之前,先为大家详细介绍ThinkPHP 验证码,具体内容如下
ThinkPHP 内置了验证码的支持,可以直接使用。要使用验证码,需要导入扩展类库中的 ORG.Util.Image 类库和 ORG.Util.String 类库。
验证码方法
我们通过在在模块类中增加一个 verify 方法来用于显示验证码,最简单的例子:
Public function verify(){ // 导入Image类库 import("ORG.Util.Image"); Image::buildImageVerify(); }
import 方法是 ThinkPHP 内置的类库和文件导入方法,上例导入的文件为 ThinkPHP 系统目录下 Lib/ORG/Util/Image.class.php 文件。如果已经将 Image 类库拷贝到了当前项目下,如 Lib/ORG 下,则可以以:
import("@.Util.Image");
import 方法是 ThinkPHP 内置的类库和文件导入方法,上例导入的文件为 ThinkPHP 系统目录下 Lib/ORG/Util/Image.class.php 文件。
访问验证码
可以直接在浏览器里访问该验证码方法以确定验证码是否能正常显示:
http://127.0.0.1/index.php/Public/verify
如果一切正常,显示验证码如下所示:
表单中使用验证码
在表单页面中使用验证码,是以 html img标签 来调用:
<input type="text" name="verify"> <img src="/static/imghw/default1.png" data-src="-Article-verify" class="lazy" id="verifyImg" onClick="changeVerify()" title="点击刷新验证码" / alt="thinkphp3.2点击刷新生成验证码,thinkphp3.2验证码" >
src 属性值即为验证码方法访问地址,视实际情况不同而不同。
验证码刷新
当点击验证码图片时,触发 JavaScript changeVerify() 函数重新读取验证码,从而实现验证码刷新。该函数参考如下:
<script language="JavaScript"> function changeVerify(){ var timenow = new Date().getTime(); document.getElementById('verifyImg').src='-Article/verify/'+timenow; } </script>
验证码验证
在调用验证码 verify 的时候,buildImageVerify 会记录本次验证码的 MD5 信息。在表单验证操作里,以如下方法来检查验证码是否正确:
if($_SESSION['verify'] != md5($_POST['verify'])) { $this->error('验证码错误!'); }
其中 $_SESSION['verify'] 中的 verify 名称为 buildImageVerify 方法默认 SESSION 注册名称,具体见 buildImageVerify 语法。
上面例子演示了最简单的 ThinkPHP 验证码的使用方法。上面的例子验证码是 4 位数字,如果想使用更多风格的验证码以及中文验证码,参见本节其余部分内容:《ThinkPHP 使用不同风格及中文的验证码》。
验证码不显示原因
如下发现无法显示验证码,可能的原因如下:
1、PHP 是否已经安装 GD 库支持。
2、输出之前是否有任何的输出(尤其是 UTF8 的 BOM 头信息输出)。
3、Image 类库是否正确导入。
4、如果是表单页面,请查看是否正确调用了验证码显示方法。
下面就为大家介绍 thinkphp3.2 验证码生成和点击刷新验证码的实现方法,具体内容如下
一、实例化生成验证码的类(该方法放到IndexController里面便于访问)
/** * * 验证码生成 */ public function verify_c(){ $Verify = new \Think\Verify(); $Verify->fontSize = 18; $Verify->length = 4; $Verify->useNoise = false; $Verify->codeSet = '0123456789'; $Verify->imageW = 130; $Verify->imageH = 50; //$Verify->expire = 600; $Verify->entry(); }
二、前台需要生成验证码的图片src属性指向
<p class="top15 captcha" id="captcha-container"> <input name="verify" width="50%" height="50" class="captcha-text" placeholder="验证码" type="text"> <img class="left15 lazy" src="/static/imghw/default1.png" data-src="{:U('Home/Index/verify_c',array())}" style="max-width:90%" style="max-width:90%" alt="验证码"Home/Index/verify_c',array())}" title="点击刷新"> </p>
三、写完上面的后,页面初始化的验证码就可以出现了,下面要写的就是点击验证码图片后,刷新出新的验证码图片(通过jquery修改图片的src属性来完成,请求的处理函数一样,只是在请求后加一个随机数,区别上一张图片的请求)
// 验证码生成 var captcha_img = $('#captcha-container').find('img') var verifyimg = captcha_img.attr("src"); captcha_img.attr('title', '点击刷新'); captcha_img.click(function(){ if( verifyimg.indexOf('?')>0){ $(this).attr("src", verifyimg+'&random='+Math.random()); }else{ $(this).attr("src", verifyimg.replace(/\?.*$/,'')+'?'+Math.random()); } });
四、校验验证码输入是否正确
a.在common目录下的function.php里加入全局函数
/** * 验证码检查 */ function check_verify($code, $id = ""){ $verify = new \Think\Verify(); return $verify->check($code, $id); }
b.在表单提交的controller对应的处理方法里添加检查代码
// 检查验证码 $verify = I('param.verify',''); if(!check_verify($verify)){ $this->error("亲,验证码输错了哦!",$this->site_url,9); }
到此tp3.2验证码的使用就可以了。
补充:我在写的时候将四的b步骤放到一个ajax里验证,返回一次检验结果。然后再依据返回结果确定是否要提交表单,但是在验证码通过第一次的校验后,第二次的就不可以了,目前还没想明白原因。
这就是本文的全部内容,文章最后还有一个小小的疑问,希望大家可以想出解决办法,也希望本文对大家的学习有所帮助。
您可能感兴趣的文章:
- ThinkPHP验证码使用简明教程
- thinkphp验证码显示不出来的解决方法
- ThinkPHP验证码和分页实例教程
- ThinkPHP实现带验证码的文件上传功能实例
- 完美解决thinkphp验证码出错无法显示的方法
- ThinkPHP打开验证码页面显示乱码的解决方法
- thinkPHP中验证码的简单使用方法

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Google Chrome で認証コードの画像が表示されない場合はどうすればよいですか? Google Chrome を使用して Web ページにログインするために確認コードが必要になる場合があります。一部のユーザーは、画像検証コードを使用すると、Google Chrome で画像のコンテンツが適切に表示されないことに気づきます。何をすべきでしょうか? Google Chromeの認証コードが表示されない場合の対処法を以下のエディターでご紹介しますので、皆様のお役に立てれば幸いです!方法の紹介: 1. ソフトウェアに入り、右上隅の「詳細」ボタンをクリックし、下のオプションリストで「設定」を選択してに入ります。 2. 新しいインターフェースに入ったら、左側の「プライバシー設定とセキュリティ」オプションをクリックします。 3. 次に、右側の「Web サイト設定」をクリックします。

ThinkPHP プロジェクトを実行するには、Composer をインストールし、Composer を使用してプロジェクトを作成し、プロジェクト ディレクトリに入り、php bin/consoleserve を実行し、http://localhost:8000 にアクセスしてようこそページを表示する必要があります。

ThinkPHP には、さまざまな PHP バージョン向けに設計された複数のバージョンがあります。メジャー バージョンには 3.2、5.0、5.1、および 6.0 が含まれますが、マイナー バージョンはバグを修正し、新機能を提供するために使用されます。最新の安定バージョンは ThinkPHP 6.0.16 です。バージョンを選択するときは、PHP バージョン、機能要件、コミュニティ サポートを考慮してください。最高のパフォーマンスとサポートを得るには、最新の安定バージョンを使用することをお勧めします。

ThinkPHP フレームワークをローカルで実行する手順: ThinkPHP フレームワークをローカル ディレクトリにダウンロードして解凍します。 ThinkPHP ルート ディレクトリを指す仮想ホスト (オプション) を作成します。データベース接続パラメータを構成します。 Webサーバーを起動します。 ThinkPHP アプリケーションを初期化します。 ThinkPHP アプリケーションの URL にアクセスして実行します。

仮想番号は認証コードを受け取ることができ、登録時に入力した携帯電話番号が規定を満たしており、携帯電話番号が正常に接続できる限り、SMS認証コードを受け取ることができます。ただし、仮想携帯電話番号の利用には注意が必要で、Webサイトによっては仮想携帯電話番号の登録に対応していない場合があるため、正規の仮想携帯電話番号サービスプロバイダーを選択する必要があります。

「開発に関する提案: ThinkPHP フレームワークを使用して非同期タスクを実装する方法」 インターネット技術の急速な発展に伴い、Web アプリケーションには、多数の同時リクエストと複雑なビジネス ロジックを処理するための要件がますます高まっています。システムのパフォーマンスとユーザー エクスペリエンスを向上させるために、開発者は多くの場合、電子メールの送信、ファイルのアップロードの処理、レポートの生成など、時間のかかる操作を実行するために非同期タスクの使用を検討します。 PHP の分野では、人気のある開発フレームワークとして ThinkPHP フレームワークが、非同期タスクを実装するための便利な方法をいくつか提供しています。

Laravel フレームワークと ThinkPHP フレームワークのパフォーマンスの比較: ThinkPHP は、最適化とキャッシュに重点を置いて、一般に Laravel よりもパフォーマンスが優れています。 Laravel は優れたパフォーマンスを発揮しますが、複雑なアプリケーションの場合は、ThinkPHP の方が適している可能性があります。

ThinkPHP のインストール手順: PHP、Composer、および MySQL 環境を準備します。 Composer を使用してプロジェクトを作成します。 ThinkPHP フレームワークと依存関係をインストールします。データベース接続を構成します。アプリケーションコードを生成します。アプリケーションを起動し、http://localhost:8000 にアクセスします。
