Seesion và Cookies là gì? thường được sử dụng làm gì?
Session:
- Session là một cơ chế lưu trữ thông tin trạng thái trên máy chủ. Mỗi phiên làm việc của người dùng sẽ có một session tương ứng được tạo và duy trì trên máy chủ.
- Session được sử dụng để lưu trữ thông tin như thông tin đăng nhập của người dùng, giỏ hàng trong một cửa hàng trực tuyến, cài đặt ngôn ngữ, v.v.
- Thông tin session được lưu trữ trên máy chủ, và một ID session duy nhất được gửi đến trình duyệt của người dùng thông qua cookie hoặc URL.
- Session thường được sử dụng cho các ứng dụng cần bảo mật cao vì thông tin session không được lưu trữ trên máy khách và không thể thay đổi từ phía người dùng.
Cookies:
- Cookies là các dữ liệu nhỏ được lưu trữ trên máy tính của người dùng thông qua trình duyệt web.
- Cookies thường được sử dụng để theo dõi và nhận biết người dùng, lưu trữ thông tin trạng thái như ngôn ngữ hoặc cài đặt trang web, giữ người dùng đăng nhập, theo dõi hoạt động trên trang web, và cung cấp quảng cáo cá nhân hóa.
- Có hai loại cookies: cookies phiên và cookies vĩnh viễn. Cookies phiên tồn tại chỉ trong phiên làm việc hiện tại của trình duyệt và sẽ bị xóa khi trình duyệt đóng. Cookies vĩnh viễn tồn tại trên máy tính của người dùng cho đến khi hết hạn hoặc được xóa bởi người dùng hoặc máy chủ.
Ví dụ đơn giản về seesion và cookies
Ví dụ về Session:
<?php
// Bắt đầu session
session_start();
// Thiết lập giá trị cho session
$_SESSION['username'] = 'nguyen_van_a';
echo "Session đã được thiết lập.";
?>
<?php
// Bắt đầu session
session_start();
// Kiểm tra xem session đã được thiết lập chưa
if(isset($_SESSION['username'])) {
echo "Xin chào, " . $_SESSION['username'] . "!";
} else {
echo "Bạn chưa đăng nhập.";
}
?>
Ví dụ về Cookies:
<?php
// Thiết lập cookie với tên là "user" và giá trị là "nguyen_van_b"
setcookie("user", "nguyen_van_b", time() + (86400 * 30), "/"); // 86400 = 1 ngày
echo "Cookie đã được thiết lập.";
?>
<?php
// Kiểm tra xem cookie có tồn tại không
if(isset($_COOKIE['user'])) {
echo "Xin chào, " . $_COOKIE['user'] . "!";
} else {
echo "Chào mừng bạn đến với trang web!";
}
?>
Thời gian sống của 1 seesion là bao lâu và thiết lập thời gian cho 1 seesion
session_set_cookie_params()
hoặc thông qua cấu hình trong tệp php.ini.Sử dụng session_set_cookie_params():
// Bắt đầu session
session_start();
// Thiết lập thời gian của session là 1 giờ (3600 giây)
session_set_cookie_params(3600);
// Thiết lập giá trị cho session
$_SESSION['username'] = 'nguyen_van_a';
Cấu hình trong tệp php.ini:
Đóng phiên làm việc của Session:
// Bắt đầu session
session_start();
// Xóa toàn bộ session
session_destroy();
Đóng phiên làm việc của Cookies:
// Thiết lập thời gian sống của cookie là 1 giây trước
setcookie("user", "", time() - 1, "/");
Với các trang web được làm bởi cookies có thay thế bằng seesion được không?
Có thể thay thế giữa seesion và cookies được. Ví dụ bạn có thể sửa đổi từ cookies sang session để lưu trữ thông tin của giỏ hàng và đơn hàng trong các trang cart.php, add_to_cart.php, process_order.php, remove_product.php, checkout.php, và products.php. Sử dụng session thay vì cookies có một số ưu điểm như sau:
- Bảo mật cao hơn: Thông tin được lưu trữ trong session không được lưu trữ trên máy khách (trình duyệt), điều này làm giảm nguy cơ về bảo mật so với việc lưu trữ thông tin trong cookies.
- Không phụ thuộc vào trình duyệt: Session không phụ thuộc vào việc người dùng có bật cookie hay không. Do đó, không có rủi ro nào về việc mất dữ liệu nếu người dùng tắt cookies trên trình duyệt của họ.
- Dễ dàng quản lý: Session được quản lý bởi máy chủ, điều này làm cho việc thêm, sửa đổi hoặc xóa dữ liệu session trở nên dễ dàng hơn so với cookies.
Dưới đây là cách thực hiện sửa đổi từ cookies sang session:
- Thay vì sử dụng setcookie() để lưu trữ thông tin giỏ hàng và đơn hàng, bạn sẽ sử dụng $_SESSION để thiết lập và truy cập các biến session.
- Sử dụng $_SESSION[‘key’] để lưu trữ thông tin và unset($_SESSION[‘key’]) để xóa thông tin từ session.
- Đảm bảo rằng bạn đã bắt đầu session bằng cách sử dụng session_start() ở đầu của mỗi trang sử dụng session.
Ảnh dưới đây là một ví dụ cơ bản về cách sử dụng session thay vì cookies trong các trang liên quan đến giỏ hàng và đơn hàng.
Một vài ví dụ về Seesion và Cookies:
Đếm số lượt truy cập website bằng seesion
Dưới đây là một ví dụ đơn giản về cách sử dụng session để đếm số lượt truy cập trang web:
<?php
session_start();
// Kiểm tra xem session 'visits' đã được thiết lập chưa
if(isset($_SESSION['visits'])) {
// Nếu session đã tồn tại, tăng giá trị lượt truy cập lên 1
$_SESSION['visits']++;
} else {
// Nếu session chưa tồn tại, thiết lập giá trị lượt truy cập là 1
$_SESSION['visits'] = 1;
}
// Hiển thị số lượt truy cập
echo "Số lượt truy cập: " . $_SESSION['visits'];
?>
Trong ví dụ này:
- Chúng ta bắt đầu session bằng cách sử dụng session_start().
- Chúng ta kiểm tra xem session ‘visits’ đã được thiết lập hay chưa. Nếu đã tồn tại, chúng ta tăng giá trị lượt truy cập lên 1. Nếu chưa tồn tại, chúng ta thiết lập giá trị lượt truy cập là 1.
- Sau đó, chúng ta hiển thị số lượt truy cập bằng cách truy cập vào session ‘visits’.
Mỗi khi người dùng truy cập trang web, số lượng lượt truy cập sẽ được tăng lên. Session ‘visits’ sẽ lưu trữ thông tin này trong suốt phiên làm việc của người dùng.
Sử dụng Cookies để tạo trang thông tin bán hàng
Trong ví dụ này, sẽ sử dụng Cookies để tạo trang cart.php, add_to_cart.php, process_order.php, remove_product.php, checkout.php, và products.php ở dạng đơn giản. Xem chi tiết về sử dụng cookies để tạo trang bán hàng tại đây.
Sử dụng Session để tạo trang đăng nhập và đăng xuất
Trong ví dụ này, sẽ sử dụng Session để tạo trang đăng nhập, nếu kiểm tra thông tin đăng nhập là đúng và chuyển đến trang tổng quan khi đăng nhập thành công. Xem chi tiết về sử dụng session để tạo trang đăng nhập tại đây.
Tóm lại, Session và Cookies là hai công cụ quan trọng trong phát triển web để lưu trữ thông tin trạng thái và theo dõi người dùng trên các trang web. Mỗi loại có các ưu điểm và ứng dụng riêng, và việc lựa chọn giữa Session và Cookies phụ thuộc vào yêu cầu cụ thể của ứng dụng và bảo mật.