Chắc hẳn là bạn đã nghe về Session và Cookies rồi phải không? Vậy thì làm thế nào để điều khiển và sử dụng Session khi Lập trình Web PHP. Bài này mình sẽ giúp bạn tìm hiểu qua ví dụ cụ thể.
Tìm hiểu về Session và Cookeis trong PHP qua ví dụ
Trong bìa này bạn sẽ học được:
-
Tại sao và khi nào sử dụng Cookie?
-
Cách tạo Cookies
-
Lấy giá trị của Cookies
-
Xóa Cookie
-
Session là gì?
-
Tại sao và khi nào thì sử dụng Session ?
-
Cách tạo một Session
-
Phá hủy biến Session
1. Cookies là cái gì?
Cookie là một tập tin nhỏ với kích thước tối đa là 4KB được lưu trữ trên Web server của máy khách.
Mỗi một lần một cookie đã được thiết lập, tất cả các request tiếp theo sẽ có cùng Cookie name và value.
Một cookie chỉ có thể được đọc từ miền nó đã được set. Ví dụ, một cookie sinh ra từ tên miền niithanoi.edu.vn thì không thể được đọc từ khoahoc.niithanoi.edu.vn
Hầu hết các trang web trên internet hiện nay có thể hiển thị quảng cáo từ lĩnh vực khác. Đây chính là việc thiết lập Cookie của bên thứ ba. Chúng ta gọi chúng là Third-party Cookies.
Một Cookie tạo ra bởi một người có thể chỉ họ mới nhìn thấy chúng. Người dùng khác không thể thấy.
Các trình duyệt web hiện nay đều có lựa chọn cho vô hiệu hóa cookie, third-party cookies hoặc vô hiệu hóa cả hai.
Nếu xảy ra trường hợp đó, PHP đáp ứng bằng cách passing cookie trong URL.
Sơ đồ dưới đây minh họa cách Cookies làm việc
Sơ đồ mô tả cách Cookie làm việc
Khi:
-
Một người dùng truy cập đến một trang có thiết lập cookie
-
Server thiết lập cookie trên máy tính của người dùng
-
Khi người dùng truy cập trang khác trên website đó, dữ liệu Cookie name và value được thiết lập ban đầu cũng sẽ được load cùng.
2. Tại sao và Khi nào chúng ta cần sử dụng Cookies
Cookies cho phép chúng ta theo dõi các thay đổi, trạng thái của ứng dụng qua một file rất nhỏ trên máy tính của người dùng.
Lưu trữ cookie còn tùy thuộc vào trình duyệt mà người dùng sử dụng.
Chúng ta thường sử dụng Cookie để theo dõi được trải nghiệm người dùng cá nhân – từ đó dự đoán sở thích của người dùng -> quay lại tối ưu hóa trải nghiệm của họ -> Tăng lòng trung thành của người dùng với trang web.
Bạn cũng cần sử dụng Cookie khi cần cá nhân hóa trang yêu cầu theo từng người dùng (trang thông tin cá nhân, tường cá nhân, trang admin...)
Theo dõi các trang mà người dùng đã đọc, đọc bao nhiêu lâu ...
3. Cách tạo Cookies
Dưới đây là cú pháp để tạo cookie (hay còn gọi là set cookie):
Giải thích rõ hơn về cú pháp
-
Hàm setcookie là một PHP Function sử dụng để tạo cookie
-
cookie_name là tên của cookie mà các máy chủ sẽ lấy giá trị của nó từ biến mảng $_COOKIE. Đây là bắt buộc
-
cookie_value là giá trị của cookie. Đây là bắt buộc.
-
[expiry_time] là tham số tùy chọn. Nó có thể được sử dụng để thiết lập thời hạn của cookie như 1 giờ. Thời gian được thiết lập sử dụng PHP function time() để cộng trừ một số giây lớn hơn 0 tức là time() + 3600 là set thời hạn cookie trong 1 giờ.
-
[cookie_path] là tham số tùy chọn. Nó được sử dụng để thiết lập đường dẫn Cookie lên Server. Xác định máy chủ đường của bánh. Nếu đặt '/', cookie sẽ có sẵn trong toàn bộ miền. Nếu đặt '/php', cookie sẽ chỉ có trong thư mục php và tất cả các thư mục con của nó. Giá trị mặc định là thư mục mà cookie được thiết lập.
-
[domain] đây là một tùy chọn. Ví dụ, đặt là niithanoi.edu.vn thì tất cả cookie có hiệu lực ở trên tất cả bao gồm subdomain. Đặt là khoahoc.niithanoi.edu.vn thì chỉ có hiệu lực trên domain này (bạn có thể set tối đa 253 ký tự)
-
[secure] đây là một tùy chọn. Xác định có hay không cookie chỉ nên được truyền qua một kết nối https. Giá trị TRUE cho thấy rằng các cookie sẽ chỉ được thiết lập nếu một có https. Mặc định là FALSE
-
[httponly] đây là một tùy chọn. Nếu đặt TRUE cookie sẽ có thể truy cập qua giao thức HTTP (cookie sẽ không được tiếp cận bằng scripting language). Thiết lập này có thể giúp giảm việc đánh cắp dữ liệu. Mặc định là FALSE
Lưu ý: Hàm setcookie phải được đặt trước thẻ mở HTML
Bây giờ thì hãy thử xem một ví dụ sử dụng cookie.
Chúng ta sẽ tạo ra một chương trình cơ bản cho phép chúng ta để lưu trữ các tên người dùng trong một cookie và sẽ hết hạn sau 60s.
Đoạn mã bên dưới cho thấy việc thiết lập cookie trên file 'cookies.php'.
Kết quả chúng ta nhận được:
4. Lấy giá trị của Cookie: Cookie value
Chúng ta tạo ra một tập tin có tên là 'cookies_read.php' với đoạn mã sau:
Chú ý: $_COOKIE biến mảng toàn cầu. Có thể truy cập ở bất kỳ đâu.
Nó có tên và giá trị của tất cả các thiết lập cookies.
Số lượng giá trị mà mảng $_COOKIE có thể chứa phụ thuộc vào các kích thước bộ nhớ của tập tin php.ini.
Mặc định là 1GB.
Thử chạy ứng dụng xem nào!
Cứ cho rằng bạn đã lưu tập tin trong thư mục phptus
-
Bước 1: Mở trình duyệt và dán http://localhost/phptuts/cookies.php vào thanh địa chỉ
Mảng trống bởi vì chưa tạo Cookie
-
Bước 2: Mở tab thứ 2 và duyệt đến địa chỉ http://localhost/phptuts/cookies.php
Thông báo tạo Cookie thành công
Chúng ta nhận được thông báo Cookie đã thiết lập trong 60s
-
Bước 3: Di chuyển về tab đầu tiên và nhấn F5
Lấy giá trị user_name trong biến $-COOKIE
Thử đợi khoảng 1 phút và sau đó nhấn F5 thử xem. Bạn thấy thay đổi gì không?
5. Cách Xóa Cookies
Nếu bạn muốn phá hủy một cookie trước khi nó hết hạn, bạn có thể thiết lập thời gian trôi qua.
Tạo ra một mới file mới có tên là cookie_destroy.php với đoạn mã sau:
-
Lặp lại bước 1 đến bước 3 từ trên ví dụ lấy giá trị của cookie
-
Mở địa tab với địa chỉ là: http://localhost/phptuts/cookie_destroy.php
-
Chuyển đến địa chỉ http://localhost/phptuts/cookies_read.php bây giờ kết quả là gì?
6. Session là cái gì?
-
Một Session (hay còn gọi là phiên) là một biến toàn cầu còn trong máy chủ.
-
Mỗi Session được giao một id duy nhất được sử dụng để lấy được lưu trữ giá trị.
-
Bất cứ khi nào một Session là tạo ra một chứa duy nhất Session id được lưu trữ của người sử dụng máy tính và trả về với mọi yêu cầu từ các server. Nếu trình duyệ của khách hàng duyệt không hỗ trợ cookie, các Session id được hiển thị địa chỉ URL.
-
Session có khả năng lưu trữ dự liệu khá lớn dữ liệu so với Cookie.
-
Session giá trị được xoá tự động khi các trình duyệt được đóng lại. Nếu bạn muốn để lưu trữ các giá trị vĩnh viễn, sau đó, bạn nên lưu trữ chúng trong database.
-
Giống như cookie, Session được lưu trữ trong biến mảng $_SESSION. Và phải được đặt trước thẻ mở HTML.
7. Tại sao và Khi nào cần sử dụng Session trong Lập trình PHP
-
Bạn muốn lưu trữ thông tin nhạy cảm với người dùng, giảm bớt nghi ngờ của người dùng bằng cách sử dụng Seesion.
-
Bạn muốn truyền giá trị từ trang này sang trang khác.
-
Thay thế cho cookie nếu trình duyệt đó không hỗ trợ cookies.
-
Lưu trữ biến toàn cục một cách hiệu quả và cách an toàn hơn so với việc truyền trong URL
-
Rất hữu ích khi bạn đang làm một ứng dụng như là giỏ hàng để tạm thời lưu trữ thông tin giỏ hàng với một dữ liệu lớn hơn 4KB.
8. Cách tạo Session trong PHP
Để tạo ra một phiên đầu tiên bạn phải gọi PHP function session_start và sau đó lưu trữ giá trị trong biến mảng $_SESSION.
Hãy giả sử chúng ta muốn biết số lần mà một trang đã được đọc, chúng ta có thể sử dụng một session để làm điều đó.
Đoạn mã dưới đây cho bạn thấy làm thế nào để tạo ra và lấy giá trị từ Session:
9. Phá hủy biến Session
Để phá hủy biến php session chúng ta sử dụng function session_destroy().
Nếu bạn muốn loại bỏ một phiên duy nhất, bạn có thể sử dụng unset()
Đoạn mã bên dưới minh họa làm thế nào để dùng cả các phương pháp này.
Session_destroy loại bỏ tất cả các dữ liệu của session bao gồm cả cookie liên quan đến session.
Unset chỉ giải phóng biến session.
Các dữ liệu khác vẫn còn nguyên vẹn.
Tổng kết
Như vậy là qua bài này các bạn đã hiểu được một số kiến thức của Seesion và Cookie trong PHP thông qua ví dụ, tóm lại:
-
Cookie là các tập tin được lưu và sử dụng ở máy tính của người dùng
-
Cookie chỉ có thể được đọc từ domain sử dụng nó.
-
Cookie có giới hạn thời gian, nếu nó không được thiết lập, cookie sẽ hết hạn khi trình duyệt được đóng lại
-
Session giống như là biến toàn cầu được lưu trữ trong máy chủ.
-
Mỗi Session được đưa ra một session id duy nhất được sử dụng để theo dõi các biến cho một người dùng.
-
Cookie và cả Session đều phải bắt đầu trước thẻ mở HTML
>>> Đăng ký học Lập trình Web với PHP tại NIIT - ICT Hà Nội ngay để nhanh chóng làm chủ PHP.