Alcadur
Użytkownik
- Dołączył
- Listopad 10, 2007
- Posty
- 107
Witam, może mi wytłumaczyć czemu podczas używania $_SESSION w funkcji obiektu który jest tworzony w case nie jest on widoczny poza nim? Do tej pory nie spotkałem się nigdzie z wykorzystaniem tego przy obiektach a to co czytałem wskazywało, że po rozpoczęciu sesji (session_start()) $_SESSION jest dostępne globalnie. Oto fragment kodu:
Jeśli przeniesiemy 'TO' przed switch to wszystko działa nie wiem tylko czemu, $_SESSION posiada taki zasięg jak obiekt który go tworzy?
PHP:
session_start();
...
class uzytkownik
{
public function logowanie($login,$pass)
{
$baza = new baza();
$baza->zapytanie("select login,pass from users where login='".$login."' and pass='".$pass."'");
if($baza->fetch_row() == 1)
{
$_SESSION["user"] = $baza->rows[0];
header("Location: ?status=zalogowany");
}//end if
else
{
echo "Podałeś niepoprawne dane".$login." - ".$pass;
}//end else
}//end logowanie()
public function wyloguj()
{
session_destroy();
}
}
switch($_GET["status"])
{
case "sprawdzenie":
$user = new uzytkownik; // <- TO
$user -> logowanie($_POST["login"],$_POST["pass"]);
break;
case "zalogowany":
echo $_SESSION["user"]."<br />";
break;
default: echo "Nieprzewidziane zdarzenia";
}//end switch
Jeśli przeniesiemy 'TO' przed switch to wszystko działa nie wiem tylko czemu, $_SESSION posiada taki zasięg jak obiekt który go tworzy?