Nền tảng Kiến thức - Hành trang tới Tương lai
Card image

Chương 6-Bài 5. Thực hiện chức năng Kích hoạt Tài khoản

Tác giả: Dương Nguyễn Phú Cường #8174
Ngày đăng: Hồi xưa đó
Lượt xem: 162

Step 1: tạo file xử lý logic cho chức năng Kích hoạt tài khoản

  • Tạo file kichhoattaikhoan.php
  • Nội dung file:
<?php
// Include file cấu hình ban đầu của `Twig`
require_once __DIR__.'/../../bootstrap.php';

// Truy vấn database
// 1. Include file cấu hình kết nối đến database, khởi tạo kết nối $conn
include_once(__DIR__.'/../../dbconnect.php');

// Lấy dữ liệu người dùng hiệu chỉnh gởi từ REQUEST GET
$kh_tendangnhap = $_GET['kh_tendangnhap'];
$kh_makichhoat = $_GET['kh_makichhoat'];

// Câu lệnh SELECT
$sqlSelect = <<<EOT
    SELECT *
    FROM khachhang
    WHERE kh_tendangnhap = '$kh_tendangnhap'
    LIMIT 1;
EOT;

// Thực thi SELECT
$result = mysqli_query($conn, $sqlSelect) or die("<b>Có lỗi khi thực thi câu lệnh SQL: </b>" . mysqli_error($conn) . "<br /><b>Câu lệnh vừa thực thi:</b></br>$sqlSelect");

// Sử dụng hàm `mysqli_num_rows()` để đếm số dòng SELECT được
// Nếu có bất kỳ dòng dữ liệu nào SELECT được <-> Người dùng có tồn tại và đã đúng thông tin kh_tendangnhap, kh_makichhoat
if(mysqli_num_rows($result) > 0) {
    // Cập nhật trạng thái của User này thành 1 (kích hoạt)
    $sqlUpdate = <<<EOT
        UPDATE khachhang
        SET kh_trangthai = 1
        WHERE kh_tendangnhap = '$kh_tendangnhap' AND kh_makichhoat = '$kh_makichhoat';
EOT;

    // Thực thi SELECT
    mysqli_query($conn, $sqlUpdate) or die("<b>Có lỗi khi thực thi câu lệnh SQL: </b>" . mysqli_error($conn) . "<br /><b>Câu lệnh vừa thực thi:</b></br>$sqlUpdate");

    // Kiểm tra xem có dòng nào được cập nhật hay không?
    if($conn->affected_rows > 0) {
        // Yêu cầu `Twig` vẽ giao diện được viết trong file `frontend/auth/user-activated.html.twig`
        echo $twig->render('frontend/auth/user-activated.html.twig');
    } else {
        echo 'Không tìm thấy tài khoản cần Cập nhật!';
    }
}
else {
    echo 'Không tìm thấy người dùng. Kích hoạt thất bại!';
}

Step 2: tạo file template cho Trang kích hoạt tài khoản thành công

  • Tạo file `templates/frontend/auth/user-activated.html.twig`
  • Nội dung:
{# Kế thừa layout frontend #}
{% extends "frontend/layouts/layout.html.twig" %}

{# Nội dung trong block title #}
{% block title %}
Đăng nhập
{% endblock %}
{# End Nội dung trong block title #}

{# Nội dung trong block headline #}
{% block headline %}
Đăng nhập
{% endblock %}
{# End Nội dung trong block headline #}

{# Nội dung trong block content #}
{% block content %}
<div class="container mt-4">
    <div class="row">
        <div class="col">
            <h1>Chúc mừng bạn đã kích hoạt tài khoản thành công!</h1>
            <a class="btn btn-outline-primary" href="/">Quay về Trang chủ</a>
            <a class="btn btn-primary" href="/frontend/auth/login.php">Đăng nhập ngay!</a>
        </div>
    </div>
</div>
{% endblock %}
{# End Nội dung trong block content #}
   

Chương trình học


  1. Bức tranh tổng thể về Lập trình WEB 1
    1. Sơ đồ vận hành của một Website #1311
  2. Cài đặt môi trường Lập trình PHP 1
    1. Các chương trình cần thiết để Lập trình Web #8136
  3. Thực hiện Dự án PHP thực tế mẫu - sử dụng TWIG template
  4. Dự án thực tế mẫu (TWIG template) - Trang web bán hàng trực tuyến - Thiết kế CSDL 3
    1. Mô hình thiết kế CSDL mẫu NetaShop #7896
    2. Tạo cấu trúc (schema) database netashop #7897
    3. Tạo dữ liệu mẫu (data seed / dummy data) cho netashop #7898
  5. Dự án thực tế mẫu (TWIG template) - Trang web bán hàng trực tuyến - Thiết kế Backend 6
    1. Thiết kế bố cục (layouts) cho giao diện Backend #7900
    2. Tạo chức năng CRUD (Thêm, Sửa, Xóa, Xem) danh mục phẳng #8180
    3. Tạo chức năng CRUD (Thêm, Sửa, Xóa, Xem) danh mục có liên kết khóa ngoại #8183
    4. Tạo chức năng CRUD (Thêm, Sửa, Xóa, Xem) upload hình Sản phẩm (upload đơn, mỗi lần 1 file) #8186
    5. Tạo API lấy dữ liệu báo cáo thống kê #8194
    6. Tạo trang Dashboard #8199
  6. Dự án thực tế mẫu (TWIG template) - Trang web bán hàng trực tuyến - Thiết kế Frontend 11
    1. Thiết kế bố cục (layouts) cho giao diện Frontend #8158
    2. Thực hiện Trang chủ Frontend #8160
    3. Thực hiện Trang Đăng nhập Login #8164
    4. Thực hiện Trang Đăng ký Register #8167
    5. Thực hiện chức năng Kích hoạt Tài khoản #8174
    6. Thực hiện Trang Liên hệ (có gởi mail thông báo) #8178
    7. Thực hiện chức năng Đăng xuất #8192
    8. Thực hiện Trang chi tiết Sản phẩm #8213
    9. Thực hiện Xử lý cho phép Đặt hàng trong trang Chi tiết Sản phẩm #8215
    10. Thực hiện Trang Giỏ hàng #8218
    11. Thực hiện Trang tìm kiếm Sản phẩm #8225
Các bài học

Chương trình học

Bao gồm Module, Chương, Bài học, Bài tập, Kiểm tra...

Chương trình học


  1. Bức tranh tổng thể về Lập trình WEB 1
    1. Sơ đồ vận hành của một Website #1311
  2. Cài đặt môi trường Lập trình PHP 1
    1. Các chương trình cần thiết để Lập trình Web #8136
  3. Thực hiện Dự án PHP thực tế mẫu - sử dụng TWIG template
  4. Dự án thực tế mẫu (TWIG template) - Trang web bán hàng trực tuyến - Thiết kế CSDL 3
    1. Mô hình thiết kế CSDL mẫu NetaShop #7896
    2. Tạo cấu trúc (schema) database netashop #7897
    3. Tạo dữ liệu mẫu (data seed / dummy data) cho netashop #7898
  5. Dự án thực tế mẫu (TWIG template) - Trang web bán hàng trực tuyến - Thiết kế Backend 6
    1. Thiết kế bố cục (layouts) cho giao diện Backend #7900
    2. Tạo chức năng CRUD (Thêm, Sửa, Xóa, Xem) danh mục phẳng #8180
    3. Tạo chức năng CRUD (Thêm, Sửa, Xóa, Xem) danh mục có liên kết khóa ngoại #8183
    4. Tạo chức năng CRUD (Thêm, Sửa, Xóa, Xem) upload hình Sản phẩm (upload đơn, mỗi lần 1 file) #8186
    5. Tạo API lấy dữ liệu báo cáo thống kê #8194
    6. Tạo trang Dashboard #8199
  6. Dự án thực tế mẫu (TWIG template) - Trang web bán hàng trực tuyến - Thiết kế Frontend 11
    1. Thiết kế bố cục (layouts) cho giao diện Frontend #8158
    2. Thực hiện Trang chủ Frontend #8160
    3. Thực hiện Trang Đăng nhập Login #8164
    4. Thực hiện Trang Đăng ký Register #8167
    5. Thực hiện chức năng Kích hoạt Tài khoản #8174
    6. Thực hiện Trang Liên hệ (có gởi mail thông báo) #8178
    7. Thực hiện chức năng Đăng xuất #8192
    8. Thực hiện Trang chi tiết Sản phẩm #8213
    9. Thực hiện Xử lý cho phép Đặt hàng trong trang Chi tiết Sản phẩm #8215
    10. Thực hiện Trang Giỏ hàng #8218
    11. Thực hiện Trang tìm kiếm Sản phẩm #8225

Bài học trước Bài học tiếp theo