如何运用tp框架编写网站的无刷新登入
为了方便,我们可以重新建立一个名为LoginController.class.php的控制器;其内容如下:
<?php
namespace Admin\Controller;//设置命名空间
use Think\Controller;
class LoginController extends Controller{
public function index(){
//这是登入成功后跳转的界面,需要模板渲染,然后调用
$this->display();
//渲染模板
}
public function login(){
$this->display();
//登入界面的
}
public function logindo(){//这个是登陆界面ajax提交的处理方法,
$username=$_POST['username'];
$password=I('post.password','');
$verify=$_POST['verify'];
$verif = new \Think\Verify();
//实例化tp框架里面的关于验证码验证的方法,
$data=array();//初始化数组
if(empty($username)||empty($password)||empty($verify)){
//二验证次前台提交过来的数据,保证安全
$data=array(
'status'=>1,
'msg'=>"信息不全"
);
}else{
if($verif->check($verify)){
//括号中是调用tp方法验证验证码是否正确,正确返回true,错误false,在正确是情况下才能进一步验证前台的用户名和密码是否正确
$inf=M("manager")->where(array('username'=>$username,'password'=>$password))->find();
if(!$inf){
$data['status']=2;
$data["msg"]='用户名或密码错误';
}else{
$data['status']=3;
$_SESSION["mamagername"]=$inf['username'];
//设置session的值,为后台操作的前提,如果没有session,则先登入
$_SESSION["id"]=$inf['uid'];
$_SESSION['a_time'] = $inf['time'];
M('manager')->where('uid=' . $inf['uid'])->save(array('time' => time()));
//把这次登入的时间戳保存到数据库中
}
}else{
$data["msg"]="验证码错误";
}
}
$this->ajaxReturn($data);
}
public function loginout(){
session_destroy();
$this->redirect('Login/login');
}
public function verify(){
//创建一个产生验证码的方法;
$config = array( 'fontSize' => 70,
// 验证码字体大小
'length' => 3,
// 验证码位数
'useNoise' => false,
// 关闭验证码杂点
);
$Verify = new \Think\Verify($config);
$Verify->entry();
}
}
?>
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="__PUBLIC__/Admin/css/login.css">
<script type="text/javascript" src="__PUBLIC__/Admin/js/jquery.js"></script>
<script>
$(function(){
$("#sub_btn").click(function(){
var username=$("#username").val();
var password=$("#password").val();
var verify=$("#verify").val();
if(username==''){
$("#error").html("用户名不能为空");
return false;
}
if(password==''){
$("#error").html("密码不能为空");
return false;
}
if(verify==''){
$("#error").html("验证码不能为空");
return false;
}
$.ajax({
url: '{:U("Login/logindo")}',
type: 'post',
data: {'username':username,'password':password,'verify':verify},
dataType: 'json',
// error:function(d){
// if(d.state==1){
// $("#error").html(d.msg);
// }
// }
error:function(){
},
success:function(d){
if(d.status==1){
$("#error").html(d.msg);
}else if(d.status==2){
$("#error").html(d.msg);
//$("#codeimg").attr('src','{U('Login/verify')}?m='+Math.random());
}else{
location.href="{:U('Login/index')}";
}
}
});
return false;
})
})
//后台登入的html页面
</script>
<title>后台登陆</title>
</head>
<body>
<div id="login_top">
<div id="welcome">
欢迎使用信息管理系统
</div>
<div id="back">
<a href="/">返回前端首页</a>
</div>
</div>
<div id="login_center">
<div id="login_area">
<div id="login_form">
<form action="" method="post">
<div id="login_tip">
用户登录 UserLogin
</div>
<span id="error"></span>
<div><input type="text" class="username" name="username" id="username"></div>
<div><input type="text" class="pwd" name="password" id="password"></div>
<div id="btn_area">
<input type="submit" name="submit" id="sub_btn" value="登 录" />
<input type="text" class="verify" name="verify" id="verify">
<img src="{:U('Login/verify')}" alt="验证码" width="80" height="40" onclick='this.src="{:U('Login/verify')}?m="+Math.random()' id="codeimg">
</div>
</form>
</div>
</div>
</div>
<div id="login_bottom">
版权所有
</div>
</body>
</html>