Session là một cách để lưu trữ thông tin (trong các biến) được sử dụng trên nhiều trang. Show
Không giống như một cookie, thông tin được lưu trữ trên server, chứ không được lưu trữ trên máy tính người dùng. Nội dung chính
Khi bạn làm việc với một ứng dụng, bạn mở nó, thực hiện một số thay đổi, và sau đó bạn đóng nó lại. Điều này giống như một phiên (session). Máy tính biết bạn là ai. Nó biết khi bạn bắt đầu ứng dụng và khi bạn kết thúc. Nhưng trên internet có một vấn đề: máy chủ web không biết bạn là ai hoặc bạn làm gì, vì địa chỉ HTTP không duy trì trạng thái. Các biến session giải quyết vấn đề này bằng cách lưu trữ thông tin người dùng được sử dụng trên nhiều trang (ví dụ: tên người dùng, sở thích, v.v.). Theo mặc định, các biến session tồn tại cho đến khi người dùng đóng trình duyệt. Vì thế; Biến phiên giữ thông tin về một người dùng duy nhất và có sẵn cho tất cả các trang trong một ứng dụng. Bắt đầu một session trong PHPHàm session_start() được sử dụng để bắt đầu một session. Biến session được đặt bằng biến toàn cục PHP: $_SESSION. Bây giờ, hãy tạo một trang mới có tên là "session-trong-php-1.php". Trong trang này, chúng tôi bắt đầu một PHP session mới và thiết lập một số biến session: File: "session-trong-php-1.php" <?php // bắt đầu session session_start(); ?> <!DOCTYPE html> <html> <body> <?php // Tạo biến session $_SESSION["user_id"] = "TT123456"; $_SESSION["username"] = "david123"; echo "Các biến session đã được tạo."; ?> </body> </html> Kết quả: Các biến session đã được tạo. Xem kết quả ở tab mới. Chú ý: Hàm Cácsession_start() phải đặt TRƯỚC thẻ <html>. Đọc giá trị biến session trong PHPTiếp theo, chúng ta tạo một trang khác gọi là "session-trong-php-2.php". Từ trang này, chúng ta sẽ truy cập thông tin session mà chúng ta đã tạo ra trên trang đầu tiên ("session-trong-php-1.php"). Lưu ý rằng các biến session không được chuyển riêng lẻ đến từng trang mới, thay vào đó chúng được truy cập từ session mà chúng ta khai báo ở đầu mỗi trang (session_start()) và các giá trị biến session được lưu trữ trong biến toàn cầu $_SESSION: File: "session-trong-php-2.php" <?php // bắt đầu session session_start(); ?> <!DOCTYPE html> <html> <body> <?php // hiển thị các biến session được tạo ở ví dụ trước echo "user_id là: " . $_SESSION["user_id"] . "<br>"; echo "username là: " . $_SESSION["username"]; ?> </body> </html> Kết quả: user_id là: TT123456 username là: david123 Xem kết quả ở tab mới. Để in tất cả các biến session, sử dụng lệnh sau: <?php print_r($_SESSION); ?> Thay đổi giá trị biến session trong PHPĐể thay đổi biến session, chỉ ghi đè lên biến đó: File: "session-trong-php-3.php" <?php // bắt đầu session session_start(); ?> <!DOCTYPE html> <html> <body> <?php // thay đổi biến session được tạo ở ví dụ trước $_SESSION["username"] = "viettuts.vn"; print_r($_SESSION); ?> </body> </html> Kết quả: Array ( [user_id] => TT123456 [username] => viettuts.vn ) Xem kết quả ở tab mới. Xóa biến session trong PHPĐể xóa tất cả các biến session toàn cầu hãy sử dụng session_unset() và session_destroy(): File: "session-trong-php-4.php" <?php session_start(); ?> <!DOCTYPE html> <html> <body> <?php // xóa tất cả các biến session session_unset(); session_destroy(); print_r($_SESSION); ?> </body> </html> Kết quả: Xem kết quả ở tab mới. Session hoạt động như thế nào? Làm sao để biết nó là tôi?Hầu hết các session đều thiết lập một user-key trên máy tính của người dùng giống như sau: 765487cf34ert8dede5a562e4f3a7e12. Sau đó, khi một phiên được mở trên một trang khác, nó sẽ quét máy tính cho một user-key. Nếu phù hợp, nó sẽ truy cập vào phiên đó, nếu không, nó sẽ bắt đầu một phiên mới.
Cookie là mẩu tin nhỏ được lưu ở máy người dùng (cụ thể là tại Browser, trình duyệt), Cookie sử dụng với mục đích để theo dõi, lưu lại hoạt động truy cập. Ví dụ nhớ tên người dùng truy cập vào website có thể hoạt động qua các bước như sau:
Nên nhớ Cookie được lưu lại ở Browser, sau đó mỗi lần gửi yêu cầu đến Server nó sẽ tự động gửi thông tin này đến Server Thiết lập, lưu CookieTừ PHP có thể thiết lập Cookie bằng hàm setcookie($name, $value, $expire = 0, $path="", $domain = "", $security = false, $httponly = false);
Ví dụ:
<?php setcookie("name", "XUANTHULAB", time() + 600, "/"); echo "Set cookie"; ?> Đoạn mã trên
thiết lập lưu Cookie với tên Bạn có thể chạy lệnh php -S 0.0.0.0:8080 setcookie.php Sau đó truy cập địa chỉ Khi truy cập, phần header trả về có thông tin về thiết lập Cookie, ngược lại nếu đã có Cookie khi trình duyệt gửi yêu cầu - nó thiết lập giá trị cookie vào phần header của request Hoặc dùng lệnh curl để xem header trả về: Truy cập - đọc - Cookie Bạn dùng biến
<?php if( isset($_COOKIE["name"])) { echo "Welcome " . $_COOKIE["name"]; } else { echo "Không có tên"; } ?> Xóa CookieĐể yêu cầu trình duyệt xóa cookie bạn sử dụng chính hàm setcookie với thủ thuật đặt thời gian đã hết hạn. Ví dụ: setcookie( "name", "", time()- 60, "/","", 0); Khái niệm về SessionĐể trao đổi dữ liệu từ trang này qua trang khác (giữa 2 request) thì làm như thế nào? Ví dụ nếu người dùng đã đăng nhập, thì thông tin đăng nhập được lưu lại và chuyển cho các trang khác nhau trong phiên làm việc để tránh mỗi lần gửi request lại phải đăng nhập, hay người dùng chọn đựa mặt hàng vào giỏ hàng thì phải nhớ để chuyển đến trang thanh toán ... PHP có cơ chế để làm
việc này đó chính là Session là thông tin về phiên làm việc cho từng khách truy cập, trong PHP nó tạo một file trong thư mục tạm (thư mục này cài đặt ở Sự làm việc của Session có thể vắn tắt như sau:
Như vậy Chạy Session - Lưu trữ và lấy thông tin Session trong PHP bắt đầu hoạt động sau khi bạn gọi hàm Khi mà hệ thống session trong PHP được chạy, mặc định nó sẽ gửi về trình duyệt một Cookie với tiền tố Ví dụ trang chạy thử Session
<?php if (session_id() === '') session_start(); echo "Session đang chạy"; Kiểm tra bạn thấy có Cookie gửi về, cookie này dùng để phục hồi dữ liệu Session Biến toàn cục Ví dụ đếm lượt truy cập trang của một khách
<?php // Khởi tạo session PHP nếu chưa khởi tạo if (session_id() === '') session_start(); if( isset( $_SESSION['counter'] ) ) { // Đếm mỗi lần truy cập $_SESSION['counter'] += 1; } else { // Lần đầu truy cập $_SESSION['counter'] = 1; } $msg = "<p>Bạn là vào truy cập ". $_SESSION['counter'] . ' lần vào trang</p>'; echo $msg; ?> Bạn là vào truy cập 1 lần vào trang Trong đoạn code trên có sử dụng Khi có chạy Session thì dữ liệu trả về cho trình duyệt nó gửi kèm một mẩu tin nhỏ ở phần Header, dữ liệu này là Cookie liên quan đến ID của Session, để request trình duyệt lưu trữ, request tiếp theo nó sẽ gửi dữ liệu này đến Server và PHP sẽ phục hồi Session theo Cookie này. Hủy SessionBạn có thể hủy một biến, giá trị ... đã lưu vào Session:
Từ nắm vững Cookie và Session là cơ sở để xây dựng lên các hệ thống như cho phép user đăng nhập vào website, xây dựng ứng dụng giỏ hàng đặt hàng ... Source code: session_cookie (Git), hoặc tải rphp-sessioncookie |