Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesje php oop
Forum PHP.pl > Forum > PHP
rahul
Witam panowie.
chcialbym aby zawsze widna byla forma (classa) logowania na mej stronie( taka w prawym gornym rogu ktora sobie wisi) ktora nie dosc ze loguje uzytkownika to do tego rozpoczyna sesje jak wszystko jest ok. Problem w tym ze sesja jest zapisana w momencie kiedy uzytkownik sie zaloguje, a obiekt jest wywolywany za kazdym razem na stornie przy przeladowaniu, zatem nie zawsze zwraca $_SESSION. No dobra, ale po co ma zwracac za kazdym razem skoro raz juz zapisal dane do sesji. Tak to rozumuje, jednak kiedy strone przeladowuje, trzeba znow sie logowac aby sesja sie pojawila. Help ?!

Odrazu zaznacze ,ze reczkuje w php'e generalnie, a do tego zaciekawilo mnie OOP dlatego wiec prosze o odrobine litosci w krytykowaniu tego co napisalem:P
A napisalem taki oto poczatkowy kod:


$user = new User;
$session = $user -> login(@$_POST['user_name'] , @$_POST['user_password']);

if ( isset ( $session ) ) {

echo "SESJA"; }else{
echo "nie ma";
}



class User {
function login($user, $password) {
if ( isset ($user) && isset ($password) ) {

echo "login wywolany";
$user_id = $this -> checkLoginData($user, $password);
$_SESSION = $user_id;
return $_SESSION;
}else{
echo " login nie wywolany";
}
}

function checkLoginData($user,$password) {

// hardCoded validation ->
if ($user == "dupa" && $password == "dupa") {

return 2;

}elseif ($user == "admin" && $password =="admin" ) {

$this -> user_id == 1;
return 1;

}else {
echo "wrong passes";
die();
}


mat-bi
Możesz zrobić funkcję __construct, która przy wywołaniu zacznie dla ciebie session_start();

Widać, ze ejsteś początkujący, logujesz usera, do sesji zapisujesz najczęściej id (ip można ze względów bezpieczeństwa) i potem cały czas odczytujesz(możesz np. w funkcji odczytującej zawrzeć od razu sprawdzanie profilu usera w bazie)
rahul
Ziomus, dzieki.. dziala. Mozesz rozbudowac swoja wypowiedz odnosnie mojego poczatkowania "logujesz usera, do sesji zapisujesz najczęściej id (ip można ze względów bezpieczeństwa) " - tak wlasnie chce zrobic, to zle ? wink.gif
pozdro.
mat-bi
Nie, to jest dobrze. Po prostu tworzysz formularz, obsługujesz go(podstawowa wiedza z baz danych się kłania) i potem przyporządkowujesz dla $_SESSION['id'] id usera, który pobrałeś z bazy. Potem przy każdym wywołaniu sprawdzasz, czy taka zmienna istnieje, jeśli tak, to pobierasz dane o userze z takim id, jesli nie, wyświetlasz formularz.
rahul
i tak oto natknalem sie na kolejny mini problem. Mianowicie, jak ustawiam sessje $_SESSION['user'] = $user_id nie moge w zaden sposob wywolac na innej stronie. Echo w kontrolerze tez nie pokazuje warosci. Dostaje taki blad "Object of class User could not be converted to string". Dodatkowo na stornie admina po zalogowaniu nie dziala mi takie oto proste sprawdzanie if ( $_SESSION['user'] == "admin" ). Pewnie jest jakis sposob aby te wartosci poprawnie przechowywac, badz wywolywac.
Help ?!

greycoffey
Co wy macie z tym "classa" - piszemy po polsku klasa, po angielsku class. Komunikat pokazuje ci wszystko na tacy - próbujesz wyświetlić obiekt.
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.