首頁 web前端 js教程 CI框架实现cookie登陆的方法详解_php实例

CI框架实现cookie登陆的方法详解_php实例

Jun 07, 2016 pm 05:07 PM
ci框架 cookie 登陸

本文实例讲述了CI框架实现cookie登陆的方法。分享给大家供大家参考,具体如下:

第一步:login.php

//登陆方法
 public function login(){
  //如果用户名和密码为空,则返回登陆页面
  if(empty($_POST['username']) || empty($_POST['password'])){
   $data['verifycode'] = rand(1000,9999);//生成一个四位数字的验证码
   //将验证码放入session中,注意:参数是数组的格式
   $this->session->set_userdata($data);
   //注意:CI框架默认模板引擎解析的模板文件中变量不需要$符号
   //$this->parser->parse("admin/login",$data);
   //smarty模板变量赋值
   $this->tp->assign("verifycode",$data['verifycode']);
   //ci框架在模板文件中使用原生态的PHP语法输出数据
   //$this->load->view('login',$data);//登陆页面,注意:参数2需要以数组的形式出现
   //显示smarty模板引擎设定的模板文件
   $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')){
    //根据用户名及密码获取用户信息,注意:参数2是加密的密码
    $user_info=$this->user_model->check_user_login($username,md5($password));
    if($user_info['user_id'] > 0){
     //将用户id、username、password放入cookie中
     //第一种设置cookie的方式:采用php原生态的方法设置的cookie的值
     //setcookie("user_id",$user_info['user_id'],86500);
     //setcookie("username",$user_info['username'],86500);
     //setcookie("password",$user_info['password'],86500);
     //echo $_COOKIE['username'];
     //第二种设置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值
     //第三种设置cookie的方式:通过CI框架的cookie_helper.php函数库文件
     //这种方式不是很灵验,建议大家采取第二种方式即可
     //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);
     //跳转到指定页面
     //注意:site_url()与base_url()的区别,前者带index.php,后者不带index.php
     header("location:".site_url("index/index"));
    }
   }else{
    //跳转到登陆页面
    header("location:".site_url("common/login"));
   }
  }
 }
}

登入後複製

第二步:User_model.php

//cookie登陆:检测用户是否登陆,如果cookie值失效,则返回false,如果cookie值未失效,则根据cookie中的用户名和密码从数据库中获取用户信息,如果能获取到用户信息,则返回查询到的用户信息,如果没有查询到用户信息,则返回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;
 }
 //根据用户名及加密密码从数据库中获取用户信息,如果能获取到,则返回获取到的用户信息,否则返回false,注意:密码为加密密码
 public function check_user_login($username,$password){
  //这里大家要注意:$password为md5加密后的密码
  //$this->db->query("select * from ");
  //快捷查询类的使用:能为我们提供快速获取数据的方法
  //此数组为查询条件
  //注意:关联数组
  $arr=array(
   'username'=>$username,//用户名
   'password'=>$password,//加密密码
   'status'=>1   //账户为开启状态
  );
  //在database.php文件中已经设置了数据表的前缀,所以此时数据表无需带前缀
  $query = $this->db->get_where("users",$arr);
  //返回二维数组
  //$data=$query->result_array();
  //返回一维数组
  $user_info=$query->row_array();
  if(!empty($user_info)){
   return $user_info;
  }else{
   return false;
  }
}

登入後複製

第三步:其它控制器:

public function __construct(){
  //调用父类的构造函数
  parent::__construct();
  $this->load->library('tp'); //smarty模板解析类
  $this->load->helper('url'); //url函数库文件
  $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{
   //如果已经登陆,则重新设置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模型
}

登入後複製

更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
24
PlayStation網路登入失敗,但網路連線成功 PlayStation網路登入失敗,但網路連線成功 Feb 19, 2024 pm 11:33 PM

一些玩家在PS4或PS5發佈時遇到了一個奇怪的問題。例如,當他們的PlayStation網路登入失敗,但網路連線正常時,這可能會引起困擾。輸入登入資訊時,可能會遇到錯誤,而且可能無法加入PSParty聊天。如果你遇到了類似問題,這個指南可能會幫助你解決。在PlayStationNetworkSign-in旁邊,你會看到錯誤訊息‘AnErrorHaveAreAre’,它會顯示‘Failure’。其他參數如取得IP位址、網路連線和連線速度都是成功的。那麼,這裡的問題可能是什麼呢?我會給你工作的

修正AADSTS7000112,應用程式已停用Microsoft帳號登入錯誤 修正AADSTS7000112,應用程式已停用Microsoft帳號登入錯誤 Feb 19, 2024 pm 06:27 PM

AADSTS7000112錯誤可能會阻止您使用Microsoft帳戶登入應用程序,造成您不便。本文將為您提供解決方案,幫助您解決這個問題,恢復正常的登入體驗。登入:很抱歉,您登入時遇到問題。 AADSTS7000112:應用程式已停用。幸運的是,您可以遵循一些簡單的建議來修復錯誤。錯誤代碼AADSTS7000112是什麼?錯誤代碼AADSTS7000112表示與Microsoft的AzureActiveDirectory連線出現問題。通常情況下,這可能是由於嘗試登入的Microsoft應用程式被

企業微信的信箱怎麼登陸 企業微信的信箱怎麼登陸 Mar 10, 2024 pm 12:43 PM

企業微信的郵箱怎麼登陸?企業微信APP中是可以登陸郵箱,但是多數的用戶不知道郵箱如何的登陸,接下來就是小編為用戶帶來的企業微信郵箱登陸方法圖文教程,感興趣的用戶快來一起看看吧!企業微信使用教程企業微信的郵箱怎麼登陸1、先打開企業微信APP,進入到主頁最底部【工作台】點擊來專區;2、之後在工作台專區中,選擇其中的【企業郵箱】服務; 3.然後跳到企業信箱功能頁,點選底部的【綁定】或【換一個信箱】;4、最後在下圖所示的頁面輸入【QQ帳號】和【密碼】即可登陸信箱。

cookie存在哪裡 cookie存在哪裡 Dec 20, 2023 pm 03:07 PM

Cookie通常儲存在瀏覽器的Cookie資料夾中的,瀏覽器中的Cookie檔案通常以二進位或SQLite格式存儲,如果直接開啟Cookie文件,可能會看到一些亂碼或無法讀取的內容,因此最好使用瀏覽器提供的Cookie管理介面來檢視和管理Cookie。

電腦上的cookie在哪裡 電腦上的cookie在哪裡 Dec 22, 2023 pm 03:46 PM

電腦上的Cookie儲存在瀏覽器的特定位置,具體位置取決於使用的​​瀏覽器和作業系統:1、Google Chrome, 儲存在C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default \Cookies中等等。

手機cookie在哪裡 手機cookie在哪裡 Dec 22, 2023 pm 03:40 PM

手機上的Cookie儲存在行動裝置的瀏覽器應用程式中:1、在iOS裝置上,Cookie儲存在Safari瀏覽器的Settings -> Safari -> Advanced -> Website Data中;2、在Android裝置上,Cookie儲存在Chrome瀏覽器的Settings -> Site settings -> Cookies中等等。

Wegame登陸操作太頻繁怎麼解決? Wegame登陸操作太頻繁怎麼解決? Mar 14, 2024 pm 07:40 PM

Wegame是一款搭配騰訊遊戲使用的軟體,可以透過它來啟動遊戲,獲得加速,而近期有不少用戶在使用的時候出現了登陸操作過於頻繁的提示,面對這個提示,許多用戶都不知道怎麼才能夠成功解決,那麼本期軟體教學就來和大夥分享解決方法,一起來了解看看吧。  Wegame登陸操作過於頻繁怎麼辦?  方法一:  1、先確認一下我們的網路連線是否正常。  (可以嘗試開啟瀏覽器,看看能不能上網)  2、如果是網路故障,那麼試著重新啟動路由器、重新連線、重新啟動電腦來解決。  方法二:  1、如果網路沒有問題,那麼選擇&

GeForce Experience登入當機[修復] GeForce Experience登入當機[修復] Mar 19, 2024 pm 06:30 PM

本文將引導您解決在Windows11/10上出現的GeForceExperience登入當機問題。通常情況下,這可能是由於不穩定的網路連接、損壞的DNS快取、過時或損壞的圖形卡驅動程式等原因引起的。修復GeForceExperience登入黑畫面在開始之前,請確保重新啟動您的網路連線和電腦。有時候,這個問題可能只是因為臨時問題所引起的。如果您仍遇到NVIDIAGeForceExperience登入黑畫面問題,請考慮採取以下建議:檢查您的internet連線切換到另一個Internet連線停用您的

See all articles