Cookie (2) - Bài tập về cookie

 Phần trước: Cookie (1) - Tìm hiểu về cookie

-----

1.8       Bài tập về cookie

Bài tập 1: Viết chương trình để khi truy cập vào trang web, chương trình sẽ xuất thời gian truy cập lần gần đây nhất. Đây là đoạn mã tham khảo:

<?php

            echo "Chao ban, <br>";

            if(isset($_COOKIE['thoiGianTruyCap'])) {

                        echo "Thoi gian truy cap gan day nhat la: " .  date('d/m/Y H:i:s', $_COOKIE['thoiGianTruyCap']);

                        setcookie('thoiGianTruyCap', time(), time() + 600);

                       

            } else {

                        setcookie('thoiGianTruyCap', time(), time() + 600);

            }

?>

Xem thêm clip sau (của tác giả Lưu Trường Hải Lân): https://www.youtube.com/watch?v=PATRjYG2nhM&list=PLv6GftO355AsZFXlWLKob6tMsWZa4VCY1&index=105

Bài tập 2:

2.1. Thiết kế giao diện sau (vùng có viền đỏ) bằng HTML và CSS, có thể dùng Bootstrap hoặc không. (yêu cầu này là tùy chọn, cho bạn nào thích làm về front-end)

 


2.2. Kiểm tra thông tin đăng nhập của người dùng, nếu khớp với thông tin người dùng trong tập tin users.ini thì tạo cookie lưu lại thông tin đăng nhập. Lưu ý: Tên đăng nhập có thể là họ tên hoặc số điện thoại. Chưa xử lý phần Mã kiểm tra.

2.3. Sau khi người dùng đăng nhập thành công, duy trì việc đăng nhập này trong 3 phút, quá thời gian này, tự động đăng xuất người dùng.

Mã nguồn tham khảo:

[index.php]

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title>Document</title>

  <link href="css/bootstrap.min.css" rel="stylesheet">

</head>

<body>

  <div class="container">

    <?php

    if (isset($_COOKIE['fullname'])) {

      echo '<h3> Xin chào: ' . $_COOKIE['fullname'] . '</h3>';

      echo '<a href="logout.php">Đăng xuất</a>';

    } else {

      ?>

    <h3 class="text-center">Login</h3>

    <div class="row">

      <div class="col-md-4 col-md-offset-4">

       <form action="process.php" method="post">

        <div class="form-group">

          <label for="username">Username</label>

          <input type="text" id="username" name="username"class="form-control">

        </div>

        <div class="form-group">

          <label for="password">Password</label>

          <input type="password" id="password" name="password" class="form-control">

        </div>

        <button type="submit" class="btn btn-primary">Đăng nhập</button>

      </form>

    </div>

  </div>

  <?php

      }

  ?>

</div>

</body>

</html>

 

[process.php]

 

<h3 class="text-center">process</h3>

<?php

  // kiểm tra dữ liệu khác rỗng

  function checkEmpty($value) {

    $flag = false;

    if (!isset($value) || trim($value) == '') {

      $flag = true;

    }

    return $flag;

  }

 

  if (isset($_COOKIE['fullname'])) {

    echo '<h3> Xin chào: ' . $_COOKIE['fullname'] . '</h3>';

    echo '<a href="logout.php">Đăng xuất</a>';

  } else {

    if (!checkEmpty($_POST['username']) && !checkEmpty($_POST['password'])) {

      $username = $_POST['username'];

      $password = md5($_POST['password']);

      $data = parse_ini_file('users.ini');

      if (array_key_exists($username, $data)) {

        $userInfo = explode ('|', $data[$username]);

        if ($username == $userInfo[0] && $password == $userInfo[1]) {

          setcookie('fullname', $userInfo[2], time() + 200);

          echo '<h3> Xin chào: ' . $userInfo[2] . '</h3>';

          echo '<a href="logout.php">Đăng xuất</a>';

        } else {

          header('location:index.php');

        }

      }else {

        header('location:index.php');

      }

    } else {

    // die('test');

      header('location:index.php');

    }

  }

?>

 

[logout.php]

 

<?php

  setcookie('fullname');

  header('location:index.php');

?>

 

[users.ini]

 

teo = "teo|c4ca4238a0b923820dcc509a6f75849b|Nguyen Van Teo"

ti = "ti|c81e728d9d4c2f636f067f89cc14862c|Tran Van Ti"

Video tham khảo phần backend: https://www.youtube.com/watch?v=PATRjYG2nhM&list=PLv6GftO355AsZFXlWLKob6tMsWZa4VCY1&index=105

-----

Cập nhật: [14/10/2020]
-----
Xem thêm: Cookie (3) -