CI框架登录验证实例

PHP piniu 791浏览 0评论

预先加载数据库操作类和Session类
即在autoload.php中:$autoload[‘libraries’] = array(‘database’, ‘session’);
a. 注: 使用session , 要设定 encryption key :
config.php中: $config[‘encryption_key’] = ‘!@#$%^&*()’;

登录表单页(view) : login_view.php
注: 由于该页面使用了CI的form标签, 所以需要在渲染该页面前加载form_helper, 即: 在config/autoload.php, 文件中加入: $autoload[‘helper’] = array(‘url’, ‘form’);

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html lang="utf-8">  
    <head>  
        <meta http-equiv="Content-type" content="text/html; charset=utf-8" />  
        <title>Login</title>  
        <style>div{display: block;} .errors{color: red;}</style>  
    </head>  
    <body>  
        <h1>Please Login</h1>  
        <?php echo form_open('admin');?>  
        <p>  
            <?php   
                echo form_label('Email: ', 'email');  
                echo form_input('email', set_value('email'), 'id="email" autofocus'); // set_value 如果密码输入有误, 返回时,默认写入值  
            ?>  
        </p>  
        <p>  
            <?php   
                echo form_label('Password: ', 'password');  
                echo form_input('password', '', 'id="password"');  
            ?>  
        </p>  
        <p>  
            <?php echo form_submit('submit','Login');?>  
        </p>  
        <?php echo form_close();?>  
           
        <div class="errors"><?php echo validation_errors();?></div>  
    </body>  
   
</html>

控制器 : admin.php

<?php 
   if ( ! defined('BASEPATH')) exit('No direct script access allowed');  
       
    class Admin extends CI_Controller {  
           
        function __construct(){  
            parent::__construct();  
        }  
           
        public function index(){  
               
            // 在welcome的action中添加如下代码,即可用户登录情况  
            /** 
             * public function __costruct(){ 
             *      session_start(); 
             *      parent::_construct(); 
             *  
             *      if(!$this->session->userdata('username')) redirect('admin'); 
             * } 
             */ 
            if ($this->session->userdata('username')) {  
                redirect('welcome');  
            }  
               
            $this->load->library('form_validation'); // 使用CI的表单验证, 如下:  
            $this->form_validation->set_rules('email', 'Email', 'valid_email|required');  
            $this->form_validation->set_rules('password', 'Password', 'min_length[4]|required');  
               
            if($this->form_validation->run() !== false){  
                // then validate password. Get from the Db.  
                $this->load->model('admin_model');  
                $res = $this->admin_model->verify_users(  
                                                $this->input->post('email'),  
                                                $this->input->post('password')  
                                            );  
                if($res !== false){  
                                            print_r($res);  
                    $this->session->set_userdata('username', $this->input->post('email'));  
                    redirect('welcome');   
                }  
            }  
               
            $this->load->view('login_view');  
        }  
           
        public function logout(){  
            $this->session->sess_destroy();  
            $this->load->view('login_view');  
        }  
   
}

模型层admin_model.php

<?php  
   
class Admin_model extends CI_Model{  
   
    function verify_users($email, $password){  
        $q = $this->db  
            ->where('email', $email)  
            ->where('password', sha1($password))  
            ->limit(1)->get('users');  
               
        if($q->num_rows > 0){  
            return $q->row();  
        }  
        return false;  
    }  
}

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • * 昵称:
  • * 邮箱: