Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zasada używania sesji do logowania.
MalyKazio
post
Post #1





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Witam,

Chcę stworzyć system logowania na moją stronkę. Mam jednak parę wątpliwości, które chciałbym, żebyście pomogli mi rozwiać.
Chodzi o zasady używania sesji do logowania.

Formularz logowania to nie problem. Chodzi mi jednak o potwierdzenie / zaprzeczenie mojemu sposobowi rozumowania.

Myślę, żeby napisać funcję powiedzmy sprawdz(), ktora będzie sprawdzała zmienna sesji powiedzmy autoryzacja i zwracała TRUE jeśli $_SESSION[autoryzacja]=1 - czyli użytkownik zalogowany (haslo i nazwa zgodne z tymi w bazie).
Dalej, co za tym idzie można by używać tej funkcji w dowolnym miejscu sprawdzając czy użytkownik jest zalogowany. Mam rację?
Jak jednak zrobić to wszystko. Powiedzmy mam plik login.php, do którego przekazywane sa dane z formularza logowania. Jeśli haslo i nazwa uzytkownika zgadzaja sie z tymi w bazie to co... wtedy zacząć sesje za pomocą session_start? Dalej... czy sesje mają jakiś swój "okres ważności"? Jeśli tak to pewnie w nagłówku każdej strony, jeśli użytkownik jest zalogowany musiałbym "odświeżyć sesję" żeby nie wygasła, tak?

Przy wylogowywaniu oczywiście session_destroy. Czy coś pominąłem? Dobrze rozumuję?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
MalyKazio
post
Post #2





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Tzn nawet jeśli nies niezalogowany to rozpoczynać sesję? A po zalogowaniu zmieniać tylko zmienna powiedzmy $_SESSION[autoryzacja] ?

Ok, dalej...
Czyli tak, w nagłowku daję session_start.

teraz wiadomo, jeśli jkest zalogowany to powedzmy wartość $_SESSION[auth]=1. Jak jednak ustawić czas ważności sesji, zeby trwała powiedzmy 60 minut. Po każdym przeładowaniu strony sesja jest odświeżana. Ale powiedzmy, że ktoś się zaloguje i przez 60 minut będzie bezczynny. Jak zrobić, żeby jego sesja wygasła i po odświeżeniu strony był wylogowany?

Dobrze, juz chyba wiem. Trzeba troche pobawić się ini_set.
Im człowiek więcej wie tym więcej ma pytań. Na webhelp.pl znalazłem tutorial do umieszczania sesji w bazie MySQL. Czy warto się tym zając? Jaką przewagę ma umieszczanie sesji w bazie nad "zwykłym"?

Ten post edytował MalyKazio 29.09.2006, 09:05:44
Go to the top of the page
+Quote Post
L_Devil
post
Post #3





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

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


Cytat(MalyKazio @ 29.09.2006, 07:59:22 ) *
Tzn nawet jeśli nies niezalogowany to rozpoczynać sesję?
A po czym chcesz sprawdzać, czy jesteś zalogowany? Właśnie po sesji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Najpierw uruchamiasz sesję -> a dopiero potem sprawdzasz, czy jesteś zalogowany (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Cytat(MalyKazio @ 29.09.2006, 07:59:22 ) *
Dobrze, juz chyba wiem. Trzeba troche pobawić się ini_set.
ini_set służy do ustawień jądra php - do sesji nie jest mu nic potrzebne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


Cytat(MalyKazio @ 29.09.2006, 07:59:22 ) *
Jak zrobić, żeby jego sesja wygasła i po odświeżeniu strony był wylogowany?
W sesji przechowujesz czas ostatniej aktywności użytkownika (np. $_SESSION['last_activity'] = time(); // chodzi o wpisywanie aktualnego czasu na każdej podstronie). Na każdej stronie, zanim przypiszesz ten nowy czas, porównujesz go także z aktualnym, więc:
  1. <?php
  2. $dlugosc_sesji_w_sekundach = 3600; //godzinka chyba starczy, nie? :)
  3. if($_SESSION['last_activity']<time()-$dlugosc_sesji_w_sekundach)
  4. {
  5. //user nie robil nic przez godzine...
  6. header("Location: <a href="http://www.twoj-serwer.pl/strona/do/logowania/login.php");" target="_blank">http://www.twoj-serwer.pl/strona/do/logowa...gin.php");</a>
  7. }
  8. else
  9. {
  10. $_SESSION['last_activity'] = time();
  11. }
  12. ?>
Proste, nie? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


Cytat(MalyKazio @ 29.09.2006, 07:59:22 ) *
Im człowiek więcej wie tym więcej ma pytań. Na webhelp.pl znalazłem tutorial do umieszczania sesji w bazie MySQL. Czy warto się tym zając? Jaką przewagę ma umieszczanie sesji w bazie nad "zwykłym"?
Generalnie pisanie własnych sesji jest o tyle lepsze, że masz pełną kontrolę nad wszystkim, co się z sesją dzieje (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) A także, i to jest niezaprzeczalny bonus, masz możliwość sprawdzania, jaki użytkownik jest aktualnie zalogowany, poprzez sprawdzanie czy sesja danego użytkownika istnieje (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Wady, natomiast to: musisz przewidzieć, jakie zmienne sesyjne będą ci potrzebne (tzn. dodawanie informacji "w locie" [on-the-fly] jest znacznie trudniejsze niż w klasycznych sesjach) i po drugie, właśnie ta metoda jest trudniejsza od standardowych sesji... mimo wszystko się nie zrażaj - ja swoją przygodę z sesjami zacząłem od własnej sesji (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Jeżeli masz jakieś pytania jeszcze, śmiało pytaj - postaramy się ci odpowiedzieć, jak będziemy umieli najlepiej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 11.10.2025 - 09:09