Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: teoretyczne pytanie ;)
Forum PHP.pl > Forum > Przedszkole
mrok
Witam

wie ktoś czy
  1. <?php
  2. if ( (isset($_SESSION['isLoged'])) && ($_SESSION['isLoged']==true))
  3. ?>

mozna zastapic samym
  1. <?php
  2. if ($_SESSION['isLoged']==true)
  3. ?>

czy istnieje teoretyczna możliwość ze za $_SESSION['isLoged'] przypisany zostanie losowy ciąg bitów i kiedyś zajdzie ten warunek??
l0ud
Cytat
czy istnieje teoretyczna możliwość ze za $_SESSION['isLoged'] przypisany zostanie losowy ciąg bitów i kiedyś zajdzie ten warunek??


Nie. Ale kod może wywalać notice, jeżeli zmienna nie będzie zadeklarowana.
Wieviór
a jaka wartość przypisana jest do $_SESSION['isLoged'] jeśli jest true? To jest w ogóle chyba błędne:

  1. <?php
  2. if ($_SESSION['isLoged']==true)
  3. ?>


... nie powinno być:

  1. <?php
  2. if ($_SESSION['isLoged']=='true')
  3. ?>


?
l0ud
Cytat
a jaka wartość przypisana jest do $_SESSION['isLoged'] jeśli jest true?


Jakakolwiek, tylko nie 0 albo np. '' (pusta). PHP samo zmieni typ zmiennej na boolean, pomijając fakt, że można po prostu przypisać z góry zmiennej taki typ, nadając jej właśnie false albo true.
webdice
Ad 1. Możesz spokojnie zastąpić ten kod drugim przykładem, bo jeśli zmienna ma wartość TRUE to oczywistym jest że istnieje.
Ad 2. Nie.
l0ud
Cytat
Ad 1. Możesz spokojnie zastąpić ten kod drugim przykładem, bo jeśli zmienna ma wartość TRUE to oczywistym jest że istnieje.


Gorzej tylko jak jej... nie ma. Wtedy przy odpowiednim raportowaniu błędów kod wygeneruje notice, co oznacza, że nie jest zbyt poprawny winksmiley.jpg
Wieviór
Cytat(l0ud @ 4.03.2008, 19:08:23 ) *
Jakakolwiek, tylko nie 0 albo np. '' (pusta). PHP samo zmieni typ zmiennej na boolean


A to o tym nawet nie wiedziałem ;] Dzięki ;]



Jeśli robisz logowanie (a tak to wygląda), rozbij to na dwa ify, zewnętrzenie isset(), wewnętrznie is true. Bo jeśli np. ktoś się zaloguje, a potem długo wykaże bezczynność, to mu sesje zniknie czyli isset() da false i else możesz strzelić echo 'brak sesji'.

Inna sprawa, że po co ustawiać $_SESSION na coś innego niż true? Po prostu, albo zmienna sesyjna jest (bo ktoś podał dobry login i hasło i została stworzona) i wtedy pokazujesz zabezpieczoną treść, albo jej nie ma.
mrok
dzieki wielkie za wszystkie odpowiedzi - pomogly

Cytat
Bo jeśli np. ktoś się zaloguje, a potem długo wykaże bezczynność, to mu sesje zniknie czyli isset() da false i else możesz strzelić echo 'brak sesji'.

po czesci o to mi chodzi. jesli ktos sie zaloguje i odejdzie do komputera to po np 15 minutach nastapi automatyczne wylogowanie.


Cytat
Inna sprawa, że po co ustawiać $_SESSION na coś innego niż true?

poniewaz przed tym ifem wstawiam session_start() a wiec sesja juz na pewno jest - jakas. Teraz skad wiedziec ze jest to sesja zalogowanego usera??
Wieviór
session_start(); zaczyna tylko sesję dla strony, zmienna sesyjna $_SESSION['isLoged'] nie będzie ustawiona, dopóki gdzieś w kodzie jej nie zadeklarujesz.
mrok
a juz rozumiem oco Ci chodzi Wieviór. Masz racje w zasadzie to ustawienie wartosci dla $_SESSION['isLoged'] nie jest konieczne, wazne zeby byla (ale zeby byla to cos jednak trzeba jej przypisac) wiec ustawiam 'true' dla czytelnosci kodu.
Wieviór
Lepiej zamiast tworzyć $_SESSION['isLoged'], ustaw sobie $_SESSION['user_id'] albo $_SESSION['login']. Będziesz mógł od razu użyć id użytkownika czy nazwę, a tak samo możesz sprawdzić poprzez właśnie isset ;]
mrok
dobra idea - dzieki za pomysl
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.