Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesje
Forum PHP.pl > Forum > Przedszkole
The Night Shadow
Jakie mogą być przyczyny gubienia wartości zmiennych w sesjach, oraz jak temu przeciwdziałać? Zdarza się, że po stworzeniu sesji, manewrując między kolejnymi stronami, w pewnym momencie gubiona jest zmienna loginu zalogowanego użytkownika, ale co dziwne sam fakt zalogowania nadal jest widoczny.

Np. menu, w którym pewne opcje dostępne są dla zalogowanych, pewne dla admina (znikają tylko te ostatnie).

Przed chwila zauważyłem, ze notorycznie zdarza się to po wejściu na stronę z następującym kodem php:

  1. <?php
  2. if ($send=="Wyślij")
  3. {
  4. $nad=strip_tags(htmlspecialchars(stripslashes(trim($_POST['nada'])), ENT_QUOTES));
  5. $odb=strip_tags(htmlspecialchars(stripslashes(trim($_POST['odbi'])), ENT_QUOTES));
  6. $tem=strip_tags(htmlspecialchars(stripslashes(trim($_POST['tema'])), ENT_QUOTES));
  7. $dza=strip_tags(htmlspecialchars(stripslashes(trim($_POST['zalozeniadata'])), ENT_QUOTES));
  8. $date=time();
  9. $wiadomosc = strip_tags(htmlspecialchars(stripslashes(trim($_POST["tresc"])), ENT_QUOTES));
  10. if ($baza = mysql_connect($mysql_host, $mysql_login, $mysql_haslo)) 
  11. {
  12. if (mysql_select_db($mysql_baza)) 
  13. {
  14. if ($nad==$_SESSION["login"])
  15. {
  16. $zapytanie = "INSERT INTO pw SET odbiorca='$odb', nadawca='$nad', status='odpowiedz', datazalozenia='$dza', temat='$tem', tresc='$wiadomosc', data='$date'";
  17. $wykonaj = mysql_query ($zapytanie);
  18. if ($wykonaj)
  19. {
  20. }
  21. else
  22. {
  23. if ($odb==$_SESSION["login"])
  24. {
  25. $zapytanie = "INSERT INTO pw SET odbiorca='$nad', nadawca='$odb', status='odpowiedz', temat='$tem', tresc='$wiadomosc', data='$date'";
  26.  $wykonaj = mysql_query ($zapytanie);
  27. }
  28. }
  29. $zapytanie = "UPDATE pw SET data='$date' WHERE (temat='$tem' and status='poczatek')";
  30. $wykonaj = mysql_query ($zapytanie);
  31. if ($_SESSION["login"]=$wiersz["nadawca"])
  32. {
  33. $zapy = "UPDATE pw SET pnadawca='przeczytana' WHERE (data='$date' and temat='$tem')";
  34. $wyko = mysql_query ($zapy);
  35. }
  36. if ($_SESSION["login"]=$wiersz["odbiorca"])
  37. {
  38. $zapy = "UPDATE pw SET podbiorca='przeczytana' WHERE (data='$date' and temat='$tem')";
  39. $wyko = mysql_query ($zapy);
  40. }
  41. }
  42. Header ('Location: rejestracja.php?opcja=pw');
  43. }
  44. else
  45. {
  46. echo 
  47. "<span style=\"color:red;\"><center>Nie można połączyć się z bazą - spróbuj ponownie za chwilę...</center></span>";
  48. mysql_close($baza);
  49. }
  50. }
  51. else
  52. {
  53. echo 
  54. "<span style=\"color:red;\"><center>Nie można połączyć się z serwerem MySQL - spróbuj ponownie za chwilę...</center>";
  55. }
  56. }
  57. ?>
hwao
sesja sie tworzy w ogole?smile.gif

session_start() posiadasz?

Nie ma problemow z naglowami?

Dodaj ob_start()
The Night Shadow
session_start(); zgubiłem... :- ) Dzięki...



A jednak nie... nadal je tu gubi. Poza tym star sesji nie musi nastęować w pliku includowanych jeśli nastąpił w pliku do, którego się includuje prawda?

Zmieniem troszkę ten kod, bo miał kilka wad (logicznych), ale nadal gubi te dane sesyjne,

  1. <?php
  2. if ($send=="Wyślij")
  3. {
  4. $nad=strip_tags(htmlspecialchars(stripslashes(trim($_POST['nada'])), ENT_QUOTES));
  5. $odb=strip_tags(htmlspecialchars(stripslashes(trim($_POST['odbi'])), ENT_QUOTES));
  6. $tem=strip_tags(htmlspecialchars(stripslashes(trim($_POST['tema'])), ENT_QUOTES));
  7. $dza=strip_tags(htmlspecialchars(stripslashes(trim($_POST['zalozeniadata'])), ENT_QUOTES));
  8. $date=time();
  9. $wiadomosc = strip_tags(htmlspecialchars(stripslashes(trim($_POST["tresc"])), ENT_QUOTES));
  10. if ($baza = mysql_connect($mysql_host, $mysql_login, $mysql_haslo)) 
  11. {
  12. if (mysql_select_db($mysql_baza)) 
  13. {
  14. if ($nad==$_SESSION["login"])
  15. {
  16. $zapytanie = "INSERT INTO pw SET odbiorca='$odb', nadawca='$nad', status='odpowiedz', datazalozenia='$dza', temat='$tem', tresc='$wiadomosc', data='$date'";
  17. $wykonaj = mysql_query ($zapytanie);
  18. $zapy = "UPDATE pw SET pnadawca='przeczytana' WHERE (data='$date' and temat='$tem')";
  19. $wyko = mysql_query ($zapy);
  20. $zapytanie = "UPDATE pw SET data='$date' WHERE (temat='$tem' and status='poczatek')";
  21. $wykonaj = mysql_query ($zapytanie);
  22. Header ('Location: rejestracja.php?opcja=pw');
  23. }
  24. else
  25. {
  26. if ($odb==$_SESSION["login"])
  27. {
  28. $zapytanie = "INSERT INTO pw SET odbiorca='$nad', nadawca='$odb', status='odpowiedz', temat='$tem', tresc='$wiadomosc', data='$date'";
  29.  $wykonaj = mysql_query ($zapytanie);
  30.  $zapy = "UPDATE pw SET podbiorca='przeczytana' WHERE (data='$date' and temat='$tem')";
  31. $wyko = mysql_query ($zapy);
  32. $zapytanie = "UPDATE pw SET data='$date' WHERE (temat='$tem' and status='poczatek')";
  33.  $wykonaj = mysql_query ($zapytanie);
  34.  Header ('Location: rejestracja.php?opcja=pw');
  35. }
  36. }
  37. }
  38. else
  39. {
  40. echo 
  41. "<span style=\"color:red;\"><center>Nie można połączyć się z bazą - spróbuj ponownie za chwilę...</center></span>";
  42. mysql_close($baza);
  43. }
  44. }
  45. else
  46. {
  47. echo 
  48. "<span style=\"color:red;\"><center>Nie można połączyć się z serwerem MySQL - spróbuj ponownie za chwilę...</center>";
  49. }
  50. }
  51. ?>
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.