Cookie trong PHP

Cookie thường được sử dụng để xác định người dùng. Cookie là một file nhỏ mà máy chủ nhúng vào máy tính của người dùng.

Mỗi lần người dùng sử dụng trình duyệt truy cập website, máy chủ sẽ gửi cookie về máy tính người dùng. Với PHP, bạn có thể tạo và đọc các giá trị cookie rất dễ dàng.

Tạo Cookies bằng PHP

Hàm setcookie() trong PHP sẽ được sử dụng để tạo cookie.

Cú pháp


setcookie(name, value, expire, path, domain, secure, httponly);

Chỉ tham số name là bắt buộc. Tất cả các thông số khác là tùy chọn.

Ví dụ sau đây tạo một cookie có tên "user" với giá trị "John Doe". Cookie sẽ hết hạn sau 30 ngày (86400 * 30).

Ký tự "/" có nghĩa là cookie có sẵn trong toàn bộ trang web (nếu không muốn như vậy, bạn có thể chọn thư mục bạn muốn).

Sau đó, chúng tôi sẽ truy xuất giá trị "user" của cookie (sử dụng biến toàn cục $_COOKIE). Chúng tôi cũng sử dụng hàm isset() để kiểm tra xem cookie đã được thiết lập giá trị chưa:

<?php
    $cookie_name = "user";
    $cookie_value = "John Doe";
    setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<html>
<body>

    <?php
        if(!isset($_COOKIE[$cookie_name])) {
            echo "Cookie named '" . $cookie_name . "' is not set!";
        } else {
            echo "Cookie '" . $cookie_name . "' is set!<br>";
            echo "Value is: " . $_COOKIE[$cookie_name];
        }
    ?>

</body>
</html>

Chạy lần đầu tiên thì kết quả như sau:

Cookie 'user' is not set!

Chạy lại thì kết quả như sau:

Cookie 'user' is set!
Value is: John Doe
Lưu ý: Hàm setcookie() phải đặt TRƯỚC thẻ <html>.
Lưu ý: Giá trị của cookie được tự động mã hóa khi gửi cookie và tự động giải mã khi nhận được (để ngăn chặn mã hóa hãy sử dụng hàm setrawcookie()).

Để cập nhật giá trị của cookie, chỉ cần gọi lại hàm setcookie() và truyền giá trị mới như dưới đây:

<?php
    $cookie_name = "user";
    $cookie_value = "Alex Porter";
    setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>
<html>
<body>

    <?php
        if(!isset($_COOKIE[$cookie_name])) {
            echo "Cookie named '" . $cookie_name . "' is not set!";
        } else {
            echo "Cookie '" . $cookie_name . "' is set!<br>";
            echo "Value is: " . $_COOKIE[$cookie_name];
        }
    ?>

</body>
</html>

Chạy lần đầu tiên thì kết quả như sau:

Cookie 'user' is set!
Value is: John Doe

Chạy lại thì kết quả như sau:

Cookie 'user' is set!
Value is: Alex Porter

Để xóa cookie, hãy sử dụng hàm setcookie() và đặt ngày hết hạn nhỏ hơn ngày hiện tại như ví dụ dưới đây:

<?php
    // set the expiration date to one hour ago
    setcookie("user", "", time() - 3600);
?>
<html>
<body>

    <?php
        echo "Cookie 'user' is deleted.";
    ?>

</body>
</html>

Ví dụ sau đây tạo một tập lệnh nhỏ để kiểm tra xem cookie có được bật hay không. Trước tiên, hãy thử tạo một cookie thử nghiệm với hàm setcookie(), sau đó đếm biến mảng $_COOKIE, nếu lớn hơn không thì cookie đã được bật:

<?php
    setcookie("test_cookie", "test", time() + 3600, '/');
?>
<html>
<body>

    <?php
        if(count($_COOKIE) > 0) {
            echo "Cookies are enabled.";
        } else {
            echo "Cookies are disabled.";
        }
    ?>

</body>
</html>

Đây là kết quả:

Cookies are enabled.


Bài viết liên quan:

Hướng dẫn lập trình PHP toàn tập sẽ giúp bạn từng bước tìm hiểu và nắm vững ngôn ngữ lập trình PHP.

Hướng dẫn cách truy xuất, lọc, sắp xếp dữ liệu MySQL trong PHP sử dụng MySQLi và PDO.

MySQL prepared statements trong PHP rất hữu ích để chống lại các cuộc tấn công SQL Injection.