之前的文章中介绍了利用codeigniter框架中的表单来实现登录,不过这种方式相对原始,这里介绍一种利用ajax的数据传递方式。
前端代码:
首先需要了CI的session,直接使用了PHP原生的session机制,以便在CI的文件夹外也能调用session。
js调用方面,我调用了
"../lib/jquery/jquery.md5.js"
"../lib/jquery/jquery-2.2.2.min.js"
"login.js"
三个JS,其中第一个将来用于密码的加密传输,现在还没做。第二个是jquery的核心js,第三个是登录页相对应的js文件,登录功能的具体代码将写在这里。
login.php代码如下
<?php
session_start();
if(isset($_SESSION['username'])){
//返回之前的页面
}
?>
<!DOCTYPE html PUBLIC "-//W3C//Ddiv XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/Ddiv/xhtml1-transitional.ddiv">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="../lib/jquery/jquery.md5.js" type="text/javascript"></script>
<script src="../lib/jquery/jquery-2.2.2.min.js" type="text/javascript"></script>
<script src="login.js" type="text/javascript"></script>
<title>登录</title>
</head>
<div class="container">
<div>
<img src="../images/logo.png" alt="logo" width="705px"></img>
<hr>
</div>
<form method="post" action="">
<div>
<div>
<div>
<input class='loginusername' type="text" name="username" placeholder="用户名" οnfοcus="this.placeholder=''" οnblur="this.placeholder='用户名'">
</div>
<div>
<input class='loginpassword' type="password" name="password" placeholder="密码" οnfοcus="this.placeholder=''" οnblur="this.placeholder='密码'">
</div>
<div>
<input class='loginsubmit' type="submit" value="登录">
</div>
<div></div>
</div>
</div>
</form>
<div>
<hr>
版权信息
</div>
</div>
</html>
login.js
$(function(){
$("form").submit(function(e){
var username = $(".loginusername").val();
var password = $(".loginpassword").val();
if(username!='' && password!=''){
var errormessage = "用户名密码匹配中……";
$.ajax({
data:{username:username,password:password}, //要发送的数据
type:"POST", //发送的方式
url:"../tool/index.php/Login/UserLogin", //url地址
error:function(msg){ //处理出错的信息
var errormessage="再试一次";
$(".loginerror").html(errormessage);
},
success:function(msg){ //处理正确时的信息
//alert("success" + msg)
if(msg!=''){
var errormessage="登录成功";
$(".loginerror").html(errormessage);
location.href = "http://localhost/"
}else{
var errormessage="用户名或密码错误";
$(".loginerror").html(errormessage);
}
}
});
}else{
var errormessage = "用户名或密码不能为空";
}
$(".loginerror").html(errormessage);
return false;
});
});
//跳转
//location.href = "http://localhost/";
CI中的接口:
Controller文件
login.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Login extends CI_Controller {
public function __construct()
{
parent::__construct();
}
public function index()
{
}
public function UserLogin() {
$username = $this->input->get_post('username');
$password = $this->input->get_post('password');
//读取model
$this->load->model('Admin_user_master_model');
$is_sucess = $this->Admin_user_master_model->user_login($username,$password);
if($is_sucess){
$arr = array('username'=>$username);
session_id();
session_start();
$_SESSION ['username'] = $username;
//$_SESSION['userid']=
echo $_SESSION['username'];
//结果封装成json字符串
$res=json_encode($arr);
}else{
echo '';
}
}
}
Model文件
Admin_user_master_model.php
<?php
class Admin_user_master_model extends CI_Model {
public function __construct()
{
$this->load->database();
}
public function user_login($username,$password){
$query_string = "select plat_user_name from plat_user_info
where plat_user_name=".$this->db->escape($username)." and plat_user_password=".$this->db->escape($password);
$query = $this->db->query($query_string);
if ($query->num_rows() > 0) {
return true;
} else {
return false;
}
}
}
ps:我的数据库中,用户信息存放在plat_user_info表中
登录功能大概就是这个样子,代码还比较幼稚,日后会更加完善。