Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sesje php oop, ustawienie i sprawdzanie sesji
rahul
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 5.03.2011

Ostrzeżenie: (0%)
-----


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();
}


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
mat-bi
post
Post #2





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

Ostrzeżenie: (0%)
-----


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)
Go to the top of the page
+Quote Post
rahul
post
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 5.03.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
mat-bi
post
Post #4





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
rahul
post
Post #5





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 5.03.2011

Ostrzeżenie: (0%)
-----


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 ?!

Go to the top of the page
+Quote Post
greycoffey
post
Post #6





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

Ostrzeżenie: (20%)
X----


Co wy macie z tym "classa" - piszemy po polsku klasa, po angielsku class. Komunikat pokazuje ci wszystko na tacy - próbujesz wyświetlić obiekt.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 01:58