Cách set, get, delete cookies trong WordPress chuyên nghiệp

7 giờ ago, Hướng dẫn WordPress, Views
Cách set, get, delete cookies trong WordPress chuyên nghiệp

Giới Thiệu Tổng Quan về Cookies trong WordPress

Cookies là các tệp văn bản nhỏ được lưu trữ trên trình duyệt web của người dùng khi họ truy cập một trang web. Trong WordPress, cookies đóng vai trò quan trọng trong việc duy trì trạng thái đăng nhập, theo dõi hành vi người dùng, và cá nhân hóa trải nghiệm trang web. Hiểu rõ cách sử dụng cookies một cách chuyên nghiệp là điều cần thiết cho bất kỳ nhà phát triển WordPress nào.

Bài viết này sẽ hướng dẫn bạn chi tiết cách thiết lập (set), truy xuất (get), và xóa (delete) cookies trong WordPress, kèm theo các ví dụ minh họa và lưu ý quan trọng.

Thiết Lập Cookies trong WordPress (Set Cookies)

Để thiết lập một cookie trong WordPress, bạn có thể sử dụng hàm setcookie() của PHP. Tuy nhiên, WordPress cung cấp các hàm wrapper tiện lợi hơn và an toàn hơn để quản lý cookies, đặc biệt là hàm wp_setcookie().

Sử Dụng Hàm wp_setcookie()

Hàm wp_setcookie() nhận các tham số sau:

  • $name: Tên của cookie.
  • $value: Giá trị của cookie.
  • $expire: Thời gian hết hạn của cookie (tính bằng giây kể từ Unix epoch).
  • $path: Đường dẫn trên server mà cookie có hiệu lực. Mặc định là ‘/’.
  • $domain: Tên miền mà cookie có hiệu lực. Mặc định là tên miền hiện tại.
  • $secure: Chỉ gửi cookie qua HTTPS nếu giá trị là true. Mặc định là false.
  • $httponly: Ngăn JavaScript truy cập cookie nếu giá trị là true. Mặc định là false.

Ví dụ:


<?php
function set_my_cookie() {
  $cookie_name = 'my_custom_cookie';
  $cookie_value = 'Hello WordPress!';
  $expire = time() + (86400 * 30); // Hết hạn sau 30 ngày

  wp_setcookie( $cookie_name, $cookie_value, $expire, COOKIEPATH, COOKIE_DOMAIN, is_ssl(), true );
}
add_action( 'init', 'set_my_cookie' );
?>

Trong ví dụ trên:

  • Chúng ta tạo một cookie có tên my_custom_cookie với giá trị Hello WordPress!.
  • Cookie sẽ hết hạn sau 30 ngày.
  • Chúng ta sử dụng các hằng số COOKIEPATHCOOKIE_DOMAIN do WordPress cung cấp để đảm bảo tính tương thích.
  • is_ssl() kiểm tra xem trang web có đang sử dụng HTTPS hay không để thiết lập tham số secure.
  • true cho tham số httponly để ngăn JavaScript truy cập cookie, tăng cường bảo mật.

Lưu ý quan trọng: Bạn phải thiết lập cookies trước khi bất kỳ nội dung nào được gửi đến trình duyệt. Thông thường, bạn sẽ đặt cookies trong hook init hoặc một hook tương tự. Nếu bạn cố gắng đặt cookies sau khi nội dung đã được gửi, bạn sẽ gặp lỗi “Headers already sent”.

Truy Xuất Cookies trong WordPress (Get Cookies)

Để truy xuất giá trị của một cookie, bạn có thể sử dụng biến toàn cục $_COOKIE của PHP. Trong WordPress, bạn nên sử dụng hàm filter_input() để truy xuất cookie một cách an toàn.

Sử Dụng Hàm filter_input()

Hàm filter_input() nhận các tham số sau:

  • $type: Loại đầu vào cần lọc. Trong trường hợp này, chúng ta sử dụng INPUT_COOKIE.
  • $variable_name: Tên của biến (cookie) cần truy xuất.
  • $filter: Loại bộ lọc cần áp dụng. Bạn có thể sử dụng các bộ lọc như FILTER_SANITIZE_STRING để làm sạch dữ liệu.
  • $options: Mảng các tùy chọn bổ sung cho bộ lọc.

Ví dụ:


<?php
function get_my_cookie() {
  $cookie_name = 'my_custom_cookie';
  $cookie_value = filter_input( INPUT_COOKIE, $cookie_name, FILTER_SANITIZE_STRING );

  if ( $cookie_value ) {
    echo '<p>Giá trị cookie ' . $cookie_name . ' là: ' . esc_html( $cookie_value ) . '</p>';
  } else {
    echo '<p>Cookie ' . $cookie_name . ' không tồn tại.</p>';
  }
}
add_action( 'wp_footer', 'get_my_cookie' );
?>

Trong ví dụ trên:

  • Chúng ta sử dụng filter_input() để lấy giá trị của cookie my_custom_cookie.
  • Chúng ta sử dụng FILTER_SANITIZE_STRING để loại bỏ các ký tự không an toàn khỏi giá trị cookie.
  • Chúng ta sử dụng esc_html() để mã hóa giá trị cookie trước khi hiển thị nó trên trang web, ngăn chặn các cuộc tấn công XSS.
  • Chúng ta sử dụng hook wp_footer để hiển thị giá trị cookie ở cuối trang.

Lưu ý quan trọng: Luôn luôn làm sạch và mã hóa dữ liệu cookie trước khi sử dụng nó. Điều này giúp bảo vệ trang web của bạn khỏi các cuộc tấn công bảo mật.

Xóa Cookies trong WordPress (Delete Cookies)

Để xóa một cookie, bạn cần đặt giá trị của nó thành một chuỗi rỗng và thời gian hết hạn của nó về quá khứ. Bạn có thể sử dụng hàm wp_setcookie() với thời gian hết hạn đã qua.

Sử Dụng Hàm wp_setcookie() để Xóa Cookie

Ví dụ:


<?php
function delete_my_cookie() {
  $cookie_name = 'my_custom_cookie';

  wp_setcookie( $cookie_name, '', time() - 3600, COOKIEPATH, COOKIE_DOMAIN, is_ssl(), true );
}
add_action( 'init', 'delete_my_cookie' );
?>

Trong ví dụ trên:

  • Chúng ta đặt giá trị của cookie my_custom_cookie thành một chuỗi rỗng.
  • Chúng ta đặt thời gian hết hạn của cookie về một giờ trước (time() - 3600).
  • Các tham số khác (COOKIEPATH, COOKIE_DOMAIN, is_ssl(), true) phải giống như khi bạn thiết lập cookie ban đầu.

Lưu ý quan trọng: Trình duyệt có thể không xóa cookie ngay lập tức. Nó sẽ chỉ xóa cookie khi nó hết hạn. Tuy nhiên, việc đặt thời gian hết hạn về quá khứ sẽ khiến trình duyệt xóa cookie vào lần tiếp theo nó kiểm tra cookies.

Các Lưu Ý Quan Trọng Khi Sử Dụng Cookies trong WordPress

  • Bảo mật: Luôn luôn làm sạch và mã hóa dữ liệu cookie trước khi sử dụng nó. Sử dụng HTTPS để bảo vệ cookies khỏi bị đánh chặn. Đặt thuộc tính httponly thành true để ngăn JavaScript truy cập cookie.
  • Tuân thủ pháp luật: Tuân thủ các quy định về quyền riêng tư như GDPR và CCPA. Thông báo cho người dùng về việc sử dụng cookies và xin phép họ trước khi đặt cookies.
  • Hiệu suất: Tránh sử dụng quá nhiều cookies, vì điều này có thể làm chậm trang web của bạn. Chỉ lưu trữ những thông tin cần thiết trong cookies.

Ví Dụ Ứng Dụng Thực Tế

Dưới đây là một số ví dụ về cách bạn có thể sử dụng cookies trong WordPress:

  • Lưu trữ tùy chọn ngôn ngữ của người dùng: Khi người dùng chọn một ngôn ngữ trên trang web của bạn, bạn có thể lưu trữ ngôn ngữ đó trong một cookie và sử dụng cookie đó để hiển thị trang web bằng ngôn ngữ đã chọn cho người dùng trong các lần truy cập tiếp theo.
  • Theo dõi sản phẩm đã xem: Bạn có thể sử dụng cookies để theo dõi các sản phẩm mà người dùng đã xem trên trang web thương mại điện tử của bạn và hiển thị các sản phẩm đó cho người dùng trong phần “Sản phẩm đã xem gần đây”.
  • Lưu trữ thông tin đăng nhập: Mặc dù WordPress đã có cơ chế quản lý phiên đăng nhập, bạn vẫn có thể sử dụng cookies để lưu trữ thông tin đăng nhập của người dùng, chẳng hạn như tên người dùng, để tự động điền vào biểu mẫu đăng nhập. Tuy nhiên, cần đặc biệt cẩn trọng với vấn đề bảo mật khi lưu trữ thông tin nhạy cảm như vậy.

Kết Luận

Cookies là một công cụ mạnh mẽ để cá nhân hóa trải nghiệm người dùng và cải thiện chức năng của trang web WordPress của bạn. Bằng cách hiểu rõ cách thiết lập, truy xuất và xóa cookies một cách chuyên nghiệp, bạn có thể tận dụng tối đa tiềm năng của cookies mà vẫn đảm bảo tính bảo mật và tuân thủ pháp luật.

Hãy nhớ luôn đặt bảo mật và quyền riêng tư của người dùng lên hàng đầu khi làm việc với cookies.