Session là một khái niệm cơ bản và được sử dụng phổ biến trong lập trình các web có kết nối với cơ sở dữ liệu database. Đặc biệt là các chức năng như đăng xuất, đăng nhập, người dùng sẽ khó có thể thực hiện được nếu như không có session. Vậy session là gì? Tại sao nên sử dụng session? Hãy cùng Vietnix tìm hiểu chi tiết trong bài viết dưới đây.
Session là gì?
Session là một khái niệm cực kỳ phổ biến được dùng nhiều trong lập trình website có kết nối với database để nói về một phiên làm việc. Session có vai trò vô cùng quan trọng trong việc giúp người dùng thực hiện chức năng như đăng nhập và đăng xuất vào bất kỳ website nào đó. Nếu không có session thì bạn không thể tiếp cận được trang web.
Tại sao nên sử dụng Session?
Trước khi trả lời cho câu hỏi trên, Vietnix sẽ lấy một ví dụ để bạn có thể hiểu rõ hơn. Nếu bạn đang có một trang web bán hàng thì session có thể giúp bạn nắm được các thông tin như:
- Phân biệt dễ dàng được đâu là hệ thống máy của bạn và khách. Từ đó biết được lượng truy cập từ các máy tính là bao nhiêu.
- Bạn có thể biết được đâu là những sản phẩm khách hàng quan tâm và thêm vào giỏ hàng nhiều nhất. Vì nhiều trường hợp khách chỉ thêm vào giỏ hàng nhưng lại không tiến hành thanh toán sản phẩm đó. Nhờ đó, bạn có thể thống kê và giải thích được hành vi mua hàng của khách hàng. Như việc họ có ý định mua hoặc bị thu hút bởi sản phẩm nào đó, nhưng lại vì một số lý do nào đó mà họ chưa đưa ra quyết định mua ngay. Chính vì thế, việc cho phép khách giữ các sản phẩm trong giỏ hàng sẽ giúp tăng trải nghiệm khách hàng và doanh thu hơn.
Qua ví dụ, trên bạn có thể nhận thấy, session đóng vai trò quan trọng như thế nào đối với một website bán hàng.
Session PHP là gì?
Session PHP bắt đầu hoạt động sau khi bạn gọi hàm session_start()
. Đây là hàm phục hồi dữ liệu SESSION nếu đã có. Hoặc nếu chưa, nó sẽ tạo ra một SESSION mới cho bạn.
>> Xem thêm: PHP là gì? Những việc làm của một lập trình viên ngôn ngữ PHP
Để sử dụng, Vietnix khuyên bạn nên gọi hàm này ngay khi bắt đầu của page. Một cách khác mà không cần quan tâm đến gọi session_start()
là thiết lập cho PHP tự động chạy hàm này. Bằng cách nhập session.auto_start = 1
trong php.ini
.
Khi hệ thống session trong PHP được chạy, nó sẽ mặc định gửi về trình duyệt một cookie với tiền tố PHPSESSID. Tất nhiên là bạn có thể thay đổi tiền tố này trong php.ini.
Cách sử dụng Session
Các tạo ra ra session trong PHP
Để có thể tạo ra phiên đầu tiên, bạn cần tạo PHP function session_start
. 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, bạn có thể sử dụng một session để thực hiện điều đó.
Đoạn mã dưới đây cho Để có thể hiểu được cách tạo ra và lấy giá trị từ session, bạn có thể xem đoạn mã dưới đây:
<?php
session_start(); //start the PHP_session function
if(isset($_SESSION['page_count']))
{
$_SESSION['page_count'] += 1
}
else
{
$_SESSION['page_count'] = 1;
}
echo 'You are visitor number ' . $_SESSION['page_count'];
?>
Lưu trữ và truy cập các dữ liệu trên Session
Bạn có thể lưu trữ tất cả dữ liệu Session dưới dạng các cặp khóa – giá trị trong mảng siêu toàn cầu $_SESSION[]
. Dữ liệu khi được lưu trữ có thể truy cập trong suốt thời gian tồn tại. Hãy xem xét tập lệnh dưới đây, tập lệnh này tạo một session mới và đăng ký 2 biến:
<?php
// Starting session
session_start();
// Storing session data
$_SESSION["firstname"] = "Viet";
$_SESSION["lastname"] = "Nix";
?>
Để truy cập dữ liệu Session mà bạn đã đặt trên ví dụ từ bất kỳ trang nào khác trên cùng một miền web. Bạn chỉ cần tạo lại Session bằng cách gọi session_start()
, sau đó chuyển khóa tương ứng vào mảng kết hợp $_SESSION
.
<?php
// Starting session
session_start();
// Accessing session data
echo 'Xin chào, ' . $_SESSION["firstname"] . ' ' . $_SESSION["lastname"];
?>
Mã PHP được tạo ra kết quả sau: Xin chào, Vietnix.
Hủy Session trong PHP
Session PHP được hủy bằng hàm session_destroy()
. Hàm không cần bất kỳ tham số nào và một lời gọi đơn có thể hủy tất cả các biến. Nếu bạn muốn hủy một biến session đơn, hãy sử dụng hàm unset()
để hủy thiết lập một biến.
<?php
unset($_SESSION['counter']);
?>
- Hủy thiết lập một biến session đơn.
- Hủy tất cả biến session.
<?php
session_destroy();
?>
Cookie là gì?
Cookies là những tệp được trang web người dùng truy cập tạo nên giúp trải nghiệm trực tuyến của bạn dễ dàng hơn bằng cách lưu thông tin. Với Cookies, các trang web có thể duy trì đăng nhập của bạn, ghi nhớ tùy chọn và cung cấp nội dung phù hợp với vị trí của người dùng. Chính vì đó, Cookies thường được sử dụng để lưu lại thông tin người dùng trên trình duyệt web.
Cookie có 2 loại, bao gồm:
- Cookies của bên thứ nhất: Đây là trang web do người dùng truy cập tạo ra và được hiển thị trong thanh địa chỉ.
- Cookies của bên thứ ba: Được tạo nên từ trang web. Đây là những trang web sở hữu một số nội dung như quảng cáo hoặc hình ảnh mà người dùng thấy trên trang truy cập.
Cách sử dụng Cookie
Khi người dùng truy cập web, trình duyệt hay ứng dụng thì server sẽ gửi về một cookie lưu trên ổ cứng của máy tính. Cookie sẽ ghi lại các thao tác hoạt động như việc đăng nhập, mật khẩu, các tùy chọn,… tại web, web app hoặc ứng dụng. Vào lần ghé thăm tới, trình duyệt sẽ gửi lên server tệp cookie trước đó để phân tích các hoạt động đã được thực hiện. Sau đó, server sẽ trả về tệp cookie mới bao gồm các thông tin cũ trong cookie đã lưu trước đó và các thông tin mới trong lần thao tác này.
Vòng lặp cứ tiếp tục thực hiện cho tới khi hết thời gian quy định mà người tạo cookie đặt ra. Hoặc khi người dùng xóa bằng các công cụ dọn rác trình duyệt.
Giá trị của cookie sẽ không được tiết lộ ra ngoài, vì vậy chỉ có những web, ứng dụng chứa Cookie mới có thể xem được tập tin này. Thông thường, cookie sẽ có khoảng thời gian hoạt động lưu trữ nhất định. Tuy nhiên hiện nay, ở hầu Cookie đều tồn tại vĩnh viễn trong ổ cứng máy tính hoặc có thời gian tồn tại rất rất lâu. Với mục đích theo dõi, thu thập dữ liệu của người dùng.
Phân biệt Session và Cookie
Sau khi đã tìm hiểu về khái niệm Session và Cookie, chắc hẳn bạn vẫn đang thắc mắc làm sao để phân biệt Session và Cookie, chúng có điểm giống và khác gì phải không?
Về khái niệm, Cookie cũng có nét tương đồng với khái niệm Session là gì. Tuy nhiên, giữa chúng có ba điểm khác biệt nổi bật giữa phải kể đến như sau:
- Nơi lưu trữ: Session không được lưu trữ trên trình duyệt, còn Cookie được lưu trữ.
- Nơi lưu trữ dữ liệu: Dữ liệu Session được lưu trữ ở phía server, còn dữ liệu Cookie được lưu trữ ở phía client.
- Tính linh hoạt: Dữ liệu session không dễ dàng được sửa đổi vì chúng được lưu trữ ở phía máy chủ. Trong khi đó, dữ liệu Cookie sẽ dễ dàng hơn vì được lưu trữ ở phía client.
Sau khi lập trình viên đã tạo ra được một tập tin Session trên máy chủ để có thể lưu trữ dữ liệu tạm thời của người dùng. Thì bạn vẫn phải phân biệt được Session nào của người dùng nào. Để có thể làm được việc này, đối với mỗi một session thì cần phải tạo ra được 1 cookie trên trình duyệt của người dùng tương ứng với nó.
Tuy cookie có thể tạo ra mà không bắt buộc phải tạo một session trên máy chủ tương ứng với nó. Tuy nhiên, mỗi session tạo ra thì bắt buộc cần phải có một cookie tương ứng với nó để xác định. Nhờ có cookie mà chúng ta có thể phân biệt được session khác nhau của các trình duyệt khác nhau.
Câu hỏi thường gặp
Session và Cookie trong PHP là gì?
Cookie lưu trữ dữ liệu trong tệp văn bản. Session lưu dữ liệu ở dạng mã hóa. Cookie được lưu trữ trên một dữ liệu hạn chế. Session lưu trữ dữ liệu không giới hạn .
Trong PHP, để lấy dữ liệu từ Cookie, $ _COOKIES sẽ sử dụng biến global variable
Tại sao chúng ta cần đến Session trong PHP?
Session là một cách đơn giản để lưu trữ dữ liệu cho người dùng cá nhân dựa trên một Session ID duy nhất .
Điều này có thể được sử dụng để duy trì thông tin trạng thái giữa các yêu cầu trang.
Session ID thường được gửi đến trình duyệt thông qua Session cookie và ID được sử dụng để truy xuất dữ liệu Session hiện có.
Lời kết
Bên trên là những thông tin và giải đáp về thắc mắc Session là gì, tại sao bạn nên sử dụng Session, phân biệt Session và Cookie,… Hy vọng, Vietnix đã mang đến bạn nhiều thông tin hữu ích. Đừng quên truy cập và theo dõi thêm nhiều bài viết chia sẻ kiến thức khác tại Vietnix nhé.