Tìm hiểu cookie trong PHP

Trong PHP, để gửi đi cookie ta dùng hàm setcookie (PHP4 và PHP5)

Cú pháp:

bool setcookie(string $name [, string $value [, int $expire [, string $path [, string $domain [, bool $secure [, bool $httponly]]]]]])

Hàm setcookie trả về TRUE nếu gửi cookie thành công, ngược lại trả về FALSE.

Trừ tham số name, các tham số còn lại trong hàm setcookie là tùy chọn. có thể bỏ qua các giá trị tùy chọn bằng cách dùng chuỗi rỗng (empty string), với tham số kiểu integer như $expire, ta thay chuỗi rỗng bằng số 0 (zero).

Ý nghĩa các tham số(parameters) như sau:
  • name: tên của cookie, ví dụ tên cookie là 'tencookie', ta lấy giá trị cookie bằng cách $_COOKIE['tencookie']
  • value: giá trị của cookie, được lưu trên máy client, ko nên lưu thông tin nhạy cảm (sensitive infomation) như mật khẩu, số tài khỏan,.... Muốn lấy giá trị này ta dùng $_COOKIE['tencookie'].
  • expire: thời gian cookie hết hiệu lực. Đây là giá trị Unix timestamp (ta sẽ đề cập trong topic khác vậy :) ), ta dùng hàm time() họăc mktime() cộng số giây để gán thời gian hết hiệu lực cho cookie. Ví dụ: dùng time() + 60*60*24*30 cho biết cookie sẽ hết hiệu lực trong 30 ngày. Nếu bỏ qua giá trị này, nghĩa là gán bằng 0 (zero) lúc dùng hàm setcookie(), cookie sẽ hết hiệu lực khi kết thúc session (trình duyệt đóng lại). Bài viết về session đã có trong mục PHP! :)
  • path: đường dẫn trên server nơi cookie có hiệu lực. Nếu gán '/', cookie sẽ có hiệu lực trên tòan bộ tên miền (domain), nếu gán '/subdir/', cookie chỉ có hiệu lực trên đường dẫn /subdir/ và các đường dẫn con của tên miền (domain), ví dụ /subdir/dir/... . Giá trị mặc định là đường dẫn mà cookie được gán.
  • domain: tên miền mà cookie có hiệu lực. Để cookie có hiệu lực trên tất cả subdomain của domain, ta gán giá trị '.domain.com'.
  • secure: giá trị mặc định là FALSE, nếu đặt giá trị TRUE, cookie chỉ có thể đựơc gán giá trị nếu tồn tại một kết nối bảo mật (secure connection), ta thường thấy protocol là https://
  • httponly: nếu được gán TRUE, cookie chỉ được gọi thông qua protocol HTTP. (PHP 5.2.0)

Một khi cookie đã đựơc gán, ta lấy giá trị cookie bằng cách dùng $_COOKIE (từ PHP 4.1.0) hoặc mảng $HTTP_COOKIE_VARS (từ PHP 3).

$value = 'giá trị của cookie';

setcookie("CookieName", $value);
setcookie("CookieName", $value, time()+3600); /* hết hiệu lực trong 1 giờ - 60*60 */
setcookie("CookieName", $value, time()+3600, "/subdir/", ".domain.com", 1); /* cookie có hiệu lực trên đường dẫn subdir và các đường dẫn con của subdir */

echo $_COOKIE["CookieName"]; /* Lấy giá trị của cookie - php 4.1.0*/
echo $HTTP_COOKIE_VARS["TestCookie"]; /* Lấy giá trị của cookie - php 3*/

Comments