![]() |
![]() ![]() |
![]() |
![]()
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ć? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Jeśli chcesz, by można było ze strony korzystać X czasu od momentu zalogowania, to musisz przechowywać w bazie czas zalogowania i podczas każdego przechodzenia między stronami porównywać go z aktualnym. Gdy będzie większy niż X -> wyloguj/zniszcz sesję i przekieruj na stronę logowania.
Czas życia sesji możesz określić jako jeden z jej parametrów. Uważam jednak, że 30s to bardzo mało. Czasem tyle trzeba do przeczytania kilku postów w temacie. Użytkownik szybko się zdenerwuje musząc co chwilę logować. Jeśli chodzi o wstecz, to w przypadku wylogowania i próby dostępu do tej strony, powinno zaprotestować bo będzie brak prawidłowej sesji. Jeśli sesja istnieje to uzależniaj wyświetlanie formularza logowania od zmiennych sesyjnych. Są -> wyświetl, brak -> olej to. Można dość ogólnikowo powiedzieć, że sesja to takie zmienne globalne. -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#3
|
|
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ć ![]() Mechanizm sesji samoczynnie ustawi odpowiednie ciasteczko Na każdej stronie na której chcesz używać sesji musisz dać kod (na samej górze): Teraz po poprawnym zalogowaniu użytkownika ustawiasz mu zmienna sesyjna np.
Jesli chcesz pokazac tresc tylko zalogowanym to piszesz tak:
Zeby aplikacja "poznala" czy ktos jest zalogowany i przekierowala go na inna strona to wpisujesz:
Powodzenia |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 654 Pomógł: 121 Dołączył: 27.10.2007 Skąd: Poznań, Łódź Ostrzeżenie: (0%) ![]() ![]() |
Hej
30s jako czas sesji to zdecydowanie zbyt mało. W niektórych systemach transakcyjnych banków długość sesji to 10 minut z jednoczesnym resetowaniem przy przeładowaniu. Pozdrawiam -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 0 Dołączył: 26.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Tak, 30 sek, to był tylko przykład....myślę, że w tej aplikacji nad którą pracuję, to 10 min bezczynności zdecydowanie wystarczy. No chyba, że czas, w którym wpisuje się dane do pól formularza, też jest uważany za bezczynność, to wtedy rzeczywiście będzie za krótko
![]() |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 3 Dołączył: 23.04.2013 Ostrzeżenie: (30%) ![]() ![]() |
Witaj, Da się to zrobić za pomocą sesji, w sumie najlepiej z ich pomocą to zrobić ![]() Mechanizm sesji samoczynnie ustawi odpowiednie ciasteczko Na każdej stronie na której chcesz używać sesji musisz dać kod (na samej górze): Teraz po poprawnym zalogowaniu użytkownika ustawiasz mu zmienna sesyjna np.
Jesli chcesz pokazac tresc tylko zalogowanym to piszesz tak:
Zeby aplikacja "poznala" czy ktos jest zalogowany i przekierowala go na inna strona to wpisujesz:
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 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 270 Pomógł: 184 Dołączył: 7.10.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Tej funkcji tez praktycznie sie nie uzywa wiec wstrzymaj sie z czasem z komentarzami tego typu
![]() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 24 Dołączył: 12.05.2013 Skąd: Hamburg Ostrzeżenie: (0%) ![]() ![]() |
Komentarz bezsprzecznie chamski, ale przyznać trzeba, że zaproponowane rozwiązanie wygląda jakby 'ślepy prowadził głuchego'.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 3 Dołączył: 23.04.2013 Ostrzeżenie: (30%) ![]() ![]() |
Komentarz bezsprzecznie chamski, ale przyznać trzeba, że zaproponowane rozwiązanie wygląda jakby 'ślepy prowadził głuchego'. ![]() ![]() Ten post edytował darek334 20.05.2015, 23:40:50 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.04.2025 - 07:49 |