24 Mar

Session và cookie trong PHP 5.00/5 (100.00%) 1 vote

Khi một client gửi yêu cầu tới server, thì có một tiến trình riêng rẽ tạo ra để giải quyết yêu cầu này, tuy nhiên khi giải quyết xong thì kết quả sẽ trả về trình duyệt và tiến trình này sẽ ngay lập tức hủy bỏ.
Vậy làm sao khi client yêu cầu 1 hay nhiều lần mà server lại biết chính xác là client đó yêu cầu?. Chính nhờ sự lưu trữ thông tin tạm thời của session và cookie.. Một ứng dụng thực tế của session và cookie đó là giỏ hàng, khi một khách hàng mua sản phẩm của trang này sau đó bấm sang một trang khác thì sản phẩm không bị mất đi, và biết được sản phẩm này của khách hàng này mua chứ không phải khách khác. Hôm nay chúng ta đi tìm hiểu bản chất và sự liên quan giữa session và cookie.

1. Tìm hiểu session

  • Khái niệm

    Sesson là một phiên làm việc kể từ khi clinet truy cập vào website cho đến khi đóng trình duyệt hay abandon(kết thúc) phiên.
    Ví dụ:
    Bước 1: Bạn tạo ra 2 file php, ở đây mình đặt 1.php và 2.php
    Bước 2:Viết code cho 1.php

    Bước 3: file 2.php ta viết code gọi biến sesion

    Trước tiên bạn chạy file 1.php sẽ được chuyển hướng tới file 2.php
    Ta thấy in ra được giá trị Xin chào!. Bây giờ bạn tắt tab của file 2.php lại không file đóng nguyên trình duyệt nha, sau đó bạn vào phần mềm thiết kế web không chạy file 1.php nữa mà chạy trực tiếp file 2.php bạn sẽ thấy giá trị Xin chào!. Bạn thấy được chức năng session lưu giá trị lại không. Giờ ta đóng trình duyệt luôn rồi lại vô phần mềm viết code chạy file 2.php lên sẽ có thông báo lỗi. Tại vì phiên làm việc trước đó đã bị hủy.

  • Cách thức hoạt động

    Bước 1: Client gửi yêu cầu server
    Bước 2:PHP kiểm tra có session ID(định danh phiên). Nếu chưa PHP sẽ tạo ra một session mới trên server và gán cho nói một session ID.
    Mỗi phiên làm việc chỉ có một session ID, không bao giờ trùng chính nhờ vậy mà server nhận biết được client nào đang yêu cầu. Lúc này ứng dụng có thể lưu dữ liệu và session
    Bước 3:Session ID sẽ được gửi về trình duyệt

  • Khởi động session

    Trước khi làm việc với session cần phải khởi động session
    Hàm khởi động session phải đặt phía trên thẻ HTML
    Cú pháp:

    Chú ý: Khi file có sử dụng biến $_SESSION thì phải khởi động session_start() lên đầu tiên.

  • Gán và lấy giá trị biến session

    Khi khởi tạo xong phiên, ta sẽ sử dụng biến toàn cục $_SESSION để thiết lập và lấy dữ liệu của người dùng cho phiên. Biến này là một mảng liên kết.
    Lưu ý: Biến này là toàn cục và gọi được ở tất cả các trang trong một website

     

  • Hủy biến session

    Hủy một biến session
    Khi không cần đến biến session nào thì bạn xóa session đó đi bằng các dùng hàm unset()
    Cú pháp: unset($_SESSION[“ten bien session”])
    Hủy toàn bộ biến session
    Khi không còn sử dụng các biến session nữa muốn xóa hết thì ta dùng hàm session_destroy()
    Cú pháp: session_destroy()
    Lưu ý: Khi sử dụng session_destroy() vì có thể xóa hết các session hệ thống

  • Tạo form đăng ký đăng nhập

    Để các bạn hiểu rõ hơn về session thì chúng ta sẽ làm một bài tập nhỏ về đăng ký và đăng nhập nhưng website nào cũng cần.
    Viết và xử lý form đăng ký
    Bước 1: Bạn vào phpmyadmin tạo một database users và tạo một bảng thanhviencsdlusers

    Bước 2: Tạo file connect.php để kết nối với cơ sở dữ liệu

    Các bạn dùng mysqli thì thay đổi lại một số thông số cho phù hợp nhé
    Bước 3: Tạo form đăng ký có sử dụng ajax để kiểm trả tên đăng nhập, ta lưu tên file dangky.php, file kttendangky.php  và tải thư viện jquery tại đây.dangky

    Đoạn script được viết chung vào file form đăng ký

    file kttendangky.php ta sẽ kiểm tra tên đăng nhập

    Bước 4: Viết code trong file xử lý insert thành viên vào hợp lệ vào cơ sở dữ liệu

    Bạn cũng có thể xử lý  tên đăng nhập và email số điện thoại bằng php form trên mình chỉ xử lý vài dữ liệu bạn có thể làm hoàn thiện hơn cho bài của mình.
    Viết và xử lý form đăng nhập
    Bước 1: Bạn tạo một form đăng nhập lưu là dangnhap.phpdangnhapsession

    Bước 2: Bạn tạo một trang admin đơn giản lưu là trangchu.phptrangchu

     

2. Tìm hiểu cookie

  • Khái niệm

    Cookie là một mẫu tin nhỏ, có cấu trúc, dạng text lưu ở máy client khi truy cập một website. Được sử dụng để xác định thông tin của người dùng.
    Mỗi khi máy tính này yêu cầu một trang tới trình duyệt nó cũng sẽ gửi theo cookie. Với PHP ta có thẻ tạo và sử dụng giá trị của biến cookie.
    Cookie không bị mật đi khi đóng trình duyệt giống như session mà sẽ mất đi khi thời gian thiết lập kết thúc.Phần lớn công dụng của cookie là để lưu giữ trạng thái làm việc của session.
    Lưu ý :Lưu trữ dữ liệu trên cookie không được an toan vì dữ liệu trong cookie có thể thấy và thay đổi được trên trình duyệt

  • Khai báo cookie

    Cú pháp: setcookie(name, value, expire[path,domain])
    Trong đó
    name: tên biến cookie
    value: giá trị của cookie
    expire: thời gian giới hạn dành cho cookie- đơn vị tính giây. Nếu thời gian này không được thiết lập thì biến cookie này sẽ còn hiệu lực cho đến khi xóa cookie
    path:đường dẫn
    domain: tên miền của website
    Lưu ý: Phải đặt setcookie() trước thẻ html

    Ở trên mình nói dữ liệu cookie có thể thấy trên trình duyệt, mình dùng chorme các trình duyệt khác làm tương tự, bạn bấm vàoinfo
    Đây là thông tin ta khởi tạo cookie
    cookie

  • Sử dụng cookie

    Tất cả các cookie được lưu trữ vào $_COOKIE[], $_COOKIE[] là một biến mảng toàn cục giống như $_SESSION[], trước khi sử dụng nên dùng hàm isset() để kiểm tra một biến đã được khai bó, khởi gán chưa.
    Cú pháp: $tenbien=$_COOKIE[“ten bien cookie”];
    Ví dụ: Bạn tạo 2 file cookie.php và cookie1.php
    Bước 1 Viết code cho file cookie.php

    Bước 2  Viết code cho cookie1.php

     

  • Hủy biến cookie

    Khi muốn hủy ta cần xem lại thời gian thiết lập của biến cookie này
    Ta dùng hàm setcookie() để thiêt lập lại thời gian và gán giá trị rỗng
    Cú pháp:  setcookie(“tenbiencookie”,””,time()-thời gian giới hạn)
    Trước khi hủy cookiesetcookie
    Sau khi hủy thì đã thiết lập lại lại thời gian chếtsetcookie2

3. Lời kết

Hôm nay mình đã giới thiệu sơ lược về khái niệm và cách dùng cookie và session, cái bài ví dụ trên chỉ tính chất  giới thiệu giúp các bạn hiểu được cơ bản, và các bạn có thể tìm hiểu nâng cao hơn. Chúc bạn học tốt và vui vẻ.