Tạo Form đăng nhập trên CodeIgniter

Share Button

Hướng dẫn tạo form đăng nhập đơn giản trên CoedeIgniter

Bước 1: Tạo cơ sở dữ liệu, bảng thông tin đăng nhập

CREATE TABLE `users` (
  `user_id` int(12) NOT NULL,
  `name` varchar(50) DEFAULT NULL,
  `user_name` varchar(50) NOT NULL,
  `email` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `status` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

// Indexes for table `users`
ALTER TABLE `users`
  ADD PRIMARY KEY (`user_id`),
  ADD UNIQUE KEY `email` (`email`);

// AUTO_INCREMENT for table `users`
ALTER TABLE `users`
  MODIFY `user_id` int(12) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;

Bước 2: Kết nối đến cơ sở dữ liệu
Để cấu hình đến cơ sở dữ liệu bạn cần thay đổi thông số trong file:application/config/database.php

Ta sẽ chỉ cần để ý đến một số dòng sau trong file:

‘username’ => ‘root’, // Tên đăng nhập database
‘password’ => , // Mật khẩu truy cập
‘database’ => ‘demo_DB’, // Tên databse
Bước 3: Điều chỉnh file router

Thêm dòng code sau vào trong file application/config/routes.php

$route['login'] = 'users/login';

Bước 4: Cập nhật autoload file
Truy cập application/config/autoload.php để cấu hình thư viện

 // load libraries
 $autoload['libraries'] = array('database','session');
 // load helper
 $autoload['helper'] = array('url');

Bước 5: Tạo Model
Tạo file Users_model.php trong thư mục application/models

<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of Users Model 
 *
 * @author Team TechArise
 *
 * @email info@techarise.com
 */
defined('BASEPATH') OR exit('No direct script access allowed');

class Users_model extends CI_Model {
  // declare private variable
  private $_userID;
  private $_name;
  private $_userName;
  private $_email;
  private $_password;
  private $_status;
  
  public function setUserID($userID) {
    $this->_userID = $userID;
  }  
  public function setEmail($email) {
    $this->_email = $email;
  }
  public function setPassword($password) {
    $this->_password = $password;
  }       

  public function getUserInfo() {
    $this->db->select(array('u.user_id', 'u.name', 'u.email'));
    $this->db->from('user as u');
    $this->db->where('u.user_id', $this->_userID);
    $query = $this->db->get();
    return $query->row_array();
  } 
  function login() {
    $this -> db -> select('user_id, name, email');
    $this -> db -> from('user');
    $this -> db -> where('email', $this->_email);
    $this -> db -> where('password', $this->_password);
    $this -> db -> limit(1);
    $query = $this -> db -> get();
    if($query -> num_rows() == 1) {
      return $query->result();
    } else {
      return false;
    }
  }    
}
?>

Bước 6: Tạo Control
Tạo file Users.php trong “application/controllers

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Users extends CI_Controller {

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of Users Controller
 *
 * @author Team TechArise
 *
 * @email info@techarise.com
 */
   
    public function __construct() {
        parent::__construct();
        $this->load->model('Users_model', 'user');
    }
  // Dashboard
  public function index()
  {
    if ($this->session->userdata('is_authenticated') == FALSE) {
            redirect('users/login'); // the user is not logged in, redirect them!
        } else {
      $data['title'] = 'Dashboard - Tech Arise';
          $data['metaDescription'] = 'Dashboard';
          $data['metaKeywords'] = 'Dashboard';
          $this->user->setUserID($this->session->userdata('user_id'));
          $data['userInfo'] = $this->user->getUserInfo();
          $this->load->view('users/dashboard', $data);
      }
  }
        // Login
  public function login()
  {
  $data['title'] = 'Login - Tech Arise';
        $data['metaDescription'] = 'Login';
        $data['metaKeywords'] = 'Login';
        $this->load->view('users/login', $data);
  }
  // Login Action 
  function doLogin() {
    // Check form  validation
    $this->load->library('form_validation');

    $this->form_validation->set_rules('email', 'Your Email', 'trim|required|valid_email');
    $this->form_validation->set_rules('password', 'Password', 'trim|required');

    if($this->form_validation->run() == FALSE) {
      //Field validation failed.  User redirected to login page
      $this->load->view('users/login');
    } else {  
      $sessArray = array();
      //Field validation succeeded.  Validate against database
      $email = $this->input->post('email');
      $password = $this->input->post('password');

      $this->user->setEmail($email);
      $this->user->setPassword(MD5($password));

      //query the database
      $result = $this->user->login();
      
      if($result) {
        foreach($result as $row) {
          $sessArray = array(
            'user_id' => $row->user_id,
            'name' => $row->name,
            'email' => $row->email,
            'is_authenticated' => TRUE,
          );
        $this->session->set_userdata($sessArray);
        }
        redirect('users');
      } else {
        redirect('users/login?msg=1');
      } 
    }
  }
  // Logout
  public function logout() {
        $this->session->unset_userdata('user_id');
        $this->session->unset_userdata('name');
        $this->session->unset_userdata('email');
        $this->session->unset_userdata('is_authenticated');
        $this->session->sess_destroy();
        $this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate, no-transform, max-age=0, post-check=0, pre-check=0");
        $this->output->set_header("Pragma: no-cache");
        redirect('login');
    }
}
?>

Bước 7:Tạo view file
Tạo file login.php trong thư mục “application/views/users”

<div class="row page-content">
  <div class="col-lg-12">
    <h2>Login Form</h2>
    <?php if(validation_errors()) { ?>
      <div class="alert alert-danger">
        <?php echo validation_errors(); ?>
      </div>
    <?php } ?>
    <?php if(!empty($this->input->get('msg')) && $this->input->get('msg') == 1) { ?>
      <div class="alert alert-danger">
        Please Enter Your Valid Information.
      </div>
    <?php } ?>
    <?php echo form_open('users/dologin'); ?>
          
      <div class="form-group">
         <input type="text" name="email" class="form-control" id="email" placeholder="Email">
      </div>
      <div class="form-group">
         <input type="password" name="password" class="form-control" id="password" placeholder="Password">
      </div>  
      <div class="form-group pull-right">
       <button type="submit" id="login" class="btn btn-primary">Login</button>
    </div>
      
    </div>
    
    <?php echo form_close(); ?>
  
</div>
Share Button

Comments

comments