2011-08-01 10 views
7

Chcę sprawdzić, czy sesja jest aktualnie ustawiona, a jeśli tak, to pozwól, aby strona działała normalnie (nie rób nic), jeśli nie utworzy sesji.Sprawdź, czy sesja jest ustawiona czy nie, a jeśli nie, utwórz ją?

musiałem spojrzeć na innego SO pytanie, w którym poniższy kod został wysłany:

if (empty($_SESSION['login'])) { } else { } 

Czy najprostszym sposobem, aby to zrobić jest ustawić coś takiego $_SESSION['a'] dla każdej sesji, a następnie uruchomić if(empty($_SESSION['a'])) do sprawdzić, czy sesja istnieje?

Co więcej, możesz użyć zmiennej sesji bez wywoływania session_start() w pierwszej kolejności, co powoduje, że jest przestarzała (próbowałem wczoraj, jako echo, a nie instrukcję if, aby sprawdzić, czy zmienna przepływa nie zdając sobie sprawy, że session_start() musi być wywołany, zanim mógłbym wywołać echo zmiennej).

Najprawdopodobniej jest to łatwy sposób, który jest często używany, po prostu nie mogę tego znaleźć.

Każda pomoc będzie bardzo ceniona!

Odpowiedz

22

zwraca ciąg znaków identyfikujący bieżącą sesję. Jeśli sesja nie została zainicjalizowana, zwróci pusty ciąg.

if(session_id()) 
{ 
     // session has been started 
} 
else 
{ 
     // session has NOT been started 
     session_start(); 
} 
+0

Wielkie dzięki :). Przyjmę po tym, że 10 minutowy zegar zniknie. – Fireworksable

+2

Dalsza poprawa - nie musisz sprawdzać, czy łańcuch jest fałszywy - użyj zwrotu 'session_id()' jako samego testu; puste ciągi są wartościami "falsey", co oznacza, że ​​'' 'będzie oceniało fałsz w instrukcji' if'. – Nightfirecat

Powiązane problemy