Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] - wczytywanie strony po wylogowaniu
Forum PHP.pl > Forum > Przedszkole
szym011
Witam.
Mój problem wygląda następująco:
Piszę aplikacje w której zastosowałem autoryzacje użytkowników opartą na mysql. W sęsie takim, że wchodzi osoba na strone, loguje się i w przypadku poprawnego zalogowania sesja umieszczana jest w bazie. Problem pojawia się, gdy taka osoba się wylogowuje. Po naciśnięciu wyloguj z bazy usuwana jest sesja danego użytkownika, oraz ciasteczko z jego przeglądarki. Po wylogowaniu przsenosi do strony logowania i tam po naciśnięciu wstecz (w menu przeglądarki) wraca do poprzednio zalogowanej strony z możliwością kliknięcia w coś jednorazowo(przenosi z powrotem do strony logowania). W skrypcie mam takie zabezpieczenie,ze jeżeli nie ma takiej sesji przenosi do strony logowania. Dodam, że po checi ponownego wykonania tego pliku(wywolaniem url) przenosi prawidłowo do strony logowania. Czy wie ktoś jak można rozwiązać mój problem? Wersja php: 5.0, używam systemu szablonów OPEN POWER TEMPLATE.
Przepraszam za mój język, oraz błędy. Z góry dziękuję za pomoc!
nanoo
Ale na czym polega dokładnie Twój problem? Przyznam, że przeczytałem 3 razy temat i nie wiem w przypadku czego prosisz o pomoc.
Chodzi o to, że po wylogowaniu user po kliknięciu wstecz ciągle ma dostęp do treści, które powinny być dostępne tylko po zalogowaniu?
szym011
Tak, przepraszam za zamieszanie. Nie wiedziałem jak sprawnie to opisać.
Niktoś
Spróbuj dodać te liniki do swojego skryptu pomiędzy <head> a </head>:
Cytat
<meta http-equiv="Expires" content="0">
<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate">
<meta http-equiv="Cache-Control" content="post-check=0, pre-check=0">
<meta http-equiv="Pragma" content="no-cache">

Wyczyść cache swojej przeglądarki i zobacz jak działa.
szym011
Wolałbym uniknąć tego sposobu. Aplikacja trochę informacji ładuje do cache i strasznie spowolniło by to jej działanie. Chciałbym prosty, szybki i wydajny sposób.
92nasti
Dodałeś na samym początku sprawdzenie aktywności sesji?
szym011
Tak. Wygląda to mniej więcej tak:
  1. if(!isset($_COOKIE['sid'])) header("Location: ./login.php");// sid nazwa ciasteczka z id sesji
  2. $session = sql_get_session_by_value($_COOKIE['sid']);// sprawdza czy istnieje w bazie sesja z takim id, jesli nie zwraca FALSE
  3. if($session == FALSE) // nie ma sesji przenosi
  4. {
  5. header("Location: login.php");
  6. }
Niktoś
Nie wiem ,ale mam takie przeczucie ,że z tym raczej nic nie zrobisz jak masz cache włączone.Wydaje mi się ,że jedynym wyjściem jest właśnie wyłączenie cachowania na stronie.
szym011
Spróbowałem jednak zastosować wyłączenie cache no i niestety brak efektu. Nadal po wylogowaniu mogę wrócić do poprzedniej strony.
Jakieś inne pomysły?
Kostek.88
A moze po prostu header('Location: /adres strony'); exit; questionmark.gif Oczywiscie zaraz po wylogowaniu ze strony.
r4xz
sądzę iż jest to pewnego rodzaju walka z wiatrakami i wypadałoby najpierw zastanowić się nad sensem takiego rozwiązania. wady niestety widać gołym okiem (brak cache chociażby). drugi aspekt - jest to pewnego rodzaju próba 'zablokowania' przycisku 'wstecz' - a po coś on ino został stworzony (ale to już czysto subiektywne zdanie) smile.gif
abort
OK, jestem w stanie zrozumieć Twoją chęć tego, by przez przycisk 'back' nie dostać informacji, do których potrzeba się zalogować. Ale... w takim razie co zrobisz, jeśli ktoś otworzy sobie kilka zakładek czy nawet okien z treścią z serwisu (i informacjami tylko dla zalogowanych), a w jednym z nich się wyloguje? A co zrobisz, jak sobie taką stronę zapisze na dysk?

Sorry, ale ja nie widzę sensownego rozwiązania. Nie ma możliwości kontrolowania tego, co już zostało wysłane do przeglądarki...
by_ikar
IMO jak masz sprawdzanie w dalszej części strony czy użytkownik jest zalogowany, to nawet jeżeli może kliknać, to i tak go przekieruje na stronę logowania. Wniosek - dla ciebie to żaden problem.
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.