04/10/2018, 17:01

[BÀI 14] SESSION VÀ COOKIE TRONG PHP

SESSION Session là 1 biến tồn tại trên máy chủ (server) biến này không bị mất đi cho tới khi có lệnh hủy hoặc sau 1 khoảng thời gian nhất định mà người dùng không sử dụng đến biến này. Khác với biến dạng POST dữ liệu sau khi refresh lại trang sẽ bị mất đi, và GET cũng tương tự. Nhưng với ...

SESSION

Session là 1 biến tồn tại trên máy chủ (server) biến này không bị mất đi cho tới khi có lệnh hủy hoặc sau 1 khoảng thời gian nhất định mà người dùng không sử dụng đến biến này.

Khác với biến dạng POST dữ liệu sau khi refresh lại trang sẽ bị mất đi, và GET cũng tương tự. Nhưng với session, khi bạn refresh lại trang hay tắt hẳn trang có sử dụng đi, rồi tiến hành tải lại trang vừa tắt: dữ liệu của biến session vẫn tồn tại.

Biến session thường được sử dụng cho các mục đích:

  • Không muốn giá trị của biến mất đi khi chưa được phép.
  • Tạo một biến có thời gian tồn tại lâu

Trong thực tế biến trường hợp phổ biến nhất  sử dụng đến session là để lưu trạng thái đăng nhập của các thành viên trong 1 trang web. Chính vì vậy khi chúng ta chỉ phải đăng nhập một lần và trạng thái đăng nhập sẽ được gán vào một biến session, cho tới khi biến session này bị hủy thì người dùng mang trạng thái đã đăng xuất.

Biến session là một biến toàn cục, và có thể sử dụng ở bất cứ đâu.

Để sử dụng session cần khởi tạo phiên làm việc cho session, bằng hàm session_start(); trước khi sử dụng các biến session. Và chỉ khai báo session_start() một lần duy nhất trong trang web.

Cú pháp để gán giá trị cho một session: $_SESSION[‘session_name’] = $session_value , trong đó:

  • session_name là tên session mà bạn muốn đặt
  • session_value là giá trị của session

Ví dụ biến session lưu trạng thái đăng nhập của một thành viên:

Biến session cũng là một mảng.

Để hủy session:

Ví dụ để hủy session lưu trạng thái đăng nhập

COOKIE

cookie là biến lưu trữ trên máy khách. Mỗi cookies khi sử dụng đều phải gán giá trị và thời gian sống cho nó. Ví dụ đối với 1 cookie bạn đặt thời gian sống cho nó là 20 phút thì sau 20 phút biến này sẽ bị hủy.

Để giảm bớt sự quá tải cho server hay tối ưu, giảm khoảng cách giữa máy khách và máy chủ. Khiến sự trao đổi thông tin giữa các máy khách chủ dễ dàng hơn.

PHP cung cấp hàm setCookie() để thiết lập một Cookie. Hàm này yêu cầu đến 6 tham số và nó nên được gọi trước thẻ <html>. Với mỗi Cookie, hàm này phải được gọi riêng biệt.

setcookie(name, value, expire, path, domain, security);

Trong đó:

  • name: tên của cookie mà bạn muốn đặt
  • value: giá trị của cookie
  • expire: Chỉ ra hạn sử dụng của Cookie. Thời gian tính bằng giây từ 1/1/1970. Sau thời gian này, Cookie sẽ không thể truy cập. Nếu tham số này không được thiết lập thì Cookie sẽ tự động hết hiệu lực khi trình duyệt bị đóng.
  • path: Xác định các thư mục mà Cookie có hiệu lực. Một ký tự dấu gạch chéo duy nhất (/) cho phép Cookie có hiệu lực đối tất cả các thư mục.
  • domain: Xác định tên miền mà cookie có hiệu lực, trong trường hợp website của bạn có nhiều tên miền con thì bạn có thể chỉ định từng cookie có hiệu lực cho từng tên miền.
  • security: phương thức bảo mật dành cho cookie, securyty=1 khi bạn sử dụng giao thức https, security=0 khi bạn sử dụng giao thức http thông thường.

Ví dụ tạo cookie email và số điện thoại:

Như ví dụ trên:

  • Tên của cookie là: email
  • Giá trị của email là: “trung0194@gmail.com”
  • Thời gian sống là 1 tiếng, hàm time để lấy thời gian hiện tại, 3600 là 3600 giây (tương đương với 1 tiếng). do vậy sau 1 tiếng cookie này sẽ bị hủy
  • Các thư mục sử dụng cookie: tất cả
  • domain: tất cả domain
  • Giao thức : http

Sử dụng cookie:

  • Cookie là một biến dạng mảng do vậy, cú pháp sử dụng cookie: $_COOKIE[“ten_cookie”]

Ví dụ in ra màn hình giá trị 2 cookie vừa tạo ở trên:

Hủy một cookie:

  • Để hủy một cookie đơn giản nhất chỉ cần cho cookie đấy hết hạn sử dụng (hay đưa thời gian sống của cookie về bằng 0 hoặc nhỏ hơn 0)

Ở ví dụ trên tôi đã viết thêm 1 lệnh khai báo cookie email, nhưng đã chỉnh sửa lại thời gian sống về <=0. Do vậy cookie này đã bị hủy. Sau đó tôi dùng hàm isset() để kiểm tra xem biến $_COOKIE[“email”] có tồn tại hay không, rõ ràng tôi đã hủy biến $_COOKIE[“email”] ở trên rồi nên dòng thông báo được hiện ra chính là: “cookie đã bị hủy”.

Video hướng dẫn sử dụng session, cookie và một số ví dụ thực tế:

0