|
目的:实现登陆验证
b_user表
uid | username | password | status | tokenid | 用户编号 | 用户名 | 密码 | 状态 | 令牌 |
第一步:编写验证的存储过程
SQL复制代码 delimiter //
CREATE PROCEDURE p_base_loginvalid(IN name VARCHAR(20),IN pwd VARCHAR(64 ),OUT LoginCode INT )
BEGIN
DECLARE num INT DEFAULT 0;
DECLARE Tpwd VARCHAR(64);
DECLARE enable enum('active','inactive' );
SET LoginCode = 0;//登陆成功
SELECT COUNT(*), password,STATUS INTO num,Tpwd ,enable FROM b_user WHERE username = name LIMIT 1;
IF num <> 1 THEN
SET LoginCode = 1; //该用户不存在
END IF;
IF STRCMP(pwd,Tpwd) <> 0 THEN
SET LoginCode = 2; //密码错误
END IF;
IF STRCMP(enable,'active' ) <> 0 THEN
SET LoginCode = 3; //用户被禁用
END IF;
END //
delimiter ; 复制代码
第二步:在model里面调用该存储过程
PHP复制代码 function verifyuser ($u,$p)
{
/*
方法名:verfyuser 调用数据库存储过程p_base_loginvalid进行身份用户确认
参数说明
输入参数列表:
$u 用户名 字符串类型
$p 密码 字符串类型
返回值 boolean true,验证通过
修改记录:
*/
if(empty($u)||empty($p))
{
$this->session->set_flashdata('error', '用户名或者密码不能为空!');
return false;
}
else
{
$pwd = dohash ($p);
$sql = "call p_base_loginvalid('$u','$pwd',@code)";
$this->db->query($sql);
$result = $this->db->query("select @code as code");
$logincode = $result->row();
$code = $logincode->code;
if($code) return true;
if($code == 1)
{
$this->session->set_flashdata('error', '用户名不存在!');
return false;
}
if($code == 2)
{
$this->session->set_flashdata('error', '密码错误!');
return false;
}
if($code == 3)
{
$this->session->set_flashdata('error', '用户已被禁用!');
return false;
}
}
} 复制代码 |
|