PDA

View Full Version : [PHP] Khái niệm sesson và so với cookie , dùng gì tốt hơn ?



HTT.itvn
10-11-2010, 08:10 PM
Bắt đầu từ đây mình sẽ hướng dẫn các bạn làm một website bằng PHP kết hợp với HTML , CSS và Java Scripts . Bắt đầu từ PHP , các bạn phải nắm rõ được session của PHP .

Session là gì ?

Session là một khá niệm chỉ kết nối end to end giữa client và server. Sau khi liên kết thành công sẽ tạo 1 session (phiên làm việc) riêng.
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.

Hoạt động thế nào ?

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 .

So với cookie thì cái nào tốt hơn ?

Do cookie lưu thông tin cá nhân trên máy khách nên hầu hết người dùng đều không muốn, đó là lý do vì sao người dùng có thể vô hiệu hóa chức năng chấp nhận cookie trong cấu hình browser, ứng dụng sẽ khó sử lý trong trường hợp này. Trong khi đó, session lưu thông tin trên máy chủ, chính vì vậy ứng dụng sẽ sử lý trong trường hợp này.

Sử dụng session như thế nào ?

Đầu tiên , bạn phải khai báo chạy session .


<?php
session_start();
?>


Dòng khai báo này luôn nằm phía trên cùng so với các mã nguồn khác như HTML và chỉ được sử dụng 1 lần trong mỗi trang của nó . Tuy nhiên , nếu bạn làm việc ở môi trường khác như HTML thì nó vẫn chạy nhưng lại xuất ra thông báo lỗi hay kí tự thừa ( nếu dùng host không hỗ trợ mạnh về PHP & MySQL thì bạn có thể khai báo như sau :


<?php
@session_start();
?>


Lưu trữ của biến session :


<?php
session_start();
$_SESSION['views'] = 1;
echo "Pageviews = ". $_SESSION['views'];
?>


$_SESSION['views'] = 1; : Lưu views
echo "Pageviews = ". $_SESSION['views'];: Hiển thị views


<?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 trang 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.


Mặt dù dữ liệu trong session chỉ mang tính chất tạm thời và nó không 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 thành 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
session_start();
if(isset($_SESSION['cart']))
unset($_SESSION['cart']);
?>


Ngoài ra bạn có thể dùng session_destroy để xóa session :


<?php
session_start();
session_destroy();
?>


session_destroy lần 1 kích hoạt thì nó sẽ xóa session ngay gần nó nhất , lần thứ 2 nó xóa tất cả session .

Như vậy các bạn đã hiểu sơ qua về session , phần sau mình sẽ hướng dẫn tạo cơ sở dữ liệu và kết nối cơ sở dữ liệu .

laptopshop_N1987
10-12-2010, 09:17 AM
Hic ! mình gặp lỗi của thẻ div khi mình chạy firefox và internet Explorer . Nếu chạy internet Explorer thì nó bình thường còn chạy firefox thì hình sang một bên và chữ sang một bên ! không biết làm sao bây giờ nữa ??? ai biết cách thì share cho mình với !!!