Bài 25: Session và cookie trong PHP

SessionCookie  dùng để lưu trữ những dữ liệu tạm thời. Hệ thống có thể đưa ra những quyết định về quyền hạn hoặc là những tùy chọn riêng tư. Cả hai tuy có chung chức năng là lưu trữ dữ liệu nhưng bên trong nó lại khác nhau. Session được dùng để lưu trữ dữ liệu trên Server . Đồng thời nó cũng có một đoạn code dữ liệu được lưu trữ ở client (cookie). Còn Cookie thì lưu trữ dữ liệu trên máy Client. muốn hiểu rõ hơn thì ta phải vào tìm hiểu cụ thể.

Nội dung chính

  • 1. Session trong PHP
    • Đăng ký session
    • Lưu trữ session
    • Xóa session
  • 2. Cookie trong PHP
    • Lưu trữ Cookie
    • Lấy giá trị Cookie
    • Xóa Cookie

1. Session trong PHP

Biến Session ở trong PHP được dùng để lưu trữ các thông tin của người dùng. hoặc là lưu trữ tùy chọn cấu hình hệ thống cho người dùng. Đặc biệt ở mỗi client sẽ xuất hiện một ID session khác nhau. Vì vậy việc thông tin SessionClient A bị ảnh hưởng qua Client B là điều không thể. Bình thường chúng ta sử dụng Session để lưu thông tin đăng nhập. giỏ hàng hoặc những dữ liệu mang tính chất tạm thời và mỗi client sẽ có dữ liệu khác nhau.

Đăng ký session

Trước khi bạn sử dụng session. Bạn cần phải khai báo cho PHP biết bằng cách đặt dòng lệnh session_start()phía trên đầu mỗi file. Nếu bạn đang dùng nhiều file include lẫn nhau thì đặt nó ở file chính.

Ví dụ:

ảnh minh họa

Thì lệnh session_start() sẽ đăng ký phiên làm việc của người dùng trên Server. Từ đó Server sẽ tạo ra được một ID riêng không trùng lặp để nhận diện cho client hiện tại. Dòng này bắt buộc có.

Lưu trữ session

Tất cả các Session được lưu trữ trong biến toàn cục $_SESSION. Vì vậy để lưu thêm dữ liệu Session hay là thay đổi dữ liệu của Session thì ta sẽ thao tác trên biến đó. Lưu ý với bạn trước khi dùng phép lấy giá trị Session. bạn cần kiểm tra Session đó có tồn tại không rồi hãy lấy.

Để lưu lại một giá trị mới vào Session ta dùng cú pháp như sau: $_SESSION['session_name'] = $session_value.

Để lấy được giá trị Session ta dùng cú pháp sau: $tenbien = $_SESSION['session_name']. Như tôi đã nói ở trên trước khi bạn lấy giá trị Session bạn nên kiểm tra nó có tồn tại không rồi hãy lấy.

Ví dụ:

ảnh minh họa

Bạn tạo một file session.php và copy nội dung này vào:

Bạn hãy nhập tên của bạn vào và nhấn vào button Lưu Session. tiếp theo bạn refresh lại trang bạn sẽ thấy thông tin bạn đã được lưu trữ trên Server nên có hiển thị ra.

Xóa session

Tất cả giá trị Session đều lưu trữ trong biến $_SESSION.Vì vậy để xóa nó các bạn chỉ việc dùng hàm unset($_SESSION['session_name']). Trong đó hàm unset được dùng để giải phóng một biến ra khỏi bộ nhớ.

Nếu bạn muốn xóa hết tất cả các Session thì ta dùng hàm session_destroy().

Ví dụ:

ảnh minh họa

2. Cookie trong PHP

Cookie được dùng để lưu trữ các tùy chọn riêng của trang web từng user. Nó là một file nhỏ được Server được chỉ định lưu trữ trên máy tính của ClientPHP có thể truy xuất tới được. Muốn sử dụng được Cookie thì trình duyệt phải hỗ trợ chức năng này. Nếu không thì Cookie trở nên vô dụng.

Tất nhiên Cookie sẽ không bị mất khi bạn đóng ứng dụng.

Nó phụ thuộc vào thời gian sống mà bạn thiết lập cho nó. Nếu bạn thiết lập Cookie lưu trữ thông tin đăng nhập trong vòng 15p. thì sau 15 p mà bạn không có một thao tác thay đổi trên nó thì Cookie của bạn sẽ bị chết. Như các bạn thấy đấy, đây chính là sự lợi hại của việc sử dụng Cookie.

Lưu trữ Cookie

Để sử dụng lưu trữ Cookie ta dùng cú pháp sau và phải đặt trước thẻ html: setcookie($name, $value, $expire, $path, $domain).

Trong đó:

  • $name: tên của Cookie
  • $value: giá trị của Cookie
  • $expire: thời gian sống của Cookie
  • $path : đường dẫn lưu trữ Cookie
  • $domain: tên của domain

Ví dụ: lưu trữ tên đăng nhập username = ‘thehalfheart’ trong một tiếng đồng hồ:

ảnh minh họa

Lấy giá trị Cookie

Tất cả các Cookie được lưu trữ trong biến toàn cục $_COOKIE nên để lấy giá trị Cookie ta dùng cú pháp sau: $bien = $_COOKIE['cookie_name']Cũng như lưu ý ở phần Session bạn nên kiểm tra có tồn tại Cookie không trước khi lấy nhé. Nếu không sẽ bị thông báo lỗi nếu nó không tồn tại.

Ví dụ: Lấy giá trị username vừa lưu trữ ở trên.

ảnh minh họa

Xóa Cookie

Để xóa Cookie các bạn chỉ việc thiết lập thời gian sống của nó sang quá trị âm nhiều hơn hoặc bằng giá trị sống lúc bạn thiết lập.

Ví dụ: xóa Cookie đã được thiết lập ở trên

ảnh minh họa

Bài 26: Hàm isset() và empty() trong php

Nội dung chính

  • 1. Hàm isset trong PHP
    • Vậy khi nào thì sử dụng hàm isset()?
  • 2. Hàm empty() trong PHP
    • Vậy khi nào nên sử dụng hàm empty()?

1. Hàm isset trong PHP

Hàm isset() thường dùng để kiểm tra một biến nào đó đã được khởi tạo trong bộ nhớ của máy tính hay chưa. Nếu nó đã  được khởi tạo (tồn tại) thì sẽ trả về TRUE và ngược lại sẽ trả về FALSE.

Ví dụ: Kiểm tra biến $domain có tồn tại hay không.

ảnh minh họa

Vậy khi nào thì sử dụng hàm isset()?

Như bạn biết nếu trong quá trình biên dịch nếu trong code có sử dụng một biến không tồn tại thì trình biên dịch sẽ ngưng xử lý và thông báo lỗi ngay, chính vì vậy thông thường những trường hợp mà ta không chắc chắn là biến đó luôn tồn tại thì trước khi sử dụng hãy kiểm tra nó.

Ví dụ:Ta Lấy thông tin đăng ký từ form.

Đây là ví dụ thông dụng nhất mà có lẽ tất cả các ban newbie vẫn mắc phải. Thông thường khi lấy thông tin từ FORM (xem bài post và get trong PHP). Thì bạn nên kiểm tra nó có tồn tại không rồi hãy lấy.

ảnh minh họa

Ví dụ: Lấy một trang hiện tại trên URL dùng để phân trang.

Trong thuật toán phân trang ta lấy page trên URL để xác định record hiển thị cho trang đó. Chính vì page nằm trên URL . Nên rất nguy hiểm nếu như chúng ta lấy mà không kiểm tra nó tồn tại hay không. Vì nếu người dùng chỉ cần bỏ cái page=x đó đi thì chương trình sẽ bị lỗi ngay.

ảnh minh họa

Ví dụ: Thực hiện nối chuỗi trong khi biến $domain chưa chắc chắn là tồn tại.

ảnh minh họa

Rõ ràng nếu đoạn code này chạy sẽ bị lỗi ngay bởi vì biến $sologan sẽ không tồn tại. Vì bên trong câu lệnh mệnh đề if không được chạy.

Trên là những ví dụ thông thường hay xảy ra trong thực tế. Nên vẫn còn khá nhiều trường hợp bạn nên sử dụng hàm isset() trong php.

2. Hàm empty() trong PHP

Hàm empty() ở bên trong PHP dùng để kiểm tra một biến nào đó có giá trị rỗng hoặc chưa được khởi tạo hay không.

Giả sử ta có biến $var và giá trị của nó sẽ là rỗng nếu nó nằm một trong các trường hợp sau:

  • $var = 0 hoặc $var = '0'
  • $var = NULL
  • $var = '';
  • $var = FALSE
  • $var không tồn tại.

Như ta thấy có 6 trường hợp hàm empty() sẽ đúng. Tuy nhiên trường hợp cuối cùng là $var không tồn tại là hơi đặc biệt một chút. Vấn đề này rất giống với hàmisset() đúng không nào.

Ví dụ: Ví dụ các trường hợp trên.

ảnh minh họa

Ở trong ví dụ thứ 6 biến $bien_khong_ton_tai chưa được khởi tạo nhưng vẫn không bị lỗi. và khi sử dụng nó trong hàm empty() thì sẽ trả về TRUE.

Vậy khi nào nên sử dụng hàm empty()?

Bình thường chúng ta sử dụng hàm empty() để validate dữ liệu. Bởi vì nó có thêm chức năng của hàm isset() nên sẽ không bao giờ xuất hiện lỗi.

Vi dụ: Ta kiểm tra dữ liệu khi người dùng đăng nhập.

ảnh minh họa

Nếu sử dụng hàm isset() thì ta sẽ làm như sau:

ảnh minh họa

Rõ ràng nếu ta dùng hàm empty() thì nhìn code gọn hơn phải không nào.

& luôn có một điểm mình muốn nhấn mạnh khi sử dụng hàm empty() đó là hàm này sẽ trả về TRUE nếu biến kiểm tra không tồn tại, điều này rất giống với hàm isset() nên ta có thể nói hàm empty() có luôn chức năng của hàm isset().

Bài 27: Xử lý truy vấn dữ liệu MySQL với PHP

Có rất nhiều thư viện xử lý kết nối và truy vấn database trong MySQL đó là:

  • MySQLi Object-oriented.
  • MySQLi Procedural.
  • PDO.

Bài 28: Một số Lệnh require – require_once – include – include_once trong PHP

Để xây dựng được một trang web bằng PHP thì đòi hỏi ban phải sử dụng rất nhiều mã code khác nhau. và có thể lên đến hàng trăm hàng ngàn line. Nếu chúng ta chỉ code nó trong một file PHP duy nhất thì rất là tệ hại. Bởi rất khó để nâng cấp và bảo trì chúng.

Với nhược điểm này hầu hết các ngôn ngữ lập trình cho phép chúng ta phân chia mã code. thành nhiều file khác nhau và muốn dùng file nào thì chỉ việc khai báo là được. Với ngôn ngữ C++ hay C# thì chúng ta có lệnh #include dùng để import các thư viện vào một file. Vậy nên trong PHP cũng có một lệnh tương tự đó là lệnh requirerequire_onceinclude và include_once.

Trong bài này mình sẽ hướng dẫn các bạn cách sử dụng. và phân biệt khi nào thì nên sử dụng từng lệnh cụ thể nhé.

Trước tiên bạn hãy tạo cho tôi 2 file đó là file index.php và file import.php nhé.

Nội dung chính

  • 1.Các lệnh require – require_once – include – include_once
    • Require
    • Require_once
    • Include
    • Include_once
  • 2. Sự khác nhau giữa require và include
    • Giống nhau giữa require và include
    • Khác nhau giữa require và include

1. Các lệnh require – require_once – include – include_once

Các Lệnh requirerequire_onceinclude và include_once dùng để import một file PHP A vào một file PHP B. với các mục đích giúp file PHP B có thể sử dụng được các thư viện trong file PHP A.

Về cú pháp thì cả bốn lệnh đều có chung cú pháp như sau:

ảnh minh họa

Trong đó path.php là đường dẫn tuyệt đối nhé các bạn, nghĩa là path là một đường dẫn trên Server chứ không phải trên trình duyệt browser (nghĩa là đường dẫn tương đối).

Bây giờ chúng ta cùng tìm hiểu cụ thể hơn về cách sử dụng nhé.

Lệnh require:

Dùng để import một file PHP khác vào file hiện tại, lúc này file hiện tại có thể sử dụng mọi tài nguyên của file import đó.

Ví dụ: Bạn mở file import.php lên và nhập vào nội dung sau.

ảnh minh họa

Tiếp theo bạn vào file index.php nhập nội dung sau:

ảnh minh họa

Chạy file index.php lên bạn sẽ thấy nó xuất ra câu thông báo “Đây là hàm show_message trong file import.php“.

Nếu các bạn cứ cố ý require hai lần cùng một file thì lập tức sẽ bị thông báo lỗi vì hàm show_message() đã được định nghĩa. Lý do chính là khi ta require hai lần thì lần thứ hai đã bị đụng tên hàm. Bây giờ bạn thay đổi nội dung file index.php như sau:

ảnh minh họa

Lập tức sẽ bị thông báo lỗi như hình dưới đây.

ảnh minh họa

Lệnh require_once:

Lệnh này có chức năng không khác gì lệnh require, tuy nhiên điểm khác biệt đó là lệnh require_once chỉ import đúng một lần, nghĩa là khi bạn sử dụng cả hai lệnh require_once cùng một file thì ở lệnh require_once thứ hai nó sẽ thấy là đã xử lý rồi nên nó sẽ không thực thi nữa.

Ví dụ: Bạn thay đổi nội dung file index.php như sau.

ảnh minh họa

Chạy lên chương trình vẫn hoạt động bình thường.

Lệnh include:

Công dụng và tính chất giống như lênh require.

Ví dụ:

ảnh minh họa

Tương tự như require. Tuy nhiên nếu bạn cố ý include hai lần thì sẽ KHÔNG xuất hiện lỗi mà đó chỉ là một cảnh báo, đây chính là sự khác nhau giữa hai lệnh này.

Lệnh include_once:

Công dụng và tính chất giống với lệnh require_once.

Ví dụ:

ảnh minh họa

2. Sự khác nhau giữa require và include

Chúng ta sẽ nói về sự khác nhau giữa require và include, require_once và include_once luôn. Tuy vậy mình sẽ giải thích cặp đầu tiên đó là require và include thôi, cặp còn lại sẽ tương tự nhé các bạn.

Giống nhau giữa require và include:

Hai lệnh đều có nhiệm vụ import một file PHP vào một file PHP khác.

Khác nhau giữa require và include:

Nếu khi import một file bằng lệnh require thì nếu chương trình bị lỗi thì lập tức trình biên dịch sẽ dừng và xuất ra thông báo lỗi. Còn nếu sử dụng lệnh include thì đó chỉ là một cảnh báo nên chương trình vẫn chạy cho đến cuối chương trình.


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.