Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem sesji czy bład w kodzie
Forum PHP.pl > Forum > Przedszkole
Ryder
Mam taki problem

Wszystko testowane jest na localhoscie na 1 komputerze.

Jest panel użytkownika i panel administracyjny. Najpierw loguje sie na administratora,
a następnie się wylogowuje (nie wyłączając przeglądarki), potem loguje się na uzytkownika i tu pojawia sie problem.

Jeżeli w pasku teraz wpisze sciezke do strony admina(bedąc na koncie uzytkownika), nastepuje włączenie tej strony i wyswietla mi ze jest na nej administrator ( I co ciekawe moge tylko chodzic po tych stronach admina po ktorych wczesmniej chodziłem bedac zalogowany jako admin i oczywiscie po stronach przeznaczonych dla klienta, jezeli wejde na jakomś strone ktorej wczesniej mie załączałem przerzuca mnie do strony logowania)

(czego to jest przyczyna, sesji czy błąd programistyczny, niby usuwam wszystko z sesji, nie wiem pozostaja jakies pozostałości  w buforze)


Natomiast jezeli wyłacze przegladarke i uruchomie ponownie nie mam takiego problemu (konfliktu kont),wtedy wszystko działa dobrze i uzytkownika przerzuca do strony z logowaniem


Plik admin

  1. <?php require_once("../include/session.php"); ?>
  2. <?php fnk_potwierdz_logowanie_pracownik() ?>
  3.  
  4. ...



Plik klient

  1. <?php require_once("include/session.php"); ?>
  2. <?php fnk_potwierdz_logowanie() ?>
  3.  
  4. ...


Plik login
  1. <?php require_once("include/session.php"); ?>
  2. <?php require_once("include/polacz_z_baza.php"); ?>
  3.  
  4. if (fnk_zalogowany()) {
  5. if (strcmp($_SESSION['status'], 'klient') == 0)  {fnk_przejdz_do("klient.php");}
  6. if (strcmp($_SESSION['status'], 'pracownik') == 0) {fnk_przejdz_do("admin.php");}
  7.  
  8. sprawdzenie hasła i loginu 
  9. Jesli ok to
  10.  
  11. $_SESSION['id_uzytk'] = $znaleziony_uzytk['id_uzytkownika'];
  12. $_SESSION['login'] = $znaleziony_uzytk['login'];
  13. $_SESSION['status'] = $znaleziony_uzytk['status'];  // status jest klient lub pracownik
  14.  
  15. if($znaleziony_uzytk['status'] == "klient") {fnk_przejdz_do("klient.php");}
  16. if($znaleziony_uzytk['status'] == "pracownik") {fnk_przejdz_do("admin.php");}
  17.  
  18. }



Plik sesji

  1. <?php
  2. ob_start("ob_gzhandler");
  3. session_cache_limiter("must-revalidate");
  4. require_once("funkcje.php");
  5.  
  6. function fnk_zalogowany() {
  7. return isset($_SESSION['id_uzytk']);
  8. return isset($_SESSION['login']);
  9. return isset($_SESSION['status']);
  10. }
  11.  
  12. function fnk_potwierdz_logowanie_pracownik() {
  13.  
  14. if (!fnk_zalogowany()) {
  15. fnk_przejdz_do("login.php");
  16. }
  17. if (strcmp($_SESSION['status'], 'pracownik') <>0) {
  18.  fnk_przejdz_do("login.php");
  19. }
  20. }
  21.  
  22. function fnk_potwierdz_logowanie() {
  23. if (!fnk_zalogowany()) {
  24. fnk_przejdz_do("login.php");
  25. }
  26. if (strcmp($_SESSION['status'], 'klient') <>0) {
  27.  fnk_przejdz_do("login.php");
  28. }
  29. }
  30. ?>



Plik logout

  1. <?php
  2. $_SESSION = array(); 
  3.  
  4. if(isset($_COOKIE[session_name()])) {
  5. setcookie(session_name(), '', time()-42000, '/');
  6. }
  7.  
  8. //Zniszcz sesje
  9.  
  10.  fnk_przejdz_do("login.php?logout=1");
  11. ?>


  1. <?php
  2. function fnk_przejdz_do($location = NULL) {
  3.  
  4. if ($location != NULL) {
  5. header('Content-Type: text/html; charset=UTF-8');
  6. header("Location: {$location}");
  7. }
  8. }
  9. ?>
beton
proponuje wywalic usuwanie sesji przez session_destroy(); a zrobienie czegos takiego

  1. <?php
  2. foreach($_SESSION as $k => $v)
  3. $_SESSION[$k] = null;
  4. ?>


ewentualnie zamiast null dac ''
Ryder
Niestety nie pomogło to, ale zauważyłem jescze jedna rzecz

W internet explorer7 i firefox wszystko działa ok i nie mam problemu. Przerzuca uzytkownika gdy chce wejsc na konto admina.

W opera i internet explorer 6 da sie wejsc na konto admina
marcio
Narnolmalniejsza rzecz tez sie zdziwilem piszac cms'a ale robiac to na sesjach nie zamykajac przegladarki i nie wylogowyjac na tym samym kompie 2 sesje nie dzialaja i dlatego tak sie dzieje w sumie z cookie chyba jest to samo zaraz sprawdze
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.