Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zanikająca sesja?
Forum PHP.pl > Forum > Przedszkole
smagul
Witam, zrobiłem prosty panel administracyjny. Niestety użytkownicy (szczególnie ci z firefox) zgłaszają że są wylogowywani co chwila bez kliknięcia w 'wyloguj' sad.gif nie wiem czemu.

oto najważniejsze elementy tego systemu:

  1. <?php session_start(); ?>
  2. ble ble ble...
  3. <body>
  4. <?php //ustalanie danych sesyjnych
  5.  if (!isset($HTTP_SESSION_VARS['prezenter_online'])) $HTTP_SESSION_VARS['prezenter_online']=0; //jeśli nie wiadomo czy jest zalogowany, to zakładamy że nie jest
  6.  if (isset($HTTP_GET_VARS['login']) && $HTTP_GET_VARS['login']==0) { //jeśli zmienna login ma wartość 0 to wylogowuje uzytkownika
  7.      $HTTP_SESSION_VARS['prezenter_online']=0;
  8.      unset($HTTP_SESSION_VARS['prezenterid']);
  9.      unset($HTTP_SESSION_VARS['prezentername']);
  10.      unset($HTTP_SESSION_VARS['prezentertype']);
  11.  }
  12.  else if (isset($HTTP_GET_VARS['login']) && $HTTP_GET_VARS['login']==1) { //zalogowanie użytkownika
  13.      $login=$HTTP_POST_VARS['usernazwa'];
  14.  $password=$HTTP_POST_VARS['userhaslo'];
  15.  connectionadmin();
  16.  $zapytanie=mysql_query("SELECT * FROM users WHERE username='".$login."' AND userpassword='".$password."' AND activ=1"); //active to sprawdzenie czy uzytkownik aktywował konto, $password jest jeszcze kodowane ale ten fragment również usunałem.
  17.  $sprawdz=mysql_num_rows($zapytanie);
  18.  disconnectionadmin();
  19.  if(!$sprawdz){ //jeżeli SQL nie zwrócił wyników to uzytkownik dalej nie jest zalogowany
  20.      $HTTP_SESSION_VARS['prezenter_online']=0;
  21.      $wiadomosc['login']="<p style=\"color: red; text-align: center;\">Błędny login lub hasło</p>";
  22.  }
  23.  else{
  24.      while ($tab=mysql_fetch_assoc($zapytanie)){ //jeśli podał poprawne dane to zapamiętuje w sesji najważniejsze dane.
  25.          $HTTP_SESSION_VARS['prezenterid']=$tab["id"];
  26.          $HTTP_SESSION_VARS['prezentername']=$tab["username"];     
  27.          $HTTP_SESSION_VARS['prezentertype']=$tab["usertype"];
  28.      }
  29.  $prezentertype=explode("-", $HTTP_SESSION_VARS['prezentertype']); //a tutaj sprawdzenie czy dana osoba ma prawo oglądać tę stronę
  30.  if($prezentertype[0]==2) $HTTP_SESSION_VARS['prezenter_online']=1;
  31.  else $wiadomosc['login']="<p style=\"color: red; text-align: center;\">Brak uprawnień</p>";
  32.  }
  33.  }
  34. ?>
  35. ble ble ble
  36. <?php if($HTTP_SESSION_VARS['prezenter_online']==1) { //sprawdzam czy user jest zalogowany, jeśli tak to może przeglądać treść strony ?>
  37. ble ble ble - treść strony
  38. <?php }
  39.       else { //sprawdzanie czy user jest online koniec!! ?>
  40.     <?php echo $wiadomosc['login']; //informacja o praku uprawnień lub złym haśle ?>
  41. ble ble ble    formularz do logowania
  42. <?php } //koniec okna logowania?>
  43. </body>
  44. </html>


w treści strony nie zmieniam ani razu wartości zmiennej 'prezenter_online' nie zachodzi równiez zamknięcie sesji nigdzie sad.gif. na moim komputerze na operze ani na ie nigdy nie nastąpiło wylogowanie ... na innych niestety takie rzeczy się trafiają... nie wiem już co robić :/ ciasteczka?
Mephistofeles
A czemu korzystasz z tych przestarzałych nazw? Dziś używamy $_SESSION/$_POST/$_GET itd. winksmiley.jpg.
Spawnm
$HTTP_SESSION_VARS['prezentertype'] , $HTTP_GET_VARS['login'] ? php 4?
teraz się daje $_SESSION i $_GET.
//$password=$HTTP_POST_VARS['userhaslo'];
nie filtrujesz danych.
  1. <?php
  2. if (isset($HTTP_GET_VARS['login']) && $HTTP_GET_VARS['login']==0) {
  3. ?>

daj zamiast tego to:
  1. <?php
  2. if($_GET['logout']=='logout'){
  3. ?>

i w html
<a href='index.php?logout=logout'>wyloguj</a>
Mephistofeles
Nawet w PHP4 były już nowe nazwy. Faktycznie, ten sposób wylogowania jest bardzo dziwny... Zrób coś w stylu action=logout, będziesz mógł dopisać inne akcje winksmiley.jpg.
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.