Thinkphp中内置了验证的支持,可以直接使用。要使用验证码,需要导入扩展类库的ORG.Util.Image类库和ORG.Util.Sting 类库。
验证码方法:
我们可以在模块类中增加一个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 id="verifyImg" src="-Article-verify" onClick="changeVerify()" title="点击刷新验证码" />
src属性即为验证码访问地址 , 视实际情况不同而不同
验证码刷新
当点击验证码图片时,触发javascrip changeVerify()函数重新读取验证码,从而实现验证码刷新。该函数如下:
<script language="JavaScript">
function changeVerify(){
var timenow = new Date().getTimee();
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 语法。
验证码不显示原因
如下发现无法显示验证码,可能的原因如下:
- PHP 是否已经安装 GD 库支持.
- 输出之前是否有任何的输出(尤其是 UTF8 的 BOM 头信息输出)。
- Image 类库是否正确导入。
- 如果是表单页面,请查看是否正确调用了验证码显示方法。