Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czas trwania sesji php
elwierka
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 26.12.2007

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


Niedawno zaczęłam naukę php i chcę wszystko pisać "ręcznie" żeby się nauczyć języka, a nie używając frameworków.

Po zalogowaniu się do aplikacji chcę, aby sesja trwała określony czas. Wiem, że ustala się to w pliku php.ini ale chodzi mi o coś innego. Chcę w pisanej aplikacji zrobić coś takiego, że osoba, która poprawnie zaloguje się do strony, może poruszać się po niej, dopóki nie minie określony czas. Poza tym chcę, aby po czasie bezczynności, np. 30 sek, sesja była niszczona, żeby nie można było przeglądać stron bez ponownego zalogowania się i najlepiej, jakby po upływie tego czasu od razu następowało przekierowanie do strony logowania. Chciałabym też, aby po wylogowaniu i wciśnięciu w przeglądarce przycisku "Przejdź do poprzedniej strony" - nie można było uzyskać dostępu poprzez ponowne przesłanie danych do skryptu. Obecnie mój skrypt logowania pozwala na to, dane są ponownie przesyłane, przez co znowu można zalogować sie do aplikacji i po niej się poruszać. Nie jest to bezpieczne.

Chcę też zrobić coś takiego, że jeśli jest się zalogowanym i np. wchodzę na stronę główną - a tu jest formularz logowania - żeby nie trzeba było za każdym razem się logować, tylko żeby aplikacja sama poznała - jeśli jest ktoś zalogowany, to przełącza do strony powitalnej itp...

Nie chcę używać ciasteczek. Czy da się to zrobić za pomocą tylko sesji? Wiem, jakie są funkcje sesji, czytałam w manualu, ale nie potrafię tego wszystkiego poskładać do kupy i stworzyć całkowitego kodu. Szukałam też gotowych rozwiązań w internecie, ale to wszystko nie było do końca takie, jak chcę.

Jak to zrobić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
marcint83
post
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 4
Dołączył: 24.08.2010

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


Witaj,

Da się to zrobić za pomocą sesji, w sumie najlepiej z ich pomocą to zrobić (IMG:style_emoticons/default/winksmiley.jpg)
Mechanizm sesji samoczynnie ustawi odpowiednie ciasteczko

Na każdej stronie na której chcesz używać sesji musisz dać kod (na samej górze):
  1. ini_set('session.gc_maxlifetime', 30); //ustawienie w php.ini czasu bezczynnosci sesji na 30 sekund
  2. session_name("mojasesja");
  3. session_set_cookie_params(3600,"/",$_SERVER['SERVER_NAME']); //calkowity czas trwania sesji 3600 s


Teraz po poprawnym zalogowaniu użytkownika ustawiasz mu zmienna sesyjna np.
  1. $_SESSION['user_id']=1;


Jesli chcesz pokazac tresc tylko zalogowanym to piszesz tak:

  1. if($_SESSION['user_id']>0){
  2. //tu wpisujesz kod ktory ma byc dostepny tylko dla zalogowanych
  3. }else{
  4. //np. przekierowanie do logowania
  5. }


Zeby aplikacja "poznala" czy ktos jest zalogowany i przekierowala go na inna strona to wpisujesz:

  1. if($_SESSION['user_id']>0){
  2. header("Location: nowa_strona.php");exit;
  3. }



Powodzenia
Go to the top of the page
+Quote Post
darek334
post
Post #3





Grupa: Zarejestrowani
Postów: 87
Pomógł: 3
Dołączył: 23.04.2013

Ostrzeżenie: (30%)
XX---


Cytat(marcint83 @ 24.08.2010, 13:17:59 ) *
Witaj,

Da się to zrobić za pomocą sesji, w sumie najlepiej z ich pomocą to zrobić (IMG:style_emoticons/default/wink.gif)
Mechanizm sesji samoczynnie ustawi odpowiednie ciasteczko

Na każdej stronie na której chcesz używać sesji musisz dać kod (na samej górze):
  1. ini_set('session.gc_maxlifetime', 30); //ustawienie w php.ini czasu bezczynnosci sesji na 30 sekund
  2. session_name("mojasesja");
  3. session_set_cookie_params(3600,"/",$_SERVER['SERVER_NAME']); //calkowity czas trwania sesji 3600 s


Teraz po poprawnym zalogowaniu użytkownika ustawiasz mu zmienna sesyjna np.
  1. $_SESSION['user_id']=1;


Jesli chcesz pokazac tresc tylko zalogowanym to piszesz tak:

  1. if($_SESSION['user_id']>0){
  2. //tu wpisujesz kod ktory ma byc dostepny tylko dla zalogowanych
  3. }else{
  4. //np. przekierowanie do logowania
  5. }


Zeby aplikacja "poznala" czy ktos jest zalogowany i przekierowala go na inna strona to wpisujesz:

  1. if($_SESSION['user_id']>0){
  2. header("Location: nowa_strona.php");exit;
  3. }



Powodzenia


Nie to wogóle śmieci, z was tacy programiści PHP jak z koziej dupy trąba, takie ludowe przysłowie,
absolutnie nie ustawia się niczego poprzez zmienne globalne ini to jest totalne noobostwo i lamerstwo. To taka sama głupota jakbyśmy chcieli sobie ustawić nazwę ciasteczka sesji poprzez używając funkcji ini_set('session.name') no totalna bzdura. Do tego służą inne funkcje.
Proszę sobie poczytać o nich:
http://php.net/manual/pl/function.session-name.php

Ten post edytował darek334 16.05.2015, 15:55:33
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: 12.10.2025 - 10:06