Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: znikająca sesja na podstronach
Forum PHP.pl > Forum > PHP
red_john
Witam!

To mój pierwszy post na tym forum ale nie pierwsza wizyta:) Zawsze znalazłem tu odp na moje problemy ale nie tym razem:( Siedzę już nad tym trzeci dzień...
Do rzeczy:
1. Loguję się na stronie poprzez formularz
  1. <?php
  2. require_once('biblioteki.php');
  3.  
  4. naglowek('logowanie');
  5. ?>
  6. <div id="log">
  7. <fieldset>
  8. <legend>
  9. <h3>Moduł egzaminator</h3>
  10. </legend>
  11. <form action="log_index.php" method="post">
  12. <p><label>Imię: <input name="imie"/></label></p>
  13. <p><label>Nazwisko: <input name="nazwisko"/></label></p>
  14. <p><label>Nr indeks: <input type="password" name="indeks"/></label></p>
  15. <input type="submit" value="zaloguj"/>
  16. </form>
  17. </fieldset>
  18. </div>
  19. <?php
  20. stopka();
  21. ?>


2. Po zatwierdzeniu przenosi mnie do strony gdzie następuje sprawdzenie wpisanych danych i ustawienie sesji
  1. <?php
  2.  
  3. require_once('biblioteki.php');
  4.  
  5.  
  6. naglowek('log_index');
  7. if (($_POST['imie']) && ($_POST['nazwisko']) && ($_POST['indeks']))
  8. {
  9. //proba logowania
  10. $imie = $_POST['imie'];
  11. $nazwisko = $_POST['nazwisko'];
  12. $indeks = $_POST['indeks'];
  13.  
  14. if (loguj_admin($imie, $nazwisko, $indeks))
  15. {
  16. //$uzytkownik = $indeks;
  17. //jezeli dana konbinacja jest w bazie to zgloszenie identyfikatora uzytkownika
  18. $_SESSION['uzyt_admin'] = $indeks;
  19. sprawdz_uzyt_admin();
  20. echo "<h3>Administracja - strona główna</h3><br/><br/>";
  21. echo "<p>Co chcesz teraz zrobić?</p>";
  22. menu_glowne_admin();
  23.  
  24. }
  25. else if (loguj_user($imie, $nazwisko, $indeks))
  26. {
  27. $uzytkownik = $indeks;
  28. //jezeli dana konbinacja jest w bazie to zgloszenie identyfikatora uzytkownika
  29. $_SESSION['prawid_uzyt'] = $uzytkownik;
  30. sprawdz_prawid_uzyt();
  31. echo "Jako użytkownik możesz rozpocząć test.<br/>";
  32. tworz_HTML_URL('log_test_form.php', 'Rozpocznij test');
  33.  
  34. }
  35. else
  36. {
  37. echo "Problem z zalogowaniem!";
  38. }
  39. }
  40.  
  41.  
  42. else
  43. {
  44.  
  45. sprawdz_uzyt_admin();
  46.  
  47. //naglowek('log_index');
  48. echo "<h3>Administracja - strona główna</h3><br/><br/>";
  49. echo "<p>Co chcesz teraz zrobić?</p>";
  50. menu_glowne_admin();
  51. }
  52. stopka();
  53. ?>


Teraz funkcje sprawdzające:
  1. <?php
  2. function loguj_admin($imie, $nazwisko, $indeks)
  3. {
  4. $lacz = lacz_bd();
  5.  
  6. $zapytanie = "select * from administrator
  7. where imie = '".$imie."' and nazwisko = '".$nazwisko."' and indeks = '".$indeks."'";
  8. $wynik = $lacz->query($zapytanie);
  9.  
  10. if (!$wynik)
  11. {
  12. echo "Logowanie nie powiodło się! Jesteś w bazie?";
  13. }
  14.  
  15. if ($wynik->num_rows > 0)
  16. {
  17. return true;
  18. }
  19. else
  20. {
  21. echo "Nie można zalogować jako admin<br/>";
  22. return false;
  23. }
  24. }
  25. function sprawdz_uzyt_admin()
  26. {
  27. // sprawdzenie zalogowanie i powiadomienie, jeżeli nie
  28.  
  29. global $_SESSION;
  30. if (isset($_SESSION['uzyt_admin']))
  31. {
  32. $indeks = $_SESSION['uzyt_admin'];
  33. $lacz = lacz_bd();
  34.  
  35. $zapytanie = "select imie, nazwisko from administrator
  36. where indeks = '".$indeks."'";
  37. $wynik = $lacz->query($zapytanie);
  38. $wynik = wynik_bd_do_tablicy($wynik);
  39.  
  40. foreach ($wynik as $rzad)
  41. {
  42. $imie = $rzad['imie'];
  43. $nazwisko = $rzad['nazwisko'];
  44. }
  45. //echo "Zalogowano jako ".$_SESSION['uzyt_admin']." ";
  46. echo "<br/>Zmienna sesji zawiera ". $_SESSION['uzyt_admin']."<br/>";
  47. echo "<img class=\"ikon16\" src=\"images/ikony/16/user.png\"/>Zalogowano jako $imie $nazwisko ";
  48. tworz_HTML_URL('wylog.php', 'wyloguj');
  49. echo "<br/>";
  50. //return true;
  51. }
  52. else
  53. {
  54. echo 'Brak zalogowania jako admin.<br />';
  55. echo "Zmienna sesji zawiera". $_SESSION['uzyt_admin']."<br/>";
  56. tworz_HTML_URL('logowanie.php', 'Logowanie');
  57. stopka();
  58. // return false;
  59. }
  60. }


3. Kiedy wybieram już kolejną stronę sesja znika:(

-Wszystkie strony poza tą w pkt1 rozpoczynają się od session_start() - i nie ma przed tym innych znaków.
-Na localhost działa ok.
-I najciekawsze -> stronka jest na serwerze 4 dzień. Kiedy wrzuciłem ją wszystko chodziło, sesje działały. Po dwóch dniach sesja działa tylko na stronie z pkt2 a na pozostałych nie. Nie mam już siły do tego.

Ktoś podpowie?
Damonsson
Skoro działało i nagle przestało, a działa na localhoście to, może przypadkiem wyłączyłeś cookies dla tej strony w przeglądarce? Dla pewności wrzuć stronę na inny hosting, może to coś po ich stronie.
red_john
Ale dlaczego działa na pierwszej stronie a na kolejnej gubi sesję? Spr na każdej stronie co jest w zmiennej $_SESSION['uzyt_admin'] i powinno wywalić nr admina -> tak się dzieje zaraz po zalogowaniu ale już na kolejnej stronie zmienna jest pusta.
mstraczkowski
Nie używasz gdzieś przypadkiem session_regenerate_id(true) ?
red_john
Nie
Damonsson
A sprawdź session_get_cookie_params
red_john
Nie wiem czy dobrze zrobiłem:
  1. echo $x['lifetime']." lifetime<br/>";
  2. echo $x['path']." path<br/>";
  3. echo $x['domain']." domain<br/>";
  4. echo $x['secure']."secure<br/>";


i wynik:
0 lifetime
/ path
domain
secure

i co mi dają te informacje?

Ma ktoś jeszcze jakieś propozycje? Bo problem dalej jest:(

Problem rozwiązałem na razie w sposób zadowalający - folder przechowujący sesję był pełen i nie można było zapisać kolejnej. Jednak nie wiem dlaczego się zapełnieł skoro wylogowanie działa prawidłowo i sesja znika.

Jednak powstał inny problem dzisiaj - nie wiem czym jest spowodowany. Myślę że to wina przeglądarki więc opisałem go tutaj Temat: firefox brak formatowania od polowy strony

Ktoś pomoże?
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.