Bài 19: Session và cookie trong PHP – https://final-blade.com

Trong bài viết này tất cả chúng ta sẽ tìm hiểu và khám phá về session và cookie trong PHP. Cả session và cookie đều được sử dụng để tàng trữ tài liệu trong thời điểm tạm thời, thường được thấy nhất là công dụng đăng nhập và giỏ hàng. Tuy cả hai đều được sử dụng để tàng trữ tài liệu nhưng điểm khác nhau của chúng là session thì được lưu ở server còn cookie thì được lưu ở máy người dùng ( Client ). Để tìm hiểu và khám phá rõ hơn thì tất cả chúng ta cùng nhau khám phá chi tiết cụ thể về session và cookie nhé .

1. Session trong PHP

Session trong PHP là một biến dùng để lưu trữ thông tin của người dùng hoặc các cài đặt hệ thống liên quan đến người dùng. Mỗi người dùng truy cập sẽ có một session ID khác nhau, nên thông tin của khách hàng A không thể ảnh hưởng đến khách hàng B. Session thường được sử dụng cho các chức năng như đăng nhập, giỏ hàng, những dữ liệu chỉ lưu tạm thời. Mỗi khách hàng PHP sẽ tạo một file session tương ứng cho khách hàng đó, file này được lưu theo đường dẫn mà bạn thiết lập trong session.save_path trong file php.ini.

Cơ chế của session hoàn toàn có thể tóm gọn như sau :

  • Khi khách hàng truy cập trang web lần đầu tiên. PHP sẽ tự động tạo một định danh cho khách đó. Định danh này là một chuỗi duy nhất.
  • Một session ID(PHPSESSID) sẽ được gửi là lưu trữ ở trình duyệt.
  • PHP sẽ dựa vào PHPSESSID để lấy dữ liệu tương ứng của người dùng từ session.
  • Session bị xóa khi đóng trình duyệt hoặc hết phiên làm việc(có thể config).

Đăng ký session

Để sử dụng được session thì bắt buộc bạn phải sử dụng hàm session_start() ở đầu file. Nếu chưa có session thì hàm này sẽ tạo cho bạn, còn nếu tồn tại rồi thì nó sẽ lấy dữ liệu. Để không cần gọi session_start() thì bạn nên thiết lập để PHP tự động chạy hàm này bằng cách config session.auto_start = 1 trong php.ini

Khi session được chạy mặc định nó sẽ gửi một cookie với tiền tố PHPSESSID đến trình duyệt. Ví dụ ta có file session.php

123456789101112

session_start();? >

Session trong PHPSession trong PHP

Lưu trữ thông tin session

Biến toàn cục $_SESSION là nơi lưu trữ thông tin của session và cũng là biến để lấy, thay đổi hoặc lưu thêm thông tin thì chúng ta cũng cần làm việc với biến toàn cục này. Trước khi lấy thông tin nên sử dụng hàm isset($_SESSION[‘name’]) để kiểm tra session đã tồn tại hay chưa để tránh xảy ra lỗi.

Ví dụ để lưu thông tin của người mua tất cả chúng ta sẽ làm như sau :

1234567891011121314151617181920212223242526

session_start();

/ / Luu session

USD _SESSION[‘ username ‘]=USD _POST[‘ username ‘];

? >

if(isset(USD _SESSION[‘ username ‘])){

echo” Ten khach hang duoc luu o session la : “.USD _SESSION[‘ username ‘];

}

? >

Session trong PHPSession trong PHP

Xóa session

Tất cả thông tin đều được lưu trữ trong biến $_SESSION nên để xóa 1 giá trị session các bạn chỉ cần sử dụng hàm unset($_SESSION[‘session_name’]). Nếu muốn xóa tất cả thì sử dụng hàm session_destroy().

12345

/ / Xóa session name

unset(USD_SESSION[‘ username ‘]);

/ / Xóa hết session

session_destroy();

Đây chỉ là những hàm cơ bản và hay dùng về session. Để xem thêm những hàm thao tác với session những bạn truy vấn tại đây .

2. Cookie trong PHP

Cookie là một file nhỏ được tàng trữ ở máy người dùng ( trình duyệt ) và PHP hoàn toàn có thể truy xuất đến được. Để sử dụng được cookie thì trình duyệt của bạn phải tương hỗ nó. Ví dụ như hoạt động giải trí đăng nhập của người dùng sẽ có những bước sau :

  • Server gửi cookie đến trình duyệt(tên đăng nhập…)
  • Trình duyệt lưu lại thông tin này(cookie)
  • Lần sau nếu khách hàng truy cập lại trang, trình duyệt sẽ gửi lại cookie này lên server và server sẽ lấy được các thông tin từ cookie này.

Lưu trữ Cookie

Để lưu trữ cookie thì chúng ta sử dụng hàm set_cookie() và phải đặt trước thẻ html.

1

setcookie(USDname,USDvalue,USDexpire,USDpath,USDdomain,USDsecurity=false,USDhttponly=false)

  • $name: là tên của Cookie
  • $value: giá trị của Cookie
  • $expire: thời gian sống của Cookie
  • $path : đường dẫn lưu trữ Cookie
  • $domain: tên của domain
  • security = true nếu sử dụng HTTPS để truyền dữ liệu (mặc định false)
  • $httponly mặc định là false, nếu true thì chỉ cho phép cookie với giao thức HTTP

Ví dụ : cookie.php

123456789101112

php < / p

setcookie(‘ username ‘,’ VI-MAGENTO ‘,time()+3600);

? >

Nếu bật tab network ở trình duyệt lên bạn hoàn toàn có thể thấy thông tin cookie mà tất cả chúng ta đã thiết lập .
Cookie trong PHPCookie trong PHP

Lấy giá trị Cookie

Chúng ta sử dụng biến toàn cục $_COOKIE để lấy các giá trị mà trình duyệt gửi lên. Cũng giống như session bạn nên sử dụng hàm isset() để kiểm tra cookie cần lấy có tồn tại không để tránh báo lỗi.

Ví dụ lấy thông tin username vừa set ở trên :

123456789101112131415161718

if(isset(USD_COOKIE[‘ username ‘])){

php < / p

setcookie(‘ username ‘,’ VI-MAGENTO ‘,time()+3600);

? >

if(isset(USD _COOKIE[‘ username ‘])){

echoUSD _COOKIE[‘ username ‘];

}

? >

Session trong PHPSession trong PHP

Xóa Cookie

Để xóa cookie thì những bạn sử dụng hàm set_cookie ( ) ở trên với thiết lập thời hạn hết hạn .
Ví dụ để xóa cookie đã set ở trên :

1

setcookie(” username “,” “,time()-60,” / “,” “,

0

);

3. Kết luận

Trong bài viết này tất cả chúng ta đã khám phá về session và cookie trong PHP. Chúng rất thiết yếu trong những công dụng đăng nhập hay giỏ hàng. Các bạn cần nắm vững thực chất và cách thiết lập của chúng. Tìm hiểu thêm về session và cookie tại đây .