2015-05-13 9 views
5

Zastanawiałem się, czy to, że jeśli oświadczenie:PHP :: Najlepszy sposób, aby wykryć, czy początek sesji

if(session_id()===""){} 

jest równoznaczne z tym, jeżeli oświadczenie:

if(!session_id()){} 

Obie prace dla mnie!

ale podoba mi się sorter, więc zastanawiałem się, czy jest w 100% równoważny i mogę na tym polegać, aby wykryć, czy sesja się rozpoczęła.

+0

Drugi nie zadziała, jeśli identyfikator sesji * będzie * równy 0. Pozostałbym przy pierwszym: – Rizier123

+0

Dzięki! Trzymałbym się z pierwszym :-) –

Odpowiedz

7

Te instrukcje nie są w pełni równoważne.

if(!session_id()){} oznacza if(session_id() != TRUE){} więc funkcja session_id() może powrócić 0, FALSE, '', NULL.

i if(session_id()===""){} jest sprawdzenie czy session_id() zwraca pusty ciąg znaków, więc jedyną opcją, dla których zestawienie if zwróci TRUE, jest ''.

Z podręcznika PHP o session_id():

session_id() zwraca identyfikator sesji dla bieżącej sesji lub pusty ciąg („”), jeśli nie ma bieżącej sesji (nie ma bieżącej sesji id istnieje) .

Preferowane jest użycie 1-szej drogi.