Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesja, która działa błędnie
Forum PHP.pl > Forum > PHP
morrison
Dużo już czytałem o problemach z sesjami na tym forum, ale jak dotąd po wielu próbach nie udało mi się usunąć problemu. Zwracam się więc o pomoc. Otóż: mam strone z logowaniem, wchodze do tego oto skryptu:
  1. <?php
  2.  
  3. // dolaczenie plikow funkcji tej aplikacji
  4. require_once('funkcje_zakladki.php');
  5.  
  6. // utworzenie krtokich nazw zmiennych
  7. $_SESSION['nazwa_uz'] = $HTTP_POST_VARS['nazwa_uz'];
  8. $_SESSION['haslo'] = $HTTP_POST_VARS['haslo'];
  9.  
  10. if (($_SESSION['nazwa_uz'] && $_SESSION['haslo']) || ($_SESSION['nazwa_uz'] == '' || $_SESSION['haslo'] == ''))
  11. // proba logowania, sprawdzenie czy podano login oraz haslo
  12. {
  13. if (loguj($_SESSION['nazwa_uz'], $_SESSION['haslo']))
  14. {
  15. // jesli uzytkownik znajduje sie w bazie danych rejestracja identyfikatora
  16. $HTTP_SESSION_VARS['prawid_uzyt'] = $_SESSION['nazwa_uz'];
  17. }
  18. else
  19. {
  20. // nieprawidlowe logowanie
  21. tworz_naglowek_html('Login failed!');
  22. echo 'Nie podano poprawnej kombinacji nazwy uzytkownika i hasla !';
  23. tworz_HTML_URL('logowanie.php', 'Logowanie');
  24. tworz_stopke_html();
  25. }
  26. }
  27. tworz_naglowek_html('Menu');
  28.  
  29. // odczytanie zakladek uzytkownika
  30. if ($tablica_url = pobierz_urle_uzyt($HTTP_SESSION_VARS['prawid_uzyt']));
  31. wyswietl_urle_uzyt($tablica_url);
  32. sprawdz_prawid_uzyt();
  33. // tworzenie menu opcji
  34. wyswietl_menu_uzyt();
  35.  
  36. tworz_stopke_html();
  37. ?>

gdy juz zostane zalogowany, jestem w menu glownym. I wlasnie tu poczatek problemu, poniewaz z tego miejsca jest kilka linkow do innych skryptow i gdy do nich wejde to moge pomiedzy nimi sie przelaczac i jestem caly czas zalogowany, ale gdy chce wrocic do tego menu glownego to wowczas
niestety zmienne sesji haslo i login gina i trafiam do strony wylogowania. Podejrzewam, ze problem tkwi w powyzszym skrypcie ale gdzie? Prosze o pomoc
KRCreater
w pliku zaloguj.php utworz ciastko o nazwie "login"
A w każdym pliku w którym wymagana jest autoryzacja dodaj na początku to:

  1. <?php
  2.  
  3.  if (!isset($_SESSION['login'])) # sprawdza czy w sesji jest zaladowana zmienna login:)
  4.  {
  5.  
  6.  if((isset($_COOKIE['autologin'])) || (isset($_COOKIE['login']))){
  7.  
  8.  
  9. if((isset($_COOKIE['autologin']))){
  10. $login = explode(&#092;"|\",$_COOKIE['autologin']);
  11. } else {
  12. $login = explode(&#092;"|\",$_COOKIE['login']);
  13. }
  14.  
  15.  
  16.  
  17.  $sql = mysql_connect(&#092;"$sql_host\",\"$sql_admin\",\"$sql_pass\");
  18.  mysql_select_db(&#092;"$sql_baza\");
  19.  
  20.  $z = &#092;"SELECT * FROM user_list WHERE id='\".$login[0].\"' AND kod='\".$login[1].\"' LIMIT 1\";
  21.  $w = mysql_query($z);
  22.  $row = mysql_fetch_array($w);
  23.  
  24. $id = $row['id'];
  25. $haslo = $row['user_pass'];
  26. $login = $row['user_name'];
  27. $ban= $row['ban'];
  28. $admin= $row['admin'];  
  29.  
  30.  
  31. session_is_registered(&#092;"id\");
  32. $_SESSION['id'] = $id;  
  33.  
  34. session_is_registered(&#092;"login\");
  35. $_SESSION['login'] = $login;
  36.  
  37. session_is_registered(&#092;"haslo\");
  38. $_SESSION['haslo'] = $haslo;
  39.  
  40. session_is_registered(&#092;"ban\");
  41. $_SESSION['ban'] = $ban;
  42.  
  43. session_is_registered(&#092;"admin\");
  44. $_SESSION['admin'] = $admin;
  45.  
  46.  
  47.  
  48.  
  49.  }
  50. }
  51.  
  52. ?>


Tak ja sobie poradziłem z niechcianym wylogowaniem, a zarazem z autologowaniem winksmiley.jpg

Pozdrawiam
morrison
Dzięki wielkie za odpowiedź, myślę, że skorzystam wkrótce z części tego skryptu, natomiast, zanim napisałeś odp. ja uporałem się z moim problemem w taki oto sposób:
te oto linie kodu:
  1. <?php
  2.  
  3. $_SESSION['nazwa_uz'] = $HTTP_POST_VARS['nazwa_uz'];
  4. $_SESSION['haslo'] = $HTTP_POST_VARS['haslo'];
  5.  
  6. ?>

zastąpiłem kodem:
  1. <?php
  2.  
  3. if(!isset($_SESSION['nazwa_uz'])){
  4.      $_SESSION['nazwa_uz'] = $HTTP_POST_VARS['nazwa_uz'];
  5. };
  6. if(!isset($_SESSION['haslo'])){
  7.      $_SESSION['haslo'] = $HTTP_POST_VARS['haslo'];
  8. };
  9.  
  10. ?>

Mianowicie problem był w tym, że pierwszy raz po wejsciu do skryptu z formularza logowania nazwa_uz i haslo bylo przekazywane przez POST i skrypt przechodzil do zalogowania bo mial te dane w POST'e. Apotem gdy z innych skryptow wchodzilem do tego skryptu to on od nowa podstawial wartosci do zmiennej - niestety wartosci puste. Tak wiec wystarczylo dodac IF'y dwa:)
Ale potem pojawil sie nowy problem poniewaz troche w skryptach pozmienialem, ale jakies drobnostki tylko. Otoz od pewnej chwili zauwazylem ze gdy probuje sie zalogowac do mojego systemu to raz mi sie to udaje a raz nie!! Dlaczego?? Z baza jest w porzadku, sprawdzalem w kilku przegladarkach i nie wiem co jest grane..
Czy tu chosi o jakies cookies czy cos takiego? Nie wiem poniewaz w php na razie nie jestem zbyt zaawansowany raczej. Np dana przegladarka czasem mnie zalohuje a czasem nie, czyszcze cache przegladarki, ale w sumie to nie ma konkretnej roznicy, czegos brakuje mi w skrypcie?
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.