gzwazz 发表于 2011-3-8 10:50:55

后台程序设计思想(含登录设计)

本帖最后由 gzwazz 于 2011-3-8 10:52 编辑

我们在设计后台程序的时候都需要通过session等方式,而纯的php程序设计我们都需要把判断放在一个网页里,然后加载他.下面是我在CI2.0下的日常使用方法
设计思想如下

第一步:写类
1、建新文件MY_xxx.php(说明一下,必须是MY_打头,后面的自已乱取,记住可放在application/core下,系统会自动载它,如果放在libraries下需要手动加代码)
程序如下:
<?php if (!defined('BASEPATH')) exit('No direct access allowed.');
//前台网页继承这个类
class QT_uextends CI_Controller{          
function __construct()
    {
      parent::__construct();               
      //这里可以放置前台的相关配置,根据个人需要
               
    }
}
class HT_Cextends CI_Controller {
function __construct()
    {
      parent::__construct();
      session_start();
                $this->load->helper('url');//我用来解决相关路径问题。可以与本例无关
                /** 检查登陆 */               
                if( ! isset($_SESSION['userid'])){                       
                       redirect('admin/index/login');
                }
    }

}

2、如何继承使用,如下:
class News extends HT_C
{       
        function __construct()
    {
      parent::__construct();
               
    }       
}
这样就行了,这样需要news下面的方法都会自动去判断登录状态。
前台对应继承相应的前台类就行了
3、登录设计


   function check_login(){       
                //登录验证
                header('Content-Type: text/html; charset=gbk');
                $username = $this->input->post('username', TRUE);
                $password = $this->input->post('password', TRUE);
               
                $username = mysql_escape_string($username);
                $password = mysql_escape_string ($password);                       
               
                if (empty($username)||empty($password)){
                        exit("<script>alert('用户名或密码不能为空!');window.history.go(-1)</script>");
                }
                $this->load->database();//数据库连接
                $query = $this->db->query("select * from admin where username = '".$username."' and password='".md5 ( $password ) ."'");
                if ($query->num_rows() > 0) {
                        $user_row = $query->row();
                        $_SESSION['userid'] = $user_row->id;
                        $_SESSION['username'] = $user_row->username;
                        $_SESSION['super'] = $user_row->super;                       
                        redirect('admin/index/index');
                }else{
                        exit("<script>alert('用户名或密码不正确!');window.history.go(-1)</script>");
                }
        }
相信大家能看得懂
4、退出:
function login_out(){       
           //退出
                if(isset($_SESSION["userid"])) {
                        unset($_SESSION['userid']);
                }       
       redirect('admin/index/login');
        }

请大家见谅,发贴有点乱。

chen24355 发表于 2016-6-28 00:01:27

如何使用Codelobster呢?都不知道如何和网上域名,数据库做关联

mageguoshi 发表于 2011-3-9 11:18:41

我个人觉得登录的用户名密码的验证应该交给后端的model来处理,然后返回。controller负责流程,model负责数据的处理,增删改和验证。这样是不是比较符合mvc的思想。

dongweicq 发表于 2011-3-9 11:26:51

:lol支持一下

mkdir 发表于 2011-3-12 06:58:00

我个人觉得登录的用户名密码的验证应该交给后端的model来处理,然后返回。controller负责流程,model负责数 ...
mageguoshi 发表于 2011-3-9 11:18 http://codeigniter.org.cn/forums/images/common/back.gif


    我挺认同你的说法的

wsluozefeng 发表于 2011-3-13 15:27:46

很需要的!!~~~:victory:

刀客孩哥 发表于 2011-3-14 14:07:37

很喜欢这种文章

gaoomei 发表于 2011-3-14 15:09:38

我个人觉得登录的用户名密码的验证应该交给后端的model来处理,然后返回。controller负责流程,model负责数 ...
mageguoshi 发表于 2011-3-9 11:18 http://codeigniter.org.cn/forums/images/common/back.gif


<?php

class MY_Controller extends CI_Controller{



/**

* 该控制器是否需要验证登录

* @var boolean

*/

protected $_auth_login = false;



/**

* 验证登录过程使用到的Session字段

* @var string

*/

protected $_useridField = 'user_id';


/**

* 禁止重写构造函数,由_init来代替子类初始化构造

**/

public final function __construct(){

parent::__construct();

if($this->_auth_login){

$this->_isLogin();

}

//load global config

//load global library

//load global helper

//...

//初始化

$this->_init();

}



/**

* 验证是否已登录,该方法可重写

**/

public function _isLogin(){

!isset($_SESSION)?session_start():'';
      /** 检查登陆 */               
      if( ! isset($_SESSION[$this->_useridField])){                        

redirect('admin/index/login');

}

}



/**

* 初始化

**/

public function _init(){


}

}

//使用
class Admin_Controller extends MY_Controller{

public function _init(){

$this->_auth_login = true;

}
}

cmsphp 发表于 2011-3-14 15:36:27

经典。。。。

shxuli 发表于 2011-3-14 17:05:14

我个人觉得登录的用户名密码的验证应该交给后端的model来处理,然后返回。controller负责流程,model负责数 ...
mageguoshi 发表于 2011-3-9 11:18 http://codeigniter.org.cn/forums/images/common/back.gif


    同意~

as3291363 发表于 2011-3-14 23:54:35

多重继承....
页: [1] 2 3
查看完整版本: 后台程序设计思想(含登录设计)