|
Điều
này gây khó khăn cho một số công việc như là mua hàng ( shopping carts)
- những thứ cần thiết dữ liệu ( sản phẩm người dùng đã chọn) ghi nhớ từ
trang này sang trang khác
Khái niệm về Sessions trong PHP
PHP
session giải quyết vấn đề này bằng cách cho phép lưu trữ dữ liệu của
người dùng trên server để sử dụng về sau ( như username, món hàng
...)Tuy nhiên những thông tin session này chỉ là tạm thời và thường bị
xoá đi ngay khi người dùng rời khỏi trang web đã dùng session.
Chính
vì tính tạm thời này mà nếu bứng dụng của bạn cần thiết lưu trữ dữ liệu
1 cách lâu dài , bạn hãy dùng các cách lưu trữ khác như là csdl Mysql
Session
hoạt động bằng cách tạo 1 chuỗi unique (UID) cho từng vistore và chứa
thông tin dựa trên ID đó. việc này sẽ giúp tránh tình trạng dữ liệu bị
xung đột giữa các user
Lưu ý: Nếu bạn vẫn còn ít kinh nghiệm về việc
dùng session trong ứng dụng thì ko nên dùng nó trên các website đòi hỏi
bảo mật cao vì rất dễ gây ra các lỗ hổng bảo mật nguy hiểm
Bắt đầu với PHP Session
Việc
đầu tiên trước khi bạn làm bất cứ việc gì với session là bạn phải chạy
nó trước, và nó dc đặt ngay trên đầu trong code của bạn, trước khi HTML
dc xuất ra
Dưới đây là 1 ví dụ đơn giản về việc tạo session trong PHP
PHP Code:
<?php
session_start(); // start up your PHP session!
?>
đoạn
mã ngắn trên sẽ đăng kí cho ng dùng 1 session ở trên Server, cho phép
bạn lưu thông thông tin của ng dùng và đưa nó vào UID cho session của
user đó
Lưu giá trị của session
Khi
bạn muốn lưu trữ 1 thông tin nào đó ở session, dc dùng như 1 mảng kết
hợp. đó là nơi bạn lưu và lấy dữ liệu ra. sau đây là 1 ví dụ đơn giản
cho việc đơn giản này ^^
PHP Code:
out
output:
Pageviews = 1
trong ví dụ này, chúng ta đã học dc cách lưu trữ của biến session thông qua mảng kết hợp $_SESSION và cũng như cách lấy nó ra
Sử dụng SESSION
Bây
giờ chúng ta đã biết cách lưu và lấy dử liệu từ biến $_SESSION, mọi
chuyện thật dễ dàng phải ko, và tiếp theo ta sẽ tìm hiểu 1 vài hàm liên
qua đến session.
Khi bạn tạo 1 biến và lưu nó vào 1 session, bạn
có lẽ muốn dùng nó sau này, tuy nhiên, trước khi bạn dùng biến session
đó, bạn nên kiểm tra nó đã dc khởi tạo hay chưa.
Thao tác này được thực hiện thông qua hàm isset, isset là 1 hàm kiểm tra bất kì biến nào và nó đã dc khởi tạo và gán giá trị hay chưa.
Qua
nhưng ví dụ trên, chúng ta có thể tạo 1 bộ đếm đơn giản cho 1 trang
bằng cách sử dùng isset để kiểm tra nó đa dc tạo hay chưa và gán giá
trị cho nó. Đây là 1 ví dụ:
PHP Code:
<?php
session_start();
if(isset($_SESSION['views']))
$_SESSION['views'] = $_SESSION['views']+ 1;
else
$_SESSION['views'] = 1;
echo "views = ". $_SESSION['views'];
?>
Trong
lần chạy đầu tiền của trangm câu lệnh If sẽ trả về false vì chưa có
biến session [views] nào được tạo cả. tuy nhiên, khi bạn refresh lại
trang đó, thì câu lệnh if sẽ trả về giá trị true và biến đếm counter sẽ
tăng lên 1 đơn vị. và sẽ tăng cho mỗi lần chạy của trang đó lên 1.
Xóa và Hủy Session
Mặt
dù dữ liệu trong session chỉ mang tính chất tạm thời và nó ko yêu cầu
phải xóa sau khi sử dụng, nhưng có thể trong trường hợp nào đó bạn phải
xóa dữ liệu của nó cho mục đích của bạn.
Hãy tưởng tượng bạn đang
điều hành 1 doanh nghiệp online, và 1 thanh viên đang dùng website của
bạn mua 1 món hàng. Thành viên đó đã hoàn tất việc mua hàng (phiên giao
dịch) trên website, do đó , bạn phải xóa mọi thứ trong session sau khi
việc này hoàn tất.
PHP Code:
<?php
session_start();
if(isset($_SESSION['cart']))
unset($_SESSION['cart']);
?>
Bạn cũng có thể hủy hoàn toàn các session bằng cách gọi hàng session_destroy
PHP Code:
<?php
session_start();
session_destroy();
?>
Destroy sẽ reset session của bạn, do đó không nên gọi hàm này trước khi bạn còn muốn thao tác lên dữ liệu chứa trong session đó.
|