session
bootstrap.php
<?php // Load các thư viện (packages) do Composer quản lý vào chương trình require_once __DIR__.'/vendor/autoload.php'; // Chỉ định thư mục `templates` (nơi Twig sẽ biên dịch cú pháp Twig thành các đoạn code PHP) $loader = new Twig_Loader_Filesystem(__DIR__.'/templates'); // Khởi tạo Twig $twig = new Twig_Environment($loader); // Bắt đầu sử dụng session session_start(); // Tạo biến global để có thể sử dụng trong tất cả các view được render bởi TWIG $twig->addGlobal('session', $_SESSION);
frontend/auth/login.php
<?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'); // Đã đăng nhập rồi -> điều hướng về trang chủ if(isset($_SESSION['email_logged']) && !empty($_SESSION['email_logged'])) { echo 'Bạn đã đăng nhập rồi. <a href="/project-nentang/frontend/">Bấm vào đây để quay về trang chủ.</a>'; } else { if(isset($_POST['btnLogin'])) { // Kiểm tra đăng nhập... $email = $_POST['email']; $password = $_POST['password']; // Câu lệnh SELECT $sqlSelect = <<<EOT SELECT * FROM khachhang kh WHERE kh.kh_email = '$email' AND kh.kh_matkhau = '$password'; EOT; // Thực thi SELECT $result = mysqli_query($conn, $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 USERNAME, PASSWORD if (mysqli_num_rows($result) > 0) { echo 'Đăng nhập thành công!'; // redirect đi đâu đó... // Lưu thông tin Email user đã đăng nhập $_SESSION['email_logged'] = $email; } else { echo 'Đăng nhập thất bại!'; } } else { echo $twig->render('frontend/auth/login.html.twig'); } } ?>
templates/frontend/auth/login.html.twig
{# 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 %} <form name="frmLogin" id="frmLogin" method="post" action="/frontend/auth/login.php"> <div class="container mt-4"> {% if errors %} <div id="errors-container" class="alert alert-danger face" role="alert"> <button type="button" class="close" data-dismiss="alert" aria-label="Close"> <span aria-hidden="true">×</span> </button> <ul> {% for fields in errors %} {% for field in fields %} <li>{{ field.msg | raw }}</li> {% endfor %} {% endfor %} </ul> </div> {% endif %} <div class="row justify-content-center"> <div class="col-md-8"> <div class="card-group"> <div class="card p-4"> <div class="card-body"> <h1>Đăng nhập</h1> <p class="text-muted">Nhập thông tin Tài khoản</p> <div class="input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text"> <i class="icon-user"></i> </span> </div> <input class="form-control" type="email" name="email" placeholder="Tên đăng nhập"> </div> <div class="input-group mb-4"> <div class="input-group-prepend"> <span class="input-group-text"> <i class="icon-lock"></i> </span> </div> <input class="form-control" type="password" name="password" placeholder="Mật khẩu"> </div> <div class="row"> <div class="col-6"> <button class="btn btn-primary px-4" name="btnLogin">Đăng nhập</button> </div> <div class="col-6 text-right"> <a class="btn btn-link px-0" href="/frontend/auth/forgot-password.php">Quên mật khẩu?</a> </div> </div> </div> </div> <div class="card text-white bg-primary py-5 d-md-down-none" style="width:44%"> <div class="card-body text-center"> <div> <h2>Đăng ký</h2> <p>Đăng ký để làm thành viên của Trang web bán hàng. Bạn sẽ được một số quyền lợi nhất định khi làm thành viên của Chúng tôi.</p> <a class="btn btn-primary active mt-3" href="/frontend/pages/register.php">Đăng ký ngay!</a> </div> </div> </div> </div> </div> </div> </div> </form> {% endblock %} {# End Nội dung trong block content #}
Cùng nhau học tập, khám phá các kiến thức nền tảng về Lập trình web, mobile, database nhé.
Nền tảng kiến thức - Hành trang tới tương lai hân hạnh phục vụ Quý khách!
Khám phá, trải nghiệm ngay
Vui lòng đăng nhập để gởi bình luận!
Đăng nhậpChưa có bình luận nào!