Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sesja i przycisk wstecz w IE
Forum PHP.pl > Forum > Przedszkole
korad1
Jak zrobic zeby po wylogowaniu sie z serwisu, przycisniecie przycisku wstecz w IE , nie powodowalo wejscia powtornego w formie zalogowanej.
Rozwiazaniem byloby wylaczenie przegladarki, bo sesja zostala by automatycznie skasowana, natomiast jak zrobic zeby nie wylaczajac przegladarki usunac sesje
NIe uzywam ciasteczek a pliki sesyjne trzymane sa po stronie serwera.
revyag
Na początku pliku objętego logowaniem dajesz:
  1. <?php
  2. if(!isset($_SESSION[&#092;"login\"])){
  3.     header(&#092;"Location:login.php\");
  4. }
  5. ?>

A przy wylogowaniu:
  1. <?php
  2. unset($_SESSION[&#092;"login\"]);
  3. header(&#092;"Location:login.php\");
  4. ?>

i już.
Naciśnięcie przycisku wstecz nic nie da, bo zmienna sesyjna nie istnieje, następi przekierowanie na stronę logowania.
Guest
sessin_destroy() uzywam ale , to nie pomaga.Nacisniecie raz przycisku wstecz , wyswietla wczesniej przezemnie napisany komunikat typu"niewazany klucz sesji...", ale ponowne nacisniecie wstecz i nastepnie odswiez powoduje powrot do strony sprzed wylogowania
kszychu
Cytat(Guest @ 2005-05-24 11:11:24)
ale ponowne nacisniecie wstecz i nastepnie odswiez powoduje powrot do strony sprzed wylogowania

A używasz na tej stronie sesji do weryfikacji użytkownika? Coś nie wydaje mi się...
revyag
Można zrobić to tak:
- plik index.php z formularzem logowania
- plik login.php w którym następuje autoryzacja i przekierowanie do strony po zalogowaniu - main.php
- plik wyloguj.php w którym sesja jest niszczona

W stronie z formularzem pobierany jest login i hasło i przekazywane postem do pliku login.php i w nim przetwarzane.
  1. <?php
  2. if(!isset($_POST[&#092;"login\"]) || !isset($_POST[\"haslo\"])){
  3. header(&#092;"Location:index.php\");
  4. }else{
  5. //tu np. operacje z bazą danych weryfikujące czy user moze sie zalogowac
  6. $_SESSION[&#092;"login\"] = $_POST[\"login\"];
  7. $_SESSION[&#092;"haslo\"] = md5($_POST[\"password\"]);
  8. header(&#092;"Location:main.php?\".SID); 
  9. }
  10. ?>

W main.php sprawdzane są zmienne sesyjne, jeśli istnieją to ok, a jeśli nie to user zostaje przekierowany na index.php.
  1. <?php
  2. if(!isset($_SESSION[&#092;"login\"])||!isset($_SESSION[\"haslo\"])){
  3. header(&#092;"Location:index.php\");
  4. }
  5. ?>

Plik wyloguj.php (również zabezpieczony przed wywołaniem go przez niezalogowanego usera
  1. <?php
  2.  
  3. if(!isset($_SESSION[&#092;"login\"])||!isset($_SESSION[\"haslo\"])){
  4. header(&#092;"Location:index.php\");
  5. }
  6. //tu jakaś treść
  7. unset($_SESSION[&#092;"login\"]);
  8. unset($_SESSION[&#092;"haslo\"]);
  9.  echo 'Zaloguj sie ponownie <a href=\"index.php\">zaloguj</a>';
  10.  
  11. ?>
korad1
Wyglada ze problem jest innego typu, tzn. usuwajac recznie po stronie serwera plik z sesja oczywiscie kolejne odwolanie do strony powoduje wyswietlenie komunikatu o bledzie i powoduje przejscie do strony logowania, ale jak wspomnialem wczesniej dwukrotne nacisniecie [wstecz] w IE powoduje powrot do strony sprzed logowania i co najciekawsze w katalogu z sesjami odtwarza plik sesyjny wczesniej przeze mnie usuniety. Podejrzewam ze zapisuje go ze swojej pamieci podrecznej. Rozwiazanim bylo by usuwajac zemienne sesyjne usunac zawartosc tej pamieci?
revyag
Może masz walniętą przeglądarkę ? Sprawdzałeś pod mozillą/operą ?
korad1
sprawdzalem pod roznymi wersjami IE i zddaje sie pod opera, sprawdze jeszcze pod firefox, ale to raczej nie ma znaczenia pod jaka przegladarka
Radarek
Cytat(revyag @ 2005-05-24 11:15:11)
Może masz walniętą przeglądarkę ? Sprawdzałeś pod mozillą/operą ?

Hehe. Zepsuta przegladark odtwarzajaca sesje? ;-) Widocznie jest zle napisany system logowania/wylogowywania i tyle.
korad1
Jak zwykle diabeł tkwi w szczegółach.
Zamiast używać
  1. <?php
  2. header(&#092;"Location:nazwa_pliku.php\");
  3. ?>

uzywalem
  1.  ?><script LANGUAGE=javascript>
  2.  parent.window.location.href=\"nazwa_pliku.php\"
  3.  </script><?


Po zmianie problem jak ręką odjął
geneza
no to na przyszlosc nalezy uwazac w czym sie koduje
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.