Cookie trong PHP

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.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *