Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] po przeładowaniu strony ginie wartość $_SESSION
Forum PHP.pl > Forum > Przedszkole
wariusz
Witam mam problem z sesją po zalogowaniu wyświetlam powitanie użytkownika:

  1. <?php
  2. if ($_SESSION["zalogowany"]=="tak") {
  3.  echo "<p>Witaj <b>".$_SESSION["login"]."</b></p>";
  4. ?>


i zaraz po zalogowaniu jest ok wyświetla się Witaj "user" ale po odświeżeniu strony wyświetla się tylko Witaj .

jeszcze kod sesji:


  1. <?
  2.  
  3. $pg_host = "host";
  4. $pg_login = "login";
  5. $pg_haslo = "haslo";
  6. $pg_baza = "baza";
  7. $pg_tabela = "tabela";
  8.  
  9.  
  10. $login = $_POST["login"];
  11. $haslo = $_POST["haslo"];
  12.  
  13. if ($_GET["login"]=="koniec") { // wylogowanie
  14. } else if ($login<>"" and $haslo<>"") {
  15.  $haslo = md5($haslo);
  16.  
  17.  $db_handle = pg_connect("dbname =$pg_baza user=$pg_login password=$pg_haslo host=$pg_host");
  18.  if($db_handle)
  19.  {
  20.   $query="SELECT * FROM $pg_tabela WHERE login='$login' and haslo='$haslo' and status=5";
  21.   $wynik = pg_exec ($db_handle, $query);
  22.    if (pg_numrows($wynik)==1) {
  23.        $dane=pg_fetch_array($wynik);
  24.        $_SESSION["zalogowany"]="tak";
  25.        $_SESSION["login"]=$dane["login"];
  26.        $_SESSION["imie"]=$dane["imie"];
  27.        $_SESSION["email"]=$dane["email"];
  28.      }
  29.   pg_close();
  30.  }
  31.  
  32.  }
  33. ?>


może ma ktoś jakiś pomysł?
rinz
A gdzie
Kod
session_start();
na poczatku? czarodziej.gif
wariusz
przepraszam źle napisałem ta pierwsza część kodu jest zawarta w tym samym pliku co druga, może podam zawartość całego pliku rejestracji:

  1. <?
  2.  
  3. $pg_host = "shosl";
  4. $pg_login = "login";
  5. $pg_haslo = "haslo";
  6. $pg_baza = "baza";
  7. $pg_tabela = "tabela";
  8.  
  9. $login = $_POST["login"];
  10. $haslo = $_POST["haslo"];
  11.  
  12. if ($_GET["login"]=="koniec") { // wylogowanie
  13. } else if ($login<>"" and $haslo<>"") {
  14.  $haslo = md5($haslo);
  15.  
  16.  $db_handle = pg_connect("dbname =$pg_baza user=$pg_login password=$pg_haslo host=$pg_host");
  17.  if($db_handle)
  18.  {
  19.   $query="SELECT * FROM $pg_tabela WHERE login='$login' and haslo='$haslo' and status=5";
  20.   $wynik = pg_exec ($db_handle, $query);
  21.    if (pg_numrows($wynik)==1) {
  22.        $dane=pg_fetch_array($wynik);
  23.        $_SESSION["zalogowany"]="tak";
  24.        $_SESSION["login"]=$dane["login"];
  25.        $_SESSION["imie"]=$dane["imie"];
  26.        $_SESSION["email"]=$dane["email"];
  27.      }
  28.   pg_close();
  29.  }
  30.  
  31.  }
  32. ?>
  33.  
  34.  
  35.  
  36.  
  37. <table border="1" width="100%">
  38. <tr><td valign="top" width="200">
  39. <p>
  40. lewa ramka
  41. </p>
  42.  
  43. <?
  44.  
  45.  
  46. if ($_SESSION["zalogowany"]=="tak") {
  47.  echo "<p>Witaj <b>".$_SESSION["login"]."</b></p>";
  48.  echo "<br><a href=\"index.php?login=koniec\">wyloguj się</a>";
  49.  echo "<br><a href=\"zmiana.php\">zmień hasło</a>";
  50. } else {
  51.  
  52. echo <<<KONIEC
  53. <form action="index.php" method="post">
  54. <table>
  55. <tr>
  56.   <td align="right">login: </td>
  57.   <td><input type="text" name="login" /></td>
  58. </tr>
  59. <tr>
  60.   <td align="right">hasło: </td>
  61.   <td><input type="password" name="haslo" /></td>
  62. </tr>
  63. <tr>
  64.   <td colspan="2" align="right">
  65.   <input type="submit" value="zaloguj" /></td>
  66. </tr>
  67. </table>
  68. </form>
  69. <a href="rejestracja.php?opcja=przypomnij">przypomnij hasło</a></br />
  70. <a href="rejestracja.php">ZAREJESTRUJ SIĘ!</a>
  71. KONIEC;
  72.  
  73. }
  74. ?>
  75.  
  76.    </td>    
  77.  
  78.  
  79.  
  80. <td valign="top">
  81.  
  82. <p>
  83. prawa ramka
  84. </p>
  85. <p>
  86. <a href="index.php">index.php</a> - <a href="index2.php">index2.php</a>  - <a href="wyszukaj.php">wyszukaj</a>
  87. <? if ($_SESSION["login"]=="admin"){ echo '<p><a href="admin.php">Panel admina</a></p> ';} ?>
  88. </p>
  89.  
  90. <?
  91. if ($_SESSION["zalogowany"]=="tak") {  echo "<p>TEN tekst widzi tylko zalogowany użytkownik! </p>".$_SESSION["zalogowany"]; }
  92.  
  93. ?>
  94.  
  95.  
  96. </td>
  97. </tr>
  98. </table>
JarCzeS
sprobuj zrobic katalog tmp tam gdzie masz strone
webasek
daj coś takiego
  1. <?php
  2. print_r($_SESSION);
  3. ?>


i napisz co wyświetla przed przeładowaniem i po przeładowaniu
wariusz
katalog tmp nie pomógł, a po wpisaniu printa wyświetla:

Array ( [zalogowany] => tak [login] => admin [imie] => mariusz [email] => mail@mail.com

a po kliknięciu w odnośnik prowadzący do tej samej strony :

Array ( [zalogowany] => tak [login] => [imie] => mariusz [email] => mail@mail.com

po odświeżeniu strony jest ok nie ginie wartość tej zmiennej tylko po kliknięcu na link prowadzący do tej strony.
hiszpanespaniol
możliwe, że:
1. za każdym odświeżeniem strony przesyłasz ponownie dane w POST. wtedy działa poprawnie kod
  1. <?php
  2. $login = $_POST['login']
  3. ?>

ale połączenie z bazą danych następuje tylko w przypadku, gdy spełni się drugi warunek z Twojego if'a

  1. <?php
  2. //////
  3.  
  4. if ($_GET["login"]=="koniec") { // wylogowanie
  5. } else if ($login<>"" and $haslo<>"") {
  6. //////
  7. ?>


musisz powoli sprawdzić jak to działa, czy tu czasem nie wymaga skrypt przesłania danych jednocześnie POST'em i GET'em co chyba jest trudne winksmiley.jpg
------
jeżeli nie odświeżasz strony, tylko na nią wchodzisz z linka, to wtedy nie przesyłasz nic postem i kod $login = $_POST['login'] zeruje zmienną login.
------
coś w tym stylu lub

2. źle się odwołujesz do zmiennych
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.