CI框架實(shí)現(xiàn)cookie登陸的方法詳解
來(lái)源:易賢網(wǎng) 閱讀:928 次 日期:2016-08-22 14:25:40
溫馨提示:易賢網(wǎng)小編為您整理了“CI框架實(shí)現(xiàn)cookie登陸的方法詳解”,方便廣大網(wǎng)友查閱!

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

第一步:login.php

//登陸方法

 public function login(){

  //如果用戶名和密碼為空,則返回登陸頁(yè)面

  if(empty($_POST['username']) || empty($_POST['password'])){

   $data['verifycode'] = rand(1000,9999);//生成一個(gè)四位數(shù)字的驗(yàn)證碼

   //將驗(yàn)證碼放入session中,注意:參數(shù)是數(shù)組的格式

   $this->session->set_userdata($data);

   //注意:CI框架默認(rèn)模板引擎解析的模板文件中變量不需要$符號(hào)

   //$this->parser->parse("admin/login",$data);

   //smarty模板變量賦值

   $this->tp->assign("verifycode",$data['verifycode']);

   //ci框架在模板文件中使用原生態(tài)的PHP語(yǔ)法輸出數(shù)據(jù)

   //$this->load->view('login',$data);//登陸頁(yè)面,注意:參數(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']):'';//驗(yàn)證碼

   //做驗(yàn)證碼的校驗(yàn)

   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的方式:通過(guò)CI框架的input類(lèi)庫(kù)

     $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'];//在模型類(lèi)中可以通過(guò)這種方式獲取cookie值

     //echo $_COOKIE['password'];//在模型類(lèi)中可以通過(guò)這種方式獲取cookie值

     //第三種設(shè)置cookie的方式:通過(guò)CI框架的cookie_helper.php函數(shù)庫(kù)文件

     //這種方式不是很靈驗(yàn),建議大家采取第二種方式即可

     //set_cookie("username",$user_info['username'],3600);

     //echo get_cookie("username");

     //session登陸時(shí)使用:將用戶名和用戶id存入session中

     //$data['username']=$user_info['username'];

     //$data['user_id']=$user_info['user_id'];

     //$this->session->set_userdata($data);

     //跳轉(zhuǎn)到指定頁(yè)面

     //注意:site_url()與base_url()的區(qū)別,前者帶index.php,后者不帶index.php

     header("location:".site_url("index/index"));

    }

   }else{

    //跳轉(zhuǎn)到登陸頁(yè)面

    header("location:".site_url("common/login"));

   }

  }

 }

}

第二步:User_model.php

//cookie登陸:檢測(cè)用戶是否登陸,如果cookie值失效,則返回false,如果cookie值未失效,則根據(jù)cookie中的用戶名和密碼從數(shù)據(jù)庫(kù)中獲取用戶信息,如果能獲取到用戶信息,則返回查詢(xún)到的用戶信息,如果沒(méi)有查詢(xún)到用戶信息,則返回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ù)庫(kù)中獲取用戶信息,如果能獲取到,則返回獲取到的用戶信息,否則返回false,注意:密碼為加密密碼

 public function check_user_login($username,$password){

  //這里大家要注意:$password為md5加密后的密碼

  //$this->db->query("select * from ");

  //快捷查詢(xún)類(lèi)的使用:能為我們提供快速獲取數(shù)據(jù)的方法

  //此數(shù)組為查詢(xún)條件

  //注意:關(guān)聯(lián)數(shù)組

  $arr=array(

   'username'=>$username,//用戶名

   'password'=>$password,//加密密碼

   'status'=>1   //賬戶為開(kāi)啟狀態(tài)

  );

  //在database.php文件中已經(jīng)設(shè)置了數(shù)據(jù)表的前綴,所以此時(shí)數(shù)據(jù)表無(wú)需帶前綴

  $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)用父類(lèi)的構(gòu)造函數(shù)

  parent::__construct();

  $this->load->library('tp'); //smarty模板解析類(lèi)

  $this->load->helper('url'); //url函數(shù)庫(kù)文件

  $this->load->model("user_model");//User_model模型類(lèi)實(shí)例化對(duì)象

  $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');//分頁(yè)類(lèi)庫(kù)

  $this->load->model("role_model");//member_model模型類(lèi)

  $this->load->model("operation_model");//引用operation_model模型

  $this->load->model("object_model");//引用object_model模型

  $this->load->model("permission_model");//引用permission_model模型

}

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

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:CI框架實(shí)現(xiàn)cookie登陸的方法詳解
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢(xún)回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢(xún)?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢(xún) | 簡(jiǎn)要咨詢(xún)須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專(zhuān)用圖標(biāo)
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢(xún)關(guān)注公眾號(hào):hfpxwx
咨詢(xún)QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)