![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 28.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Mam 3 pliki: handlowiec.php (strona logująca) , panel_handlowy.php (strona która pojawia się po zalogowaniu) , wyloguj.php (strona zawierająca skrypt, który kończy sesję i przekierowuje do handlowiec.php)
Gdy zaloguję się na stronie handlowiec.php, dostaję się do strony panel_handlowy.php, gdzie z kolei uruchamiam link który uruchamia wyloguj.php i przekierowuje mnie na stronę logowania. Wszystko by było ładnie pięknie, ale dlaczego bo wylogowaniu mogę dostać się przez przeglądarkę do strony panel_handlowy.php bez żadnego ponownego logowania. Zawartość wyloguj.php:
Zawartość panel_handlowy.php (fragment początkowy):
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 690 Pomógł: 92 Dołączył: 6.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
a gdzie session_start... ?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
logowanie:
wylogowanie:
handlowiec:
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 28.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
ok, dodałem w pliku panel_handlowy.php funkcję session_start();
mimo wszystko cały czas mogę się dostać do tej strony |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 248 Pomógł: 38 Dołączył: 29.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
session_destroy <-- a wystarczy przeczytać dwa pierwsze zdania w manualu.
Z tego wynika, że to za mało. Najlepiej usunąć całkowicie ciasteczka sesji, albo w Twoim przypadku zrobić tak:
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 28.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
spróbowałem z s_login - dalej nic
ale dziwne, bo przecież w pliku wyloguj.php też jest sprawdzany warunek czy tablica sesji istnieje i wychodzi że nie istnieje (po skasowaniu sesji). Wniosek z tego, że wszystko jest ok i po wylogowaniu jesteśmy przerzucani do strony handlowiec.php no i nikt nie ma pomysłu... Ten post edytował dawido000 8.07.2011, 21:13:01 |
|
|
![]()
Post
#7
|
|
Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
Ale w czym Ty konkretnie masz problem? Użytkownik może się dostać do panel_handlowy.php, mimo iż go wylogowujesz? Zrób tam sobie echo/var_dump z sesji i wszystko będzie jasne.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 1 Dołączył: 4.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Z tego co wiem, to session_destroy nie usuwa $_SESSION, ale tylko jej zawartość. Więc nie możesz sprawdzać if(!$_SESSION). Może przeglądarka korzysta z cache? Sam tak miałem i jak czyściłem cache, to było ok.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 28.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
a jak czyścić cache używając poleceń php
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Na górze napisałem dokładnie co i jak trzeba zrobić a ty dalej swoje :/
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 28.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Niestety nie działa to co napisałeś CuteOne.
Przedstawiam pewne podpowiedzi: Zmodyfikowałem plik wyloguj.php do takiej postaci:
Wynikiem przy pierwszym wywołaniu jest: Wartość funkcji empty przed kasowaniem zmiennych sesji: Wartość funkcji empty po skasowaniu zmiennych sesji: 1 Wynikiem przy naciśnięciu odśwież jest: Wartość funkcji empty przed kasowaniem zmiennych sesji: 1 Wartość funkcji empty po skasowaniu zmiennych sesji: 1 Dziwne nieprawdaż? |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 309 Pomógł: 56 Dołączył: 3.11.2006 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Nie, nie dziwne. empty zwraca 1 dla PUSTEJ zmiennej i 0 / nic dla zmiennej w której coś jest (w tym przypadku login). Właściwie to zamiast empty powinieneś użyć isset, ale mniejsza o to.
Cytat Wartość funkcji empty przed kasowaniem zmiennych sesji: <- tutaj jest puste czyli fałsz - zmienna nie jest pusta, czyli jest ustawiony w niej login
Wartość funkcji empty po skasowaniu zmiennych sesji: 1 <- empty zwraca 1 czyli prawdę - zmienna jest pusta / usunięta Wynikiem przy naciśnięciu odśwież jest: Wartość funkcji empty przed kasowaniem zmiennych sesji: 1 <- odświeżasz stronę, ale się nie logujesz więc zmienna dalej jest pusta bo ją wcześniej usunąłeś Wartość funkcji empty po skasowaniu zmiennych sesji: 1 <- jw. Ten post edytował muk4 11.07.2011, 12:37:29 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 23:38 |