Kiểm tra PHP nếu phiên tồn tại
Trong PHP, chúng tôi sử dụng session_start() một chức năng sẵn có để bắt đầu phiên. Nhưng vấn đề mà chúng ta gặp phải trong một tập lệnh PHP là nếu chúng ta thực thi nó nhiều lần thì nó sẽ báo lỗi. Vì vậy, ở đây chúng ta sẽ tìm hiểu cách kiểm tra phiên đã bắt đầu hay chưa mà không cần gọi hàm session_start() hai lần Show
Có hai cách để làm theo để giải quyết vấn đề này Đối với bên dưới PHP 5. 4. 0 phiên bản Thí dụGiải trìnhNếu phiên không bắt đầu, mã này ở trên sẽ luôn bắt đầu phiên trong tập lệnh PHP Trong phương pháp thứ hai, chúng ta có thể sử dụng hàm session_status(), trả về trạng thái của phiên hiện tại. Hàm này có thể trả về ba giá trị số nguyên, tất cả đều là các hằng số được xác định trước. đó là
Thí dụGiải trìnhĐoạn mã trên kiểm tra xem phiên đã bắt đầu hay chưa, nếu chưa bắt đầu, phiên này sẽ bắt đầu phiên trong tập lệnh PHP Mặc dù giải pháp có vẻ khá đơn giản (đừng gọi nó nhiều hơn một lần), nhưng trong một số trường hợp nhất định, bạn sẽ không hoàn toàn chắc chắn liệu một phiên đã được bắt đầu hay chưa. Trong một số trường hợp, nó có thể nằm ngoài tầm kiểm soát của bạn Có hai cách để tiếp cận điều này Kiểm tra xem phiên có tồn tại trong các phiên bản thấp hơn 5 không. 4Nếu bạn đang sử dụng phiên bản PHP thấp hơn 5. 4. 0, bạn có thể làm như sau
Nếu chúng ta sử dụng session_status, mã của chúng ta sẽ như thế này if(session_status() == PHP_SESSION_NONE){ //session has not started session_start(); } Như bạn có thể thấy, việc sử dụng chức năng này làm cho mã của bạn dễ hiểu hơn một chút Tại sao không kiểm tra xem mảng $_SESSION có trống không?Bạn có thể kiểm tra xem mảng $_SESSION có tồn tại và không trống không. Tuy nhiên, điều đáng chú ý là $_SESSION có thể được tạo thủ công như vậy Trong hướng dẫn này, chúng ta sẽ xem Cách kiểm tra xem phiên đã bắt đầu chưa trong PHP. Hàm PHP session_status() và Hàm PHP session_id() có thể được sử dụng để kiểm tra xem phiên đã bắt đầu hay chưa Mục lục Hàm session_status() trong PHPPHP session_status() Hàm trả về trạng thái hiện tại của phiên. Nó được sử dụng để kiểm tra phiên Trong ví dụ này hàm session_status() được sử dụng để kiểm tra xem phiên có bắt đầu hay không Ghi chú. Điều này là lý tưởng cho PHP 5. 4. 0 hoặc cao hơn ________0 Trong đoạn mã trên PHP_SESSION_NONE là một giá trị được trả về bởi hàm session_status(), nếu phiên được bật nhưng nó không tồn tại hoặc nó chưa được bắt đầu Hàm session_id() trong PHPHàm PHP session_id() đặt hoặc trả về id của phiên hiện tại Trong ví dụ thứ hai, Hàm session_id() được sử dụng để kiểm tra id của phiên, điều này có thể cho biết phiên đã bắt đầu hay chưa Bạn có thể kiểm tra xem một biến đã được đặt trong phiên của người dùng hay chưa bằng cách sử dụng hàm isset(), giống như một biến bình thường. Bởi vì $_SESSION superglobal chỉ được khởi tạo sau khi session_start() được gọi, bạn cần gọi session_start() trước khi sử dụng isset() trên một biến phiên. Ví dụ
Tất nhiên, bạn cũng có thể sử dụng hàm empty() với dữ liệu phiên hoặc bất kỳ hàm nào khác - mảng $_SESSION và dữ liệu của nó có thể được sử dụng như bất kỳ mảng nào khác Bạn muốn học PHP 7? Hacking with PHP đã được cập nhật đầy đủ cho PHP 7 và hiện có sẵn dưới dạng PDF có thể tải xuống. Nhận hơn 1200 trang học PHP thực hành ngay hôm nay Nếu điều này hữu ích, vui lòng dành chút thời gian để nói với những người khác về Hacking với PHP bằng cách tweet về nó Làm cách nào để kiểm tra xem có phiên trong PHP không?Luôn sử dụng session_status() , để kiểm tra xem một phiên đã bắt đầu và đang hoạt động chưa. if(session_id() === "") session_start();
Làm cách nào để kiểm tra xem phiên đã hết hạn trong PHP chưa?Trạng thái phiên trong PHP là gì?Hàm PHP - session_status()
. Hàm session_status() trả về trạng thái của phiên hiện tại .
Hàm session_start() và Session_destroy() trong PHP là gì?session_destroy() hủy tất cả dữ liệu được liên kết với phiên hiện tại . Nó không bỏ đặt bất kỳ biến toàn cục nào được liên kết với phiên hoặc bỏ đặt cookie phiên. Để sử dụng lại các biến phiên, session_start() phải được gọi. Ghi chú. Bạn không cần phải gọi session_destroy() từ mã thông thường. |