欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

CI框架實現(xiàn)cookie登陸的方法詳解

 更新時間:2016年05月18日 08:53:23   作者:yanhui_wei  
這篇文章主要介紹了CI框架實現(xiàn)cookie登陸的方法,結(jié)合實例形式分析了CI框架使用cookie實現(xiàn)登陸的步驟與相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了CI框架實現(xiàn)cookie登陸的方法。分享給大家供大家參考,具體如下:

第一步:login.php

//登陸方法
 public function login(){
  //如果用戶名和密碼為空,則返回登陸頁面
  if(empty($_POST['username']) || empty($_POST['password'])){
   $data['verifycode'] = rand(1000,9999);//生成一個四位數(shù)字的驗證碼
   //將驗證碼放入session中,注意:參數(shù)是數(shù)組的格式
   $this->session->set_userdata($data);
   //注意:CI框架默認(rèn)模板引擎解析的模板文件中變量不需要$符號
   //$this->parser->parse("admin/login",$data);
   //smarty模板變量賦值
   $this->tp->assign("verifycode",$data['verifycode']);
   //ci框架在模板文件中使用原生態(tài)的PHP語法輸出數(shù)據(jù)
   //$this->load->view('login',$data);//登陸頁面,注意:參數(shù)2需要以數(shù)組的形式出現(xiàn)
   //顯示smarty模板引擎設(shè)定的模板文件
   $this->tp->display("admin/login.php");
  }else{
   $username = isset($_POST['username'])&&!empty($_POST['username'])?trim($_POST['username']):'';//用戶名
   $password = isset($_POST['password'])&&!empty($_POST['password'])?trim($_POST['password']):'';//密碼
   $verifycode = isset($_POST['verifycode'])&&!empty($_POST['verifycode'])?trim($_POST['verifycode']):'';//驗證碼
   //做驗證碼的校驗
   if($verifycode == $this->session->userdata('verifycode')){
    //根據(jù)用戶名及密碼獲取用戶信息,注意:參數(shù)2是加密的密碼
    $user_info=$this->user_model->check_user_login($username,md5($password));
    if($user_info['user_id'] > 0){
     //將用戶id、username、password放入cookie中
     //第一種設(shè)置cookie的方式:采用php原生態(tài)的方法設(shè)置的cookie的值
     //setcookie("user_id",$user_info['user_id'],86500);
     //setcookie("username",$user_info['username'],86500);
     //setcookie("password",$user_info['password'],86500);
     //echo $_COOKIE['username'];
     //第二種設(shè)置cookie的方式:通過CI框架的input類庫
     $this->input->set_cookie("username",$user_info['username'],3600);
     $this->input->set_cookie("password",$user_info['password'],3600);
     $this->input->set_cookie("user_id",$user_info['user_id'],3600);
     //echo $this->input->cookie("password");//適用于控制器
     //echo $this->input->cookie("username");//適用于控制器
     //echo $_COOKIE['username'];//在模型類中可以通過這種方式獲取cookie值
     //echo $_COOKIE['password'];//在模型類中可以通過這種方式獲取cookie值
     //第三種設(shè)置cookie的方式:通過CI框架的cookie_helper.php函數(shù)庫文件
     //這種方式不是很靈驗,建議大家采取第二種方式即可
     //set_cookie("username",$user_info['username'],3600);
     //echo get_cookie("username");
     //session登陸時使用:將用戶名和用戶id存入session中
     //$data['username']=$user_info['username'];
     //$data['user_id']=$user_info['user_id'];
     //$this->session->set_userdata($data);
     //跳轉(zhuǎn)到指定頁面
     //注意:site_url()與base_url()的區(qū)別,前者帶index.php,后者不帶index.php
     header("location:".site_url("index/index"));
    }
   }else{
    //跳轉(zhuǎn)到登陸頁面
    header("location:".site_url("common/login"));
   }
  }
 }
}

第二步:User_model.php

//cookie登陸:檢測用戶是否登陸,如果cookie值失效,則返回false,如果cookie值未失效,則根據(jù)cookie中的用戶名和密碼從數(shù)據(jù)庫中獲取用戶信息,如果能獲取到用戶信息,則返回查詢到的用戶信息,如果沒有查詢到用戶信息,則返回0
 public function is_login(){
  //獲取cookie中的值
  if(empty($_COOKIE['username']) || empty($_COOKIE['password'])){
   $user_info = false;
  }else{
   $user_info=$this->check_user_login($_COOKIE['username'],$_COOKIE['password']);
  }
  return $user_info;
 }
 //根據(jù)用戶名及加密密碼從數(shù)據(jù)庫中獲取用戶信息,如果能獲取到,則返回獲取到的用戶信息,否則返回false,注意:密碼為加密密碼
 public function check_user_login($username,$password){
  //這里大家要注意:$password為md5加密后的密碼
  //$this->db->query("select * from ");
  //快捷查詢類的使用:能為我們提供快速獲取數(shù)據(jù)的方法
  //此數(shù)組為查詢條件
  //注意:關(guān)聯(lián)數(shù)組
  $arr=array(
   'username'=>$username,//用戶名
   'password'=>$password,//加密密碼
   'status'=>1   //賬戶為開啟狀態(tài)
  );
  //在database.php文件中已經(jīng)設(shè)置了數(shù)據(jù)表的前綴,所以此時數(shù)據(jù)表無需帶前綴
  $query = $this->db->get_where("users",$arr);
  //返回二維數(shù)組
  //$data=$query->result_array();
  //返回一維數(shù)組
  $user_info=$query->row_array();
  if(!empty($user_info)){
   return $user_info;
  }else{
   return false;
  }
}

第三步:其它控制器:

public function __construct(){
  //調(diào)用父類的構(gòu)造函數(shù)
  parent::__construct();
  $this->load->library('tp'); //smarty模板解析類
  $this->load->helper('url'); //url函數(shù)庫文件
  $this->load->model("user_model");//User_model模型類實例化對象
  $this->cur_user=$this->user_model->is_login();
  if($this->cur_user === false){
   header("location:".site_url("common/login"));
  }else{
   //如果已經(jīng)登陸,則重新設(shè)置cookie的有效期
   $this->input->set_cookie("username",$this->cur_user['username'],3600);
   $this->input->set_cookie("password",$this->cur_user['password'],3600);
   $this->input->set_cookie("user_id",$this->cur_user['user_id'],3600);
  }
  $this->load->library('pagination');//分頁類庫
  $this->load->model("role_model");//member_model模型類
  $this->load->model("operation_model");//引用operation_model模型
  $this->load->model("object_model");//引用object_model模型
  $this->load->model("permission_model");//引用permission_model模型
}

更多關(guān)于CodeIgniter相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《ThinkPHP入門教程》、《ThinkPHP常用方法總結(jié)》、《Zend FrameWork框架入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對大家基于CodeIgniter框架的PHP程序設(shè)計有所幫助。

相關(guān)文章

最新評論