Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

Bạn có thể kiểm tra xem một biến đã được đặt trong phiên của người dùng bằng cách sử dụng function isset (), vì bạn sẽ có một biến bình thường. Vì $ _Session SuperGlobal chỉ được khởi tạo khi session_start () đã được gọi, bạn cần gọi session_start () trước khi sử dụng isset () trên biến phiên. Ví dụ:$_SESSION superglobal is only initialised once session_start() has been called, you need to call session_start() before using isset() on a session variable. For example:


Tất nhiên, bạn cũng có thể sử dụng hàm trống () với dữ liệu phiên hoặc thực sự 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.$_SESSION array and its data can be used like any other array.

Bạn muốn học Php 7?

Hack với 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 tập PHP thực hành ngay hôm nay!over 1200 pages of hands-on PHP learning today!

Nếu điều này hữu ích, xin vui lòng dành một chút thời gian để nói với người khác về việc hack với PHP bằng cách tweet về nó!

Chương tiếp theo: Tệp so với cơ sở dữ liệu >>

Chương trước: Kết thúc phiên

Nhảy đến:

Trang chủ: Bảng nội dung

Bản quyền © 2015 Paul Hudson. Theo dõi tôi: @twostraws.

507

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có một tệp PHP đôi khi được gọi từ một trang đã bắt đầu một phiên và đôi khi từ một trang không bắt đầu phiên. Do đó, khi tôi có

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}
9 trên tập lệnh này, đôi khi tôi nhận được thông báo lỗi cho "phiên đã bắt đầu". Vì vậy, tôi đã đặt các dòng sau:

if(!isset($_COOKIE["PHPSESSID"]))
{
  session_start();
}

Nhưng lần này tôi nhận được thông báo cảnh báo này:

Thông báo: Biến không xác định: _Session

Có cách nào tốt hơn để kiểm tra xem phiên đã bắt đầu không?

Nếu tôi sử dụng

if(session_id() == '') {
    session_start();
}
0, nó sẽ làm cho mọi thứ hoạt động đúng và chỉ tắt các cảnh báo?

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

ngẫu nhiên

9.63610 Huy hiệu vàng68 Huy hiệu bạc79 Huy hiệu đồng10 gold badges68 silver badges79 bronze badges

Đã hỏi ngày 6 tháng 6 năm 2011 lúc 9:00Jun 6, 2011 at 9:00

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

2

Cách được đề xuất cho các phiên bản của PHP> = 5.4.0, Php 7, Php 8PHP >= 5.4.0 , PHP 7, PHP 8

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

Tham khảo: http://www.php.net/manual/en/function.session-status.php

Đối với các phiên bản của PHP <5.4.0PHP < 5.4.0

if(session_id() == '') {
    session_start();
}

Đã trả lời ngày 30 tháng 8 năm 2013 lúc 22:20Aug 30, 2013 at 22:20

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

Đáng yêulovelyramos

9.1891 Huy hiệu vàng16 Huy hiệu bạc18 Huy hiệu đồng1 gold badge16 silver badges18 bronze badges

6

Đối với các phiên bản của PHP trước PHP 5.4.0:

if(session_id() == '') {
    // session isn't started
}

Mặc dù vậy, IMHO, bạn thực sự nên nghĩ về việc tái cấu trúc mã quản lý phiên của mình nếu bạn không biết có bắt đầu phiên hay không ...

Điều đó nói rằng, ý kiến ​​của tôi là chủ quan, và có những tình huống (ví dụ được mô tả trong các bình luận dưới đây) nơi có thể không thể biết liệu phiên được bắt đầu.

Đã trả lời ngày 6 tháng 6 năm 2011 lúc 9:06Jun 6, 2011 at 9:06

AlexalexAlex

3.0193 huy hiệu vàng21 Huy hiệu bạc46 Huy hiệu đồng3 gold badges21 silver badges46 bronze badges

8

Php 5.4 đã giới thiệu session_status (), đáng tin cậy hơn là dựa vào

if(session_id() == '') {
    session_start();
}
1.

Hãy xem xét đoạn trích sau:

session_id('test');
var_export(session_id() != ''); // true, but session is still not started!
var_export(session_status() == PHP_SESSION_ACTIVE); // false

Vì vậy, để kiểm tra xem một phiên được bắt đầu, cách được đề xuất trong Php 5.4 bây giờ:

session_status() == PHP_SESSION_ACTIVE

Đã trả lời ngày 28 tháng 10 năm 2012 lúc 9:07Oct 28, 2012 at 9:07

BenmorelbenmorelBenMorel

32,8K48 Huy hiệu vàng173 Huy hiệu bạc305 Huy hiệu đồng48 gold badges173 silver badges305 bronze badges

3

Bạn có thể làm điều này, và nó thực sự dễ dàng.

if (!isset($_SESSION)) session_start();

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

Dharman ♦

28.1K21 Huy hiệu vàng75 Huy hiệu bạc127 Huy hiệu đồng21 gold badges75 silver badges127 bronze badges

Đã trả lời ngày 28 tháng 3 năm 2013 lúc 14:25Mar 28, 2013 at 14:25

Miyurumiyurumiyuru

1.09111 Huy hiệu bạc19 Huy hiệu đồng11 silver badges19 bronze badges

2

if (version_compare(phpversion(), '5.4.0', '<')) {
     if(session_id() == '') {
        session_start();
     }
 }
 else
 {
    if (session_status() == PHP_SESSION_NONE) {
        session_start();
    }
 }

Đã trả lời ngày 12 tháng 4 năm 2015 lúc 7:34Apr 12, 2015 at 7:34

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

k.bonk.bonk.bon

3882 Huy hiệu bạc9 Huy hiệu Đồng2 silver badges9 bronze badges

0

Trước PHP 5.4, không có cách nào đáng tin cậy để biết ngoài việc đặt cờ toàn cầu.

Consider:

var_dump($_SESSION); // null
session_start();
var_dump($_SESSION); // array
session_destroy();
var_dump($_SESSION); // array, but session isn't active.

Or:

if(!isset($_COOKIE["PHPSESSID"]))
{
  session_start();
}
0

Vì vậy, trước PHP 5.4, bạn nên đặt Boolean toàn cầu.

Đã trả lời ngày 11 tháng 5 năm 2013 lúc 14:20May 11, 2013 at 14:20

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

y oy oy o

1.1339 huy hiệu bạc14 Huy hiệu đồng9 silver badges14 bronze badges

0

Đối với tất cả phiên bản PHP

if(!isset($_COOKIE["PHPSESSID"]))
{
  session_start();
}
1

Đã trả lời ngày 12 tháng 10 năm 2014 lúc 16:23Oct 12, 2014 at 16:23

Supersuphotsupersuphotsupersuphot

5464 Huy hiệu bạc8 Huy hiệu Đồng4 silver badges8 bronze badges

1

Kiểm tra điều này :

if(!isset($_COOKIE["PHPSESSID"]))
{
  session_start();
}
2

Nguồn http://php.net

Đã trả lời ngày 22 tháng 3 năm 2015 lúc 10:39Mar 22, 2015 at 10:39

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

ElshanelshanElshan

6.8484 Huy hiệu vàng66 Huy hiệu bạc102 Huy hiệu Đồng4 gold badges66 silver badges102 bronze badges

0

Sử dụng session_id (), nó trả về một chuỗi trống nếu không được đặt. Nó đáng tin cậy hơn so với kiểm tra

if(session_id() == '') {
    session_start();
}
2.

if(!isset($_COOKIE["PHPSESSID"]))
{
  session_start();
}
3

Benmorel

32,8K48 Huy hiệu vàng173 Huy hiệu bạc305 Huy hiệu đồng48 gold badges173 silver badges305 bronze badges

Bạn có thể làm điều này, và nó thực sự dễ dàng.Jun 6, 2011 at 9:07

if(!isset($_COOKIE["PHPSESSID"]))
{
  session_start();
}
4

Dharman ♦

Đã trả lời ngày 2 tháng 1 năm 2015 lúc 7:01Jan 2, 2015 at 7:01

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

Mahesh Cheliyamahesh CheliyaMahesh Cheliya

1.3141 Huy hiệu vàng16 Huy hiệu bạc21 Huy hiệu đồng1 gold badge16 silver badges21 bronze badges

Điều này sẽ hoạt động cho tất cả các phiên bản PHP. Nó xác định phiên bản PHP, sau đó kiểm tra xem phiên có bắt đầu dựa trên phiên bản PHP không. Sau đó, nếu phiên không bắt đầu, nó bắt đầu.

if(!isset($_COOKIE["PHPSESSID"]))
{
  session_start();
}
5

Đã trả lời ngày 7 tháng 2 năm 2015 lúc 1:04Feb 7, 2015 at 1:04

Dustin Poissantdustin PoissantDustin Poissant

3.0201 Huy hiệu vàng18 Huy hiệu bạc27 Huy hiệu đồng1 gold badge18 silver badges27 bronze badges

Điều duy nhất bạn cần làm là:

if(!isset($_COOKIE["PHPSESSID"]))
{
  session_start();
}
6

Đã trả lời ngày 27 tháng 12 năm 2013 lúc 20:48Dec 27, 2013 at 20:48

2

Không chắc chắn về hiệu quả của giải pháp đó, nhưng đây là từ dự án làm việc, điều này cũng được sử dụng nếu bạn cần xác định ngôn ngữ mặc định

if(!isset($_COOKIE["PHPSESSID"]))
{
  session_start();
}
7

Đã trả lời ngày 26 tháng 3 năm 2013 lúc 23:23Mar 26, 2013 at 23:23

if(session_id() == '') {
    session_start();
}
3 Trước khi một cuộc gọi chức năng triệt tiêu mọi lỗi có thể được báo cáo trong cuộc gọi chức năng.

Thêm

if(session_id() == '') {
    session_start();
}
3 trước
if(session_id() == '') {
    session_start();
}
5 bảo PHP tránh in thông báo lỗi.

Ví dụ:

Sử dụng

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}
9 Sau khi bạn đã in một cái gì đó vào trình duyệt dẫn đến lỗi nên PHP sẽ hiển thị một cái gì đó như "Tiêu đề không thể được gửi: bắt đầu tại (dòng 12)",
if(session_id() == '') {
    session_start();
}
7 vẫn sẽ thất bại trong trường hợp này, nhưng thông báo lỗi không phải là in trên màn hình.

Trước khi bao gồm các tệp hoặc chuyển hướng đến trang mới, sử dụng chức năng

if(session_id() == '') {
    session_start();
}
8, nếu không nó sẽ gây ra lỗi.

Mã này có thể được sử dụng trong mọi trường hợp:

if(!isset($_COOKIE["PHPSESSID"]))
{
  session_start();
}
8

có thể đi được

4.9661 Huy hiệu vàng18 Huy hiệu bạc45 Huy hiệu đồng1 gold badge18 silver badges45 bronze badges

Đã trả lời ngày 30 tháng 1 năm 2019 lúc 18:22Jan 30, 2019 at 18:22

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

Trên Php 5.3, điều này phù hợp với tôi:

if(!isset($_COOKIE["PHPSESSID"]))
{
  session_start();
}
9

Sau đó bạn có. Nếu bạn không đặt bản sao IF IF bắt đầu phiên sẽ bắt đầu bằng cách nào tôi không làm tại sao.

Đã trả lời ngày 28 tháng 9 năm 2013 lúc 6:27Sep 28, 2013 at 6:27

Phản hồi dựa trên phản hồi của @Meliza Ramos (xem Phản hồi đầu tiên) và http://php.net/manual/en/function.phpversion.php,

ACTIONS:

  • Xác định PHP_Version_id nếu không tồn tại
  • Xác định chức năng để kiểm tra phiên bản dựa trên PHP_Version_id
  • Xác định chức năng để openSession () an toàn

Chỉ sử dụng OpenSession ()openSession()

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}
0

Đã trả lời ngày 15 tháng 4 năm 2016 lúc 17:07Apr 15, 2016 at 17:07

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}
1

Trên thực tế, bây giờ đã quá muộn để giải thích nó ở đây dù sao nó đã được giải quyết. Đây là một tệp .INC của một trong những dự án của tôi, nơi bạn định cấu hình menu cho một nhà hàng bằng cách chọn một món ăn và loại bỏ/thêm hoặc thay đổi đơn đặt hàng. Máy chủ mà tôi đang làm việc không có phiên bản thực tế nên tôi đã làm cho nó linh hoạt hơn. Tùy thuộc vào các tác giả muốn sử dụng và dùng thử.

Đã trả lời ngày 27 tháng 4 năm 2016 lúc 16:00Apr 27, 2016 at 16:00

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

ThiELICYTHIELICIOUSThielicious

3,8062 Huy hiệu vàng24 Huy hiệu bạc35 Huy hiệu Đồng2 gold badges24 silver badges35 bronze badges

0

Đoạn mã này có hoạt động cho bạn không?

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}
2

Đã trả lời ngày 28 tháng 6 năm 2017 lúc 3:38Jun 28, 2017 at 3:38

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

NiroshanjniroshanjNiroshanJ

5581 Huy hiệu vàng5 Huy hiệu bạc19 Huy hiệu đồng1 gold badge5 silver badges19 bronze badges

Đây là những gì tôi sử dụng để xác định xem một phiên đã bắt đầu. Bằng cách sử dụng trống và isset như sau:

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}
3

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

Marcello B.

3.92211 Huy hiệu vàng46 Huy hiệu bạc62 Huy hiệu Đồng11 gold badges46 silver badges62 bronze badges

Đã trả lời ngày 6 tháng 10 năm 2017 lúc 17:00Oct 6, 2017 at 17:00

RotimirotimiRotimi

4.7154 Huy hiệu vàng17 Huy hiệu bạc27 Huy hiệu đồng4 gold badges17 silver badges27 bronze badges

0

Bạn nên tổ chức lại mã của mình để bạn gọi chính xác ____29 một lần mỗi lần thực thi trang.

Đã trả lời ngày 6 tháng 6 năm 2011 lúc 9:07Jun 6, 2011 at 9:07

SamtsamtSamT

10.2k2 Huy hiệu vàng30 Huy hiệu bạc39 Huy hiệu đồng2 gold badges30 silver badges39 bronze badges

5

PHP_Version_id có sẵn kể từ Php 5.2.7, vì vậy hãy kiểm tra điều này trước và nếu cần, hãy tạo nó.

if(session_id() == '') {
    // session isn't started
}
0 có sẵn kể từ Php 5.4, vì vậy chúng tôi cũng phải kiểm tra điều này:

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}
4

Đã trả lời ngày 25 tháng 12 năm 2015 lúc 17:06Dec 25, 2015 at 17:06

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

Dựa trên thực tế của tôi, trước khi truy cập

if(session_id() == '') {
    // session isn't started
}
1, bạn cần gọi
if(session_id() == '') {
    session_start();
}
5 mỗi lần để sử dụng tập lệnh. Xem liên kết dưới đây để biết hướng dẫn sử dụng.

http://php.net/manual/en/function.session-start.php

Đối với tôi, ít nhất

if(session_id() == '') {
    session_start();
}
5 đang khó hiểu như một cái tên. Một
if(session_id() == '') {
    // session isn't started
}
4 có thể rõ ràng hơn.

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

4b0

20.8K30 Huy hiệu vàng93 Huy hiệu bạc137 Huy hiệu đồng30 gold badges93 silver badges137 bronze badges

Đã trả lời ngày 13 tháng 5 năm 2018 lúc 20:28May 13, 2018 at 20:28

0

Tôi đã kết thúc với kiểm tra gấp đôi trạng thái. Php 5.4+

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}
5

Đã trả lời ngày 14 tháng 8 năm 2018 lúc 18:03Aug 14, 2018 at 18:03

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

Leo Tahkleo TahkLeo Tahk

4001 huy hiệu vàng4 Huy hiệu bạc14 Huy hiệu đồng1 gold badge4 silver badges14 bronze badges

Bạn có thể sử dụng giải pháp sau để kiểm tra xem phiên PHP có bắt đầu không:

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}
6

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

Cấp Miller

25.6K16 Huy hiệu vàng138 Huy hiệu bạc155 Huy hiệu đồng16 gold badges138 silver badges155 bronze badges

Đã trả lời ngày 9 tháng 9 năm 2018 lúc 11:23Sep 9, 2018 at 11:23

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

1

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}
7

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

Tunaki

128K45 Huy hiệu vàng323 Huy hiệu bạc406 Huy hiệu Đồng45 gold badges323 silver badges406 bronze badges

Đã trả lời ngày 16 tháng 12 năm 2015 lúc 9:35Dec 16, 2015 at 9:35

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

Thay thế

if(session_id() == '') {
    // session isn't started
}
5 bằng:

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}
8

Đã trả lời ngày 17 tháng 8 năm 2016 lúc 5:11Aug 17, 2016 at 5:11

Hướng dẫn which of the following is used to check if session variable is already set or not in php - cái nào sau đây được sử dụng để kiểm tra xem biến phiên đã được đặt hay chưa trong php

1

Làm thế nào kiểm tra biến phiên được đặt hay không trong PHP?

Bạn có thể kiểm tra xem một biến đã được đặt trong phiên của người dùng bằng cách sử dụng function isset (), vì bạn sẽ có một biến bình thường. Vì $ _Session SuperGlobal chỉ được khởi tạo khi session_start () đã được gọi, bạn cần gọi session_start () trước khi sử dụng isset () trên biến phiên.using the function isset(), as you would a normal variable. Because the $_SESSION superglobal is only initialised once session_start() has been called, you need to call session_start() before using isset() on a session variable.

Làm thế nào phiên kiểm tra đã được bắt đầu trong PHP?

Đó là: 0 - PHP_Session_Disables: Các phiên hiện đang bị vô hiệu hóa.1 - PHP_Session_None: Phiên được bật, nhưng không có phiên nào được bắt đầu.2 - PHP_Session_Active: Phiên được bật và phiên đã được bắt đầu.PHP_SESSION_ACTIVE: Sessions are enabled and a session has been started.

Làm thế nào tôi có thể xem các biến phiên trong PHP?

Sử dụng điều này: Echo '';var_dump (phiên $ _);echo '';Hoặc bạn có thể sử dụng print_r nếu bạn không quan tâm đến các loại.Nếu bạn sử dụng print_r, bạn có thể làm cho đối số thứ hai đúng để nó sẽ quay lại thay vì tiếng vang, hữu ích cho ...echo '
'; var_dump($_SESSION); echo '
';
Or you can use print_r if you don't care about types. If you use print_r, you can make the second argument TRUE so it will return instead of echo, useful for...

Làm thế nào để bạn kiểm tra xem phiên có hoạt động hay không?

Theo yêu cầu, có một vài cách khác nhau mà bạn có thể biết liệu một phiên có được bắt đầu hay không, chẳng hạn như:..
$ phát hành hoạt động = (session_id ()! = "") ;.
$ phát hành hoạt tính = xác định ('sid') ;.
// Kể từ 29/8/2011 $ phát hành hoạt động = (session_status () == PHP_Session_Active) ;.