一、验证码
composer require topthink/think-captcha=2.0.*
验证码配置:
public function verify()
{
ob_clean();
$captcha = new Captcha();
$captcha->fonSize= 30;
$captcha->length=2;
$captcha->useCurve=false;
$captcha->useNoise=false;
return $captcha->entry();
}二、发送表单
前端html自行构建,ajax发送数据
$.post('{:url("Login/login")}',{username:username,password:password,code:code},function(data){
if(data.status == 1){
layer.alert(data.info, {
title: '提示框',
icon: 1,
},function(){
location.href = "{:url('Index/index')}";
});
// layer.close(index);
}else{
layer.alert(data.info, {
title: '提示框',
icon: 0,
});
layer.close(index);
}
},'json')三、后端接收验证
public function login()
{
$code = input('post.code');
$username = input('post.username');
$password = input('post.password');
if(empty($code) || empty($username) || empty($password)){
return json(array('status'=>0,'info'=>'参数不正确'));
}
$captcha = new Captcha();
if(!$captcha->check($code)){
return json(array('status'=>0,'info'=>'验证码错误'));
}
try {
// 根据用户名查找用户的数据
$admin_one = $this->table->getOne(array('username'=>$username));
if(!empty($admin_one) && $admin_one['password'] == md5(md5($password).$admin_one['salt'])){
session('uid',$admin_one['admin_id']);
session('username',$admin_one['username']);
session('login_time',date('Y-m-d H:i:s',time()));
session('login_ip',get_client_ip());
// 更新登录信息
$data = array(
'login_time'=>time(),
'login_ip'=>get_client_ip()
);
$this->table->saveData(array('admin_id'=>$admin_one['admin_id']),$data);
return json(array('status'=>1,'info'=>'登录成功'));
}else{
return json(array('status'=>0,'info'=>'账号密码错误'));
}
}catch(Exception $e){
return json(array('status'=>0,'info'=>$e->getMessage()));
}
}