您的位置:首页 > 编程语言 > PHP开发

thinkphp 3.2 实现登录功能+验证码

2015-11-28 20:56 806 查看
[code]<?php

namespace Model;

use Think\Model;

class UserModel extends Model {

    function checkNamePwd($mg_name, $mg_password) {
        //实例化模型User
        $user = M("User");
        //接收控制器传的数据,进行判断是否一致。并且返回
        $info = $user->getBy_mgname($mg_name);
        //如果name属性数据存在则进行判断对应的密码是否一致,同时返回。
        if ($info != null) {
            //验证密码
            if ($info['mg_password'] == $mg_password) {
                return $info;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }

}

?>


[code]<?php

//命名空间

namespace Home\Controller;

use Think\Controller;

class UserController extends Controller {

    //登录
    function login() {
        if (!empty($_POST)) {

            //校验验证码
            //实例化thinkphp3.2 框架的Verify 类,并且进行判断。

            $verify = new \Think\Verify();
            if (!$verify->check($_POST['captcha'])) {
                // 检查验证码
                // I('id',0); 获取id参数 自动判断get或者post I('post.name','','htmlspecialchars');
                //  获取$_POST['name'] I('get.'); 获取$_GET  
                $verify = I('param.verify', '');
                if (!check_verify($verify)) {
                    $this->error("亲,验证码输错了哦!", $this->site_url, 1);
                }
            } else {
                //实例化Model
                $user = new \Model\UserModel();
                $rst = $user->checkNamePwd($_POST["mg_name"], $_POST["mg_password"]);
                //  == 全等于
                if ($rst === false) {
                    echo '用户名或密码错误';
                } else {
                    session("mg_name", $rst['mg_name']);

                    session("mg_id", $rst['mg_id']);
                    //跳转页面, 在控制器里面直接使用redirect() 方法跳转
                    $this->redirect('Index/index', 0);
                }
            }
        }
        $this->display();
    }

    //退出系统
    function loginout() {
        session(null);
        $this->redirect('User/login', 0);
    }

//创建验证码
    function verifyImg() {
//设置验证码的样式
        $config = array(
            'imageH' => 25, // 验证码图片高度
            'imageW' => 120, // 验证码图片宽度
            'fontttf' => '4.ttf', // 验证码字体,不设置随机获取
            'length' => 4, //验证码长度
            'fontSize' => 14, // 验证码字体大小(px)
        );
        $verify = new \Think\Verify($config);
//创建验证
        $verify->entry();
    }

    //“空操作”此方法用来友情提示!
    function _empty($param) {
        echo '对不起,此方法不存在!';
    }

}

?>


[code] <script type="text/javascript"  >
            /*获取captcha_img 的图片*/
            var captcha_img = $('.user_main_input').find('img');
            //return  captcha_img的src 
            var verifyimg = captcha_img.attr("src");
            captcha_img.attr('title', '点击刷新');
            //点击事件
            captcha_img.click(function() {
                if (verifyimg.indexOf('?') > 0) {

                    //&random= 拼接验证码图片
                    $(this).attr("src", verifyimg + '&random=' + Math.random());
                } else {
                    $(this).attr("src", verifyimg.replace(/\?.*$/, '') + '?' + Math.random());
                }
            });
        </script>


[code]<?php

Common文件下面的function.php (新建)
/**
 * 验证码检查  
 * 加入全局函数
 */
function check_verify($code, $id = "") {
    $verify = new \Think\Verify();
    return $verify->check($code, $id);
}
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: