13/09/2018, 15:00

So sánh Session và Cookies

Là phiên làm việc để lưu trữ 1 biến và biến đó có thể tồn tại từ trang này đến trang khác(cùng tên miền) Session được lưu trữ trên server Thời gian sống của nó sẽ kết thúc khi ta xoá nó hoặc hết tuổi thọ (tắt trình duyệt) Cách làm việc của session Khi Session được tạo ra, php tạo 1 định ...

  • Là phiên làm việc để lưu trữ 1 biến và biến đó có thể tồn tại từ trang này đến trang khác(cùng tên miền)
  • Session được lưu trữ trên server
  • Thời gian sống của nó sẽ kết thúc khi ta xoá nó hoặc hết tuổi thọ (tắt trình duyệt)

Cách làm việc của session

  • Khi Session được tạo ra, php tạo 1 định danh duy nhất cho session đó, định danh này là chuỗi ký tự ngẫu nhiên của 32 số hexa.
    • Ví dụ như: 3c7foj34c3jj973hjkop2fc937e3443
  • Khi đó 1 cookies được gọi là PHPSESSID sẽ được tự động gửi đến máy người dùng để lưu trữ chuỗi định danh session duy nhất ở trên
  • Một file được tự động tạo và lưu trên server trong 1 thư mục tạm thời đã được chỉ định và nó mang tên của định danh duy nhất và được bắt đầu bằng sess_.
    • Ví dụ: sess_3c7foj34c3jj973hjkop2fc937e3443
    • Hình ảnh minh hoạ:

Sử dụng session

  • Để sử dụng session trước tiên chúng ta cần sử dụng hàm session_start();
  • Khởi tạo 1 session trong PHP ta dùng:
        $_SESSION['session_name'] = 'session_value';
    
  • Sử dụng session:
        $_SESSION['session_name'];
    
  • Huỷ 1 session:
        unset($_SESSION['session_name']);
    
  • Xoá bỏ hết tất cả session:
        session_destroy();
    
  • Cookies là 1 phần dữ liệu được lưu trên máy khách, mỗi khi máy khách yêu cầu đến máy chủ nào đó, thì nó sẽ gửi phần dữ liệu được lưu trong cookies tương ứng tới máy chủ đó
  • Một cookies có độ lớn giới hạn bởi trình duyệt là 4kb
  • Browsers giới hạn số cookies lưu trữ trên 1 server là khoảng 50 cookies

Cookie có một số thông số như sau:

  • setcookie(name, value, time, path, domain, security);
    • name: tên của biến cookies (bắt buộc)
    • value: value của cookies
    • time: thời gian sống của cookies
    • path: thư mục mà cookies có hiệu lực
    • domain: tên miền mà cookies có hiệu lực
    • security: Nếu là 1 thì cookies chỉ được gửi bằng đường dẫn an toàn HTTPS, nếu là 0 thì cookies có thể gửi bằng HTTP thông thường

Xác định người dùng với cookies

  • Với Cookies, có 3 bước để xác định người dùng cũ:
    • Server gửi 1 tập tin bao gồm thông tin của người dung(tên, tuổi, ....)
    • Trình duyệt sẽ lưu lại trên local để sử dụng trong tương lai
    • Khi trình duyệt gửi bất cứ request nào đến server thì nó sẽ gửi luôn thông tin của cookies đó lên server và server đó sẽ sử dụng thông tin đó để xác thực người dùng này
    • Hình ảnh minh hoạ:

Thao tác với cookies

  • Sử dụng Cookies:
        $_COOKIE['cookie_name'];
    
  • Để xoá 1 cookies ta chỉ cần set thời gian sống của nó sang giá trị âm lớn hơn hoặc bằng giá trị sống lúc ban đầu thiết lập:
    Ví dụ:
        setcookie("username", "", time()-3600);
    
Session Cookies
Vị trí lưu Lưu trên server Lưu trên trình duyệt của client
Bảo mật Session lưu trên server nên bảo mật hơn Cookie lưu dưới client nên kém bảo mật hơn
Giới hạn Lưu không giới hạn Lưu có giới hạn
Tốc độ Chậm hơn Nhanh hơn
  • Session có thêm 1 ưu điểm nữa là: Nếu trình duyệt từ chối lưu trữ cookies chúng ta vẫn có thể truyền session từ trang này sang trang khác thông qua url: ví dụ: test.php?session=abc
    Vậy với session và cookies thì ta nên sử dụng gì?

  • Câu trả lời là còn tuỳ vào ý đồ của lập trình viên.

    • Nếu cần lưu những thông tin bảo mật thì nên dùng session

    • Nếu muốn gửi dữ liệu nhanh và không cần bảo mật cao thì nên dùng cookies


  • Rất cám ơn anh chị và các bạn đã đọc và rất mong giúp các bạn biết thêm về session và cookies.

    Xin chân thành cảm ơn!
0