szym011
27.11.2011, 21:54:06
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
27.11.2011, 22:13:04
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
27.11.2011, 22:17:26
Tak, przepraszam za zamieszanie. Nie wiedziałem jak sprawnie to opisać.
Niktoś
27.11.2011, 22:24:16
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
27.11.2011, 23:18:09
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
27.11.2011, 23:21:20
Dodałeś na samym początku sprawdzenie aktywności sesji?
szym011
27.11.2011, 23:26:56
Tak. Wygląda to mniej więcej tak:
if(!isset($_COOKIE['sid'])) header("Location: ./login.php");// sid nazwa ciasteczka z id sesji $session = sql_get_session_by_value($_COOKIE['sid']);// sprawdza czy istnieje w bazie sesja z takim id, jesli nie zwraca FALSE
if($session == FALSE) // nie ma sesji przenosi
{
header("Location: login.php"); }
Niktoś
27.11.2011, 23:30:15
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
6.12.2011, 20:42:14
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
6.12.2011, 21:40:16
A moze po prostu header('Location: /adres strony'); exit;

Oczywiscie zaraz po wylogowaniu ze strony.
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)
abort
6.12.2011, 22:52:25
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
6.12.2011, 22:57:20
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.