Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> unset() działa tylko 1 krok wstecz
czezz
post
Post #1





Grupa: Zarejestrowani
Postów: 141
Pomógł: 0
Dołączył: 24.07.2003

Ostrzeżenie: (10%)
X----


ustawiłem sobie przy wylogowywaniu z formularza:

  1. <?
  2. unset($_SESSION['login'];
  3. header(&#092;"location: log_again.php\");
  4. ?>


dzięki temu zmienna przekazująca nazwę loginu zostanie zniszczona a następnie zostane przekierowany do formularza logowania.
I tak:
gdy wykona się powyższy kod i kliknę w przycisk przeglądarki "WSTECZ"
zobaczę komunikat:
Kod
Uwaga: Strona wygasła Żądana strona została utworzona przy wykorzystaniu informacji przesłanych w formularzu. Strona nie jest dostępna. Ze względów bezpieczeństwa, na wszelki wypadek, program Internet Explorer nie przesyła ponownie informacji.

Aby ponownie przesłać informacje i ponownie oglądać stronę sieci Web, kliknij przycisk Odśwież.


...i było by SUPER, gdyby nie fakt, że ponowne kliknięcie "WSTECZ" pokazuje stronę gdzie zmienna $_SESSION['login'] pokazuje się z wartością, którą chciałem zniszczyć/usunąć/odrejestrować.

Czy nie ma jakiegoś polecenia, które całkowicie wyczyści wartość zmiennej sesyjnej? W manualu jest napisane, że wystarczy wpisać unset('zmienna').
Go to the top of the page
+Quote Post
dasko
post
Post #2





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 9.11.2004

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


ogolnie do niszczenia zmiennych sesyjnych jest session_unregister" title="Zobacz w manualu PHP" target="_manual, i w tym wypadku musisz tak zrobić.
W manualu poczytaj sobie komentarze ludzi co do tej funkcji.

Ten post edytował dasko 17.03.2005, 13:04:42
Go to the top of the page
+Quote Post
czezz
post
Post #3





Grupa: Zarejestrowani
Postów: 141
Pomógł: 0
Dołączył: 24.07.2003

Ostrzeżenie: (10%)
X----


Wiedziałem, że taką odpowiedź dostane (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

w namual jest napisane tak:

jeżeli używasz $_SESSION (lub $HTTP_SESSION_VARS), nie używaj session_register(), session_is_registered() i session_unregister().


Daletgo używam unser(). Dla przekory próbowałem też z session_unregister(). - Efekt jest dokładnie ten sam (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
dasko
post
Post #4





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 9.11.2004

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


Cytat
jeżeli używasz $_SESSION (lub $HTTP_SESSION_VARS), nie używaj session_register(), session_is_registered() i session_unregister().

Użycie $_SESSION nie wyklucza użycia tamtych, po prostu nie można dać:
  1. <?php
  2.  
  3. session_register($_SESSION['foo']);
  4.  
  5. ?>

wydaje mi się że o to tam chodzi.

Cytat
It took me some time to figure this out:
If you have register globals off, you probably use $_SESSION to acces you session vars. If you want clear a sessionvar inside the current script, but also in next pages, do this as follows:

session_unregister('varname');

Otherwise varname will keep returning either inside the script, or on the next pages.

unset($_SESSION['varname']) will only unset the session var on the current page.


Skoro gościu tak napisał, powinno działać...
Go to the top of the page
+Quote Post
czezz
post
Post #5





Grupa: Zarejestrowani
Postów: 141
Pomógł: 0
Dołączył: 24.07.2003

Ostrzeżenie: (10%)
X----


... i i tak jak kliknę 2 razy "WSTECZ" to zmiwnna $_SESSION[login] odzyskuje swoją wartość (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
FiDO
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Zeby usunac sesje najpierw musi ona istniec, wiec na poczatku przed unset'em musisz miec session_start(), masz ?
Go to the top of the page
+Quote Post
czezz
post
Post #7





Grupa: Zarejestrowani
Postów: 141
Pomógł: 0
Dołączył: 24.07.2003

Ostrzeżenie: (10%)
X----


mam (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

wcisnąłem do tego pliku już chyba wszystko co się dało i efekt dalej jest taki sam (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

  1. <?php
  2. $mobile = ($_SESSION['login']);
  3. session_unregister($_SESSION['login']);
  4. unset($_SESSION['login']);
  5.  
  6.  
  7. ?>


Ten post edytował czezz 17.03.2005, 16:54:03
Go to the top of the page
+Quote Post
adif
post
Post #8





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 12.06.2005

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


Nie tak dawno sam miałem z tym problem i stwierdziłem że to raczej jest problem po stronie przeglądarki niż samego php, która to uparczywie próbuje wysyłać zmienne z formularza i tym samym ponownie zalogować użytkownika.

Znalazłem na to małe rozwiązanie, w pewnym sensie oszukuję przeglądarkę - u mnie działa - więc spróbuj tego:

zaraz po zalogowaniu jak tworzysz sobie zmienna sesji:

ja to robie bez uzycia session_register, a mianowicie:
  1. <?php
  2.  
  3.  $login = $_POST['login'];
  4.  
  5.  $_SESSION['uzytkownik'] = $login;
  6.  
  7. ?>



przekierowujesz użytkownika do nowej lokalizacji przy pomocy skryptu:
  1. <?php
  2.  
  3. echo '<script>location.replace (\"index.php\")</SCRIPT>';
  4.  
  5. ?>

Wówczas po wylogowaniu:

  1. <?php
  2.  
  3. unset($_SESSION['uzytkownik']);
  4.  
  5. ?>


jak dajesz w przeglądarce wstecz nagle okazuje się że już nie chce wysyłać ponownie danych i jesteś poprawnie wylogowany.

Szczerze mówiąc jestem ciekawy czy zadziała to u Ciebie bo zdziwiło mnie kiedy zadziałało u mnie

pozdrawiam
Go to the top of the page
+Quote Post
bobi
post
Post #9





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 19.04.2005

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


A co z ciasteczkami? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
id4
post
Post #10





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: --
Skąd: Rogożnik /K-ce/

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


Witam

Ja zawsze robię tak, że po poprawnym zalogowaniu wysyłam użytkownika do nowej podstrony czy to przez header(), czy przez JS (jak @adif). Powoduje to taki efekt, że po wymuszonym przeskoku do innej podstrony (inną może być również obecna) jest taki, że dane z formularza nie są umieszczone w tablicy wysyłanej z przeglądarki. Nie ma wówczas żadnego problemu z przycikami wstecz itp. Nie ma też takiego efektu po zalogowaniu, że jak klikniemy F5 to ponownie będzie pytał, czy wysłać dane z forma. Działą na 100% - bo wszędzie to stosuje.
Go to the top of the page
+Quote Post
brachu
post
Post #11





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 13.04.2005

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


jezeli moge dodac swoje 3grosze to zawsze mozna pokombinowac inaczej - bo jezeli chodzi tylko o wylogowanie poprawne uzytkownika to zawsze mozna zrobic tak:
  1. <?php
  2. session_register(&#092;"up\",\"im\",\"naz\",\"login\");
  3.  
  4. if($HTTP_GET_VARS['w']==1){
  5. $im=null;
  6. $naz=null;
  7. $login=null;
  8. $up=null;
  9. }
  10. ?>

wiem ze to troche na chama (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif) ale dziala w polaczeniu z lista uzytkownikow w MySQL-u i nie mialem jakies wiekszych problemow z tym narazie;)

pozdrawiam
Go to the top of the page
+Quote Post

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: 23.08.2025 - 19:56