【PHP】codeigniter結合ajax實現登入
阿新 • • 發佈:2019-01-06
之前的文章中介紹了利用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="使用者名稱" onfocus="this.placeholder=''" onblur="this.placeholder='使用者名稱'"> </div> <div> <input class='loginpassword' type="password" name="password" placeholder="密碼" onfocus="this.placeholder=''" onblur="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表中
登入功能大概就是這個樣子,程式碼還比較幼稚,日後會更加完善。