1、前端部分(form表单执行登录按钮类型需要使用button类型,否则submit会重复提交刷新.)
<form method="post" class="login-form" >
<div id="itemBox" class="item-box">
<div class="item">
<i class="icon-login-user"></i>
<input type="text" name="username" placeholder="请填写账号" autocomplete="off" />
</div>
<span class="placeholder_copy placeholder_un">请填写账号</span>
<div class="item b0">
<i class="icon-login-pwd"></i>
<input type="password" name="password" placeholder="请填写密码" autocomplete="off" />
</div>
<span class="placeholder_copy placeholder_pwd">请填写密码</span>
<div class="item verifycode">
<i class="icon-login-verifycode"></i>
<input type="text" name="code" placeholder="请填写验证码" autocomplete="off">
</div>
<span class="placeholder_copy placeholder_check">请填写验证码</span>
<div>
<img class="verifyimg reloadverify" onclick="reload_verify('verifyimg')" alt="点击切换" src="{:captcha_src()}">
</div>
</div>
<div class="login_btn_panel">
<button class="login-btn" type="button">
<span class="in"><i class="icon-loading"></i>登 录 中 ...</span>
<span class="on">登 录</span>
</button>
<div class="check-tips"></div>
</div>
</form>
2、js-ajax部分代码:
$(".login-btn").click(function(){
var data = $(".login-form").serialize();//form表单传递参数要进行序列化操作
$ajax({
url:"{:url('login/doLogin')}",//url地址声明控制器和方法名称
type:'post',
data:data,
dataType:'json',
success:funciton(data) {
if(data.statues = =1) {
layer.msg(data.msg,{icon:data.statues, time: 2000}, funciton() {
window.location.href="/index.php/admin/Index/index";
});
}esle{
alert(data.msg);
window.location.reload();
}
}
});
})
3,控制器部分代码
public function doLogin() {
//验证是否恶意登录
if (!$this->request->isPost()) {
$this->error('非法登录!');
}
$param = $this->request->param();
//密码md5双重加密
$param['password'] = md5(sha1($param['password']));
//通过用户名和加密处理的密码去查询指定的数据库数据
$info_result = $authAdminModel->getInfo(['username' => $param['username']], 'id,username,nick_name,password,store_id,loginip,logintime,loginnumber,state');
if ($info_result['code'] !== 200) {
Db::rollback();
return json(["status"=>0,"msg"=>"查找用户错误"]);
}
if ($info_result['data']['info']['password'] !== $param['password']) {
Db::rollback();
return json(["status"=>0,"msg"=>"用户名或密码输入错误,请重新输入"]);
}
$user = $info_result['data']['info'];
// 设置session
Session::set('uid', $user['id']);
Session::set('uname', $user['username']);
Session::set('sid', $user['store_id']);
Session::set('loginip', $user['loginip']);
Session::set('logintime', $user['logintime']);
$update_result = $authAdminModel->updateInfo(
['username' => $param['username']],
[
'loginnumber' => $user['loginnumber'] + 1,
'logintime' => time(),
'loginip' => $this->request->ip()
]
);
if ($update_result['code'] !== 200) {
Db::rollback();
return json(["status"=>0,"msg"=>"登录失败"]);
}else {
Db::commit();
return json(["status"=>1,"msg"=>"登录成功"]);
}
return;
}
我想步入php后台管理的第一步,应该大部分的人都是会从登录注册做起.很多的时候我对于如何实现需求很明白,就是不知道怎么写代码,还是没有足够的积累量.今天是第一次发表文章.仅此纪念,2019-09-29.
如果有任何技术错误和问题,请大神们积极指正.