Bài viết chia sẻ cách tạo admin cho trang website CodeIgniter ,chúng ta cần thiết lập một giao diện quản trị để quản lý các thành phần của website, như sản phẩm, đơn hàng, người dùng, và cài đặt hệ thống. Dưới đây là hướng dẫn cách tạo admin cho trang website CodeIgniter.
1. Tạo Database cho Admin
Các bạn có thể tham khảo trang chủ CodeIgniter để có cách tạo admin cho trang website CodeIgniter . Trước hết, hãy đảm bảo bạn đã có cơ sở dữ liệu cho website của mình. Sau đó, tạo thêm các bảng cần thiết cho việc quản trị, ví dụ: admins
, admin_logs
, hoặc các bảng khác cần thiết cho mục đích quản lý.
CREATE TABLE admins ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(100) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE, role ENUM('superadmin', 'admin') DEFAULT 'admin', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE admin_logs ( id INT AUTO_INCREMENT PRIMARY KEY, admin_id INT NOT NULL, action VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (admin_id) REFERENCES admins(id) );
2. Thiết Lập Mô Hình (Model) cho Admin
Tiếp theo, chúng ta tạo một mô hình để xử lý các dữ liệu liên quan đến bảng admin.
Tạo tệp Admin_model.php
trong thư mục application/models/
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Admin_model extends CI_Model { public function __construct() { parent::__construct(); $this->load->database(); } public function get_admins() { $query = $this->db->get('admins'); return $query->result_array(); } public function get_admin_by_id($id) { $query = $this->db->get_where('admins', array('id' => $id)); return $query->row_array(); } public function add_admin($data) { return $this->db->insert('admins', $data); } public function update_admin($id, $data) { $this->db->where('id', $id); return $this->db->update('admins', $data); } public function delete_admin($id) { $this->db->where('id', $id); return $this->db->delete('admins'); } public function log_action($admin_id, $action) { $data = array( 'admin_id' => $admin_id, 'action' => $action ); return $this->db->insert('admin_logs', $data); } }
3. Tạo Controller cho Admin
Tạo tệp Admin.php
trong thư mục application/controllers/
:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Admin extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('Admin_model'); $this->load->library('session'); $this->load->helper('url'); } public function index() { $data['admins'] = $this->Admin_model->get_admins(); $this->load->view('admin/index', $data); } public function login() { // Login logic here $this->load->view('admin/login'); } public function dashboard() { // Dashboard logic here $this->load->view('admin/dashboard'); } public function add() { if ($this->input->post()) { $data = array( 'username' => $this->input->post('username'), 'password' => password_hash($this->input->post('password'), PASSWORD_BCRYPT), 'email' => $this->input->post('email'), 'role' => $this->input->post('role') ); $this->Admin_model->add_admin($data); redirect('admin'); } else { $this->load->view('admin/add'); } } public function delete($id) { $this->Admin_model->delete_admin($id); redirect('admin'); } public function edit($id) { if ($this->input->post()) { $data = array( 'username' => $this->input->post('username'), 'email' => $this->input->post('email'), 'role' => $this->input->post('role') ); $this->Admin_model->update_admin($id, $data); redirect('admin'); } else { $data['admin'] = $this->Admin_model->get_admin_by_id($id); $this->load->view('admin/edit', $data); } } }
Tạo View cho Admin
Tiếp theo, tạo các tệp giao diện (views) cho các chức năng quản trị.
View admin/index.php
– Hiển thị danh sách admin
<!DOCTYPE html> <html> <head> <title>Danh sách Admin</title> </head> <body> <h1>Danh sách Admin</h1> <a href="<?php echo site_url('admin/add'); ?>">Thêm Admin</a> <table border="1"> <tr> <th>ID</th> <th>Tên đăng nhập</th> <th>Email</th> <th>Quyền</th> <th>Hành động</th> </tr> <?php foreach ($admins as $admin): ?> <tr> <td><?php echo $admin['id']; ?></td> <td><?php echo $admin['username']; ?></td> <td><?php echo $admin['email']; ?></td> <td><?php echo $admin['role']; ?></td> <td> <a href="<?php echo site_url('admin/edit/'.$admin['id']); ?>">Sửa</a> | <a href="<?php echo site_url('admin/delete/'.$admin['id']); ?>">Xóa</a> </td> </tr> <?php endforeach; ?> </table> </body> </html>
View admin/add.php
– Thêm admin mới:
<!DOCTYPE html> <html> <head> <title>Thêm Admin</title> </head> <body> <h1>Thêm Admin mới</h1> <form method="post" action="<?php echo site_url('admin/add'); ?>"> <label>Tên đăng nhập:</label> <input type="text" name="username" required> <br> <label>Mật khẩu:</label> <input type="password" name="password" required> <br> <label>Email:</label> <input type="email" name="email" required> <br> <label>Quyền:</label> <select name="role"> <option value="admin">Admin</option> <option value="superadmin">Super Admin</option> </select> <br> <input type="submit" value="Thêm"> </form> </body> </html>
View admin/edit.php
– Sửa thông tin admin:
5. Bảo Mật Trang Quản Trị
Để đảm bảo bảo mật cho bảng admin:
Sử dụng xác thực: Xác thực người dùng bằng cách lưu trữ thông tin đăng nhập và quản lý phiên (session).
Hạn chế truy cập: Kiểm tra quyền truy cập trên mỗi chức năng quản trị.
Mã hóa mật khẩu: Sử dụng hàm password_hash()
và password_verify()
để mã hóa mật khẩu.
Kết Lại
Bằng cách làm theo các bước trên, bạn có thể tạo một trang admin cơ bản cho trang web sử dụng CodeIgniter. Bạn có thể tùy chỉnh thêm các tính năng để phù hợp với yêu cầu của mình.