|
本帖最后由 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_u extends CI_Controller{
function __construct()
{
parent::__construct();
//这里可以放置前台的相关配置,根据个人需要
}
}
class HT_C extends 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');
}
请大家见谅,发贴有点乱。 |
|