Fork me on GitHub

ThinkPHP验证码

对于ThinkPHP验证码的使用:

分三个步骤,验证码的生成,验证码的呈现,验证码的验证;

  1. 验证码的呈现,需要前台img标签来放置验证码:
    1
    2
    3
    4
    5
    6
    7
    <div class="control-group">
    <label class="control-label" for="inputPassword">验证码</label>
    <div class="controls">
    <input class="code" name="verify" type="text" size="5" />
    <span><img id="verifyImg" SRC="__URL__/verify/" onClick="fleshVerify()" border="0" alt="点击刷新验证码" style="cursor:pointer" align="absmiddle"></span>
    </div>
    </div>

然后需要做一些验证码刷新的js操作;或者什么的

1
2
3
4
5
6
7
8
9
10
11
12
<script language="JavaScript">
$("#verifyImg").click(function(){fleshVerify();});
function fleshVerify(type){
//重载验证码
var timenow = new Date().getTime();
if (type){
$('#verifyImg').attr("src", '__URL__/verify/adv/1/'+timenow);
}else{
$('#verifyImg').attr("src", '__URL__/verify/'+timenow);
}
}
</script>

  1. 验证码的生成,这里是后台验证码生成情况,前台需要请求这个操作才能生成验证码:

    1
    2
    3
    4
    5
    public function verify(){
    $type = isset($_GET['type'])?$_GET['type']:'gif';
    import("ORG.Util.Image");
    Image::buildImageVerify(4,1,$type);
    }
  2. 最后是后台的验证码验证:

    1
    2
    3
    4
    5
    6
    7
    private function checkverify(){
    $cv = md5(trim($this->_param('verify'))); // 表单提交 需要md5,因为生成的验证码就是这样的
    $sv = session('verify'); // 真正的验证码
    if($cv != $sv){
    $this->error("验证码错误!");exit;
    }
    }

参考网站:http://www.cleey.com/blog/single/id/336.html