Hướng dẫn how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

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_id() == '') {
    session_start();
}
8 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();
}
9, 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 how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

ngẫu nhiên

9.69610 Huy hiệu vàng69 Huy hiệu bạc81 Huy hiệu Đồng10 gold badges69 silver badges81 bronze badges

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

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 how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

Đáng yêulovelyramos

9.2191 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,0093 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 isn't started
}
0.

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.9K48 Huy hiệu vàng173 Huy hiệu bạc307 Huy hiệu đồng48 gold badges173 silver badges307 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 how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

Dharman ♦

28.5K21 Huy hiệu vàng77 Huy hiệu bạc129 Huy hiệu đồng21 gold badges77 silver badges129 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 how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào 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:

session_id(); // returns empty string
session_start();
session_id(); // returns session hash
session_destroy();
session_id(); // returns empty string, ok, but then
session_id('foo'); // tell php the session id to use
session_id(); // returns 'foo', but no session is active.

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 how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào 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 (session_status() === PHP_SESSION_NONE) {
    session_start();
}
0

Đã 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 (session_status() === PHP_SESSION_NONE) {
    session_start();
}
1

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 how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

ElshanelshanElshan

6.8684 Huy hiệu vàng67 Huy hiệu bạc103 Huy hiệu Đồng4 gold badges67 silver badges103 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 isn't started
}
1.

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

Benmorel

32.9K48 Huy hiệu vàng173 Huy hiệu bạc307 Huy hiệu đồng48 gold badges173 silver badges307 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 (session_status() === PHP_SESSION_NONE) {
    session_start();
}
3

Dharman ♦

28.5K21 Huy hiệu vàng77 Huy hiệu bạc129 Huy hiệu đồngJan 2, 2015 at 7:01

Hướng dẫn how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

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

Miyurumiyuru1 gold badge16 silver badges21 bronze badges

1.09111 Huy hiệu bạc19 Huy hiệu đồng

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

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

3882 Huy hiệu bạc9 Huy hiệu ĐồngDustin Poissant

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.1 gold badge19 silver badges28 bronze badges

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

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

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

2

y oy o

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

1.1339 huy hiệu bạc14 Huy hiệu đồngMar 26, 2013 at 23:23

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

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

Supersuphotsupersuphot

5464 Huy hiệu bạc8 Huy hiệu Đồng

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

Nguồn http://php.net

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

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

Elshanelshan1 gold badge20 silver badges45 bronze badges

6.8684 Huy hiệu vàng67 Huy hiệu bạc103 Huy hiệu ĐồngJan 30, 2019 at 18:22

Hướng dẫn how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

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 isn't started
}
1.

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

Benmorel

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

hy vọng nó giúp !

ACTIONS:

  • Đã trả lời ngày 2 tháng 1 năm 2015 lúc 7:01
  • Mahesh Cheliyamahesh Cheliya
  • 1.3141 Huy hiệu vàng16 Huy hiệu bạc21 Huy hiệu đồng

Đ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.openSession()

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

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

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

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 how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

ThiELICYTHIELICIOUSThielicious

3,8712 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_id() == '') {
    session_start();
}
1

Đã 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 how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào 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_id() == '') {
    session_start();
}
2

Hướng dẫn how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

Marcello B.

3.96211 Huy hiệu vàng47 Huy hiệu bạc63 Huy hiệu Đồng11 gold badges47 silver badges63 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àng18 Huy hiệu bạc27 Huy hiệu đồng4 gold badges18 silver badges27 bronze badges

0

Bạn nên tổ chức lại mã của mình để bạn gọi

if(session_id() == '') {
    session_start();
}
8 chính xác sau khi thực hiện trên mỗi 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
}
9 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_id() == '') {
    session_start();
}
3

Đã 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 how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

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

session_id('test');
var_export(session_id() != ''); // true, but session is still not started!
var_export(session_status() == PHP_SESSION_ACTIVE); // false
0, bạn cần gọi
if(session_id() == '') {
    // session isn't started
}
4 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 isn't started
}
4 đang khó hiểu như một cái tên. Một
session_id('test');
var_export(session_id() != ''); // true, but session is still not started!
var_export(session_status() == PHP_SESSION_ACTIVE); // false
3 có thể rõ ràng hơn.

Hướng dẫn how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

4b0

Huy hiệu vàng 20,9k3094 Huy hiệu bạc138 Huy hiệu đồng30 gold badges94 silver badges138 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_id() == '') {
    session_start();
}
4

Đã 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 how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

Leo Tahkleo TahkLeo Tahk

4101 Huy hiệu vàng6 Huy hiệu bạc15 Huy hiệu đồng1 gold badge6 silver badges15 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_id() == '') {
    session_start();
}
5

Hướng dẫn how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

Cấp Miller

25.8K16 Huy hiệu vàng140 Huy hiệu bạc158 Huy hiệu đồng16 gold badges140 silver badges158 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 how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

1

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

Hướng dẫn how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

Tunaki

129K45 Huy hiệu vàng325 Huy hiệu bạc409 Huy hiệu đồng45 gold badges325 silver badges409 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 how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

Thay thế

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

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

Đã 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 how check session is already started in php? - phiên kiểm tra đã bắt đầu như thế nào trong php?

1

Trạng thái phiên trong PHP là gì?

PHP - session_status () Phiên xử lý phiên hoặc xử lý phiên là một cách để cung cấp dữ liệu trên các trang khác nhau của ứng dụng web.Hàm session_status () trả về trạng thái của phiên hiện tại.returns the status of the current session.

Làm thế nào kiểm tra phiên hết hạn trong PHP?

Bạn cần sử dụng session_encode () và session_decode ().Cái trước sẽ chỉ đọc dữ liệu từ mảng $ _Session để nghe lén các phiên đòi hỏi một số sự lật đổ cẩn thận của session_id () và session_start ().use session_encode() and session_decode(). The former will only read data from the $_SESSION array so eavesdropping on sessions requires some careful subversion of session_id() and session_start() .

Làm thế nào phiên được bắt đầu và dừng phiên trong PHP?

Một phiên được bắt đầu với hàm session_start ().Các biến phiên được đặt với biến toàn cầu PHP: $ _Session.. Session variables are set with the PHP global variable: $_SESSION.

Hàm phiên khởi động () sẽ xuất hiện ở đâu?

Lưu ý: hàm session_start () phải là điều đầu tiên trong tài liệu của bạn.Trước bất kỳ thẻ HTML.Đối với câu hỏi của bạn, bạn có thể bắt đầu phiên bất cứ nơi nào bạn muốn, nhưng hãy cẩn thận phiên đó phải được bắt đầu trước bất kỳ đầu ra nào.Before any HTML tags. As for your question you can start session wherever you want, but beware that session must be started before any output.