Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z logowaniem
Forum PHP.pl > Forum > Przedszkole
wojtaaas
Witam. Mam mały problem z logowaniem. Chodzi o to, że po zalogowaniu chce wywołać tekst np. Witam $nazwa_uzytkownika. Moja strona składa się z kilku bloków. Po lewej jest widoczne menu i panel zalogowanego, gdzie wlasnie powinna byc nazwa uzytkownika. Po prawej mam blok na ktory wskazuje menu. Po zalogowaniu tekst się pojawia, lecz po przejsciu na inną podstronę znika. Nie wiem czy tracę sesję, czy błąd jest w skrypcie do logowania. Prosze o pomoc. Aby wytłumaczyć to graficznie przygotowałem do tego plik : http://dolnyslask2.neostrada.pl/error/index.html

Poniżej przedstawiam kod php do bloku odpowiedzialnego za logowanie.

  1. <?
  2.  
  3.  
  4. include("config.php");
  5.  
  6. $login = $_POST["login"]; 
  7. $haslo2 = $_POST["haslo2"]; 
  8.  
  9.  
  10. if ($_GET["login"]=="koniec") { 
  11. } else if ($login<>"" and $haslo2<>"") { 
  12. $haslo2 = $haslo2;
  13. if ($baza = mysql_connect($mysql_host, $mysql_login, $mysql_haslo)) { 
  14. if (mysql_select_db($mysql_baza)) { 
  15. $wynik=mysql_query("SELECT * FROM $mysql_tabela WHERE 
  16. login='$login' and haslo2='$haslo2' and status=5"); 
  17. if (mysql_num_rows($wynik)==1) { 
  18. $dane=mysql_fetch_array($wynik); 
  19. $_SESSION["zalogowany"]="tak"; 
  20. $_SESSION["login"]=$dane["login"]; 
  21. $_SESSION["id"]=$dane["id"]; 
  22.  
  23. } 
  24. } else echo "Nie można połączyć się z bazą"; 
  25. mysql_close($baza); 
  26. } 
  27. } 
  28.  
  29. if ($_SESSION["zalogowany"]=="tak") { 
  30.  
  31. ?>
  32.  
  33. <tr>
  34. <td class="nawigacja2" width="25%">
  35. <div class="naglowki_nawigacji2">
  36.  
  37. Panel klienta&nbsp;-&nbsp;<? echo ''.$_SESSION[login].''; ?>
  38.  
  39. </div>
  40. <div class="przyciski_nawigacji2">
  41.  
  42. <a href="baza.php?dzial=dodaj_oferte" class="nav">Dodaj ofertę</a> <br />
  43. <a href="baza.php?dzial=usun_oferte" class="nav">Usuń ofertę</a> <br />
  44. <a href="baza.php?dzial=modyfikuj_oferte" class="nav">Modyfikuj ofertę</a> <br /> <br />
  45. <a href="baza.php?dzial=ustawienia_konta" class="nav">Ustawienia konta</a> <br />
  46. <a href="baza.php?dzial=moje_rachunki" class="nav">Moje rachunki</a> <br />
  47.  
  48. </div>
  49. </td></tr>
  50. </table>
  51. </td>
  52.  
  53. <?
  54.  
  55. } else { 
  56.  
  57. ?>
  58.  
  59. <tr>
  60. <td class="nawigacja2" width="25%">
  61. <div class="naglowki_nawigacji2">
  62. Panel klienta
  63. </div>
  64. <div class="przyciski_nawigacji2">
  65. <form action=baza.php method=post> 
  66. Login&nbsp;:&nbsp;<input name="login" type="text" size="12" /><br />
  67. Hasło&nbsp;:&nbsp;<input name="haslo2" type="password" size="12" /><br />
  68. <br /><center><input type="submit" value="zaloguj" class="submit" /> <input type="reset" value="wyczyść" class="submit" /> <br />
  69. <a href="baza.php?dzial=rejestracja" style="text-decoration:none">otwórz nowe konto</a></center>
  70. </form> 
  71. </div>
  72. </td></tr>
  73. </table>
  74. </td>
  75.  
  76. <?
  77.  
  78. } 
  79. ?> 


Z góry dzięki za pomoc
Hacker
Po pierwsze to nie:
  1. <?php
  2. echo ''.$_SESSION[login].''
  3. ?>
, a
  1. <?php
  2. echo $_SESSION['login']
  3. ?>
Po drugie co masz w innych plikach?? snitch.gif
wojtaaas
w pliku glownym baza.php mam
  1. <table class="tabela_main" width="770"> 
  2. <tr> <td width="100%" height="80" colspan="2">
  3. <img src="../images/logo.jpg" width="770" alt="" />
  4. </td></tr>
  5. <tr> <td class="nawigacja_gorna_zg" colspan="2">
  6.  
  7. <? include ("belka_nawigacyjna.php"); ?>
  8.  
  9. </td></tr>
  10.  
  11. <? include ("bloki/menu.php"); ?>
  12.  
  13. <? include ("bloki/logowanie.php"); ?>
  14.  
  15. <td class="td_blok">
  16.  
  17. <? include ("dzialy.php"); ?>
  18.  
  19. </td></tr>
  20. <tr> <td class="stopka_autorska" colspan="2">
  21.  </td></tr>
  22.  
  23. </table>


a przykladowy plik usun_oferte.php, dodaj_oferte.php (wszystkie na razie takie same) :

  1. <?
  2.  
  3. if ($_SESSION["zalogowany"]=="tak") { 
  4.  
  5. ?>
  6. <table width="100%">
  7. <tr><td class="naglowki_bloku"><div class="naglowki">test</div></td></tr>
  8. <tr><td class="tresc_bloku">
  9.  
  10. <center><font>Ten tekst widzi tylko zalogowany użytkownik</font></center>
  11.  
  12. </td></tr></table>
  13. <?
  14.  
  15. }  
  16. else
  17. {
  18. ?>
  19. <table width="100%">
  20. <tr><td class="naglowki_bloku"><div class="naglowki">test</div></td></tr>
  21. <tr><td class="tresc_bloku">
  22.  
  23. <center><font>Brak uprawnień do oglądania tych zasobów</font></center>
  24.  
  25. </td></tr></table>
  26. <?
  27. }


jest jeszcze menu.php, ale jest to zwykla statyczna strona,

aha, jest jeszcze plik dzialy.php, ale tam jest tylko instrukcja switch
  1. <?
  2. switch ($_GET['dzial'])
  3.  
  4. {
  5. case ("dodaj_oferte"):
  6. include ("panel/dodaj_oferte.php");
  7. break;
  8.  
  9. case ("usun_oferte"):
  10. include ("panel/usun_oferte.php");
  11. break;
  12. }
  13. ?>
Hacker
Nie lepiej
  1. <?php
  2. if (isset($_SESSION['login']) && !empty($_SESSION['login']))
  3. ?>
Zamiast ustawiać
  1. <?php
  2. $_SESSION['zalogowany'] = "tak"
  3. ?>
przy okazji zrób tak
  1. <?php
  2. if ($_GET["login"]=="koniec") { 
  3. echo 'lol';
  4. }
  5. ?>
poźniej to usuniesz (jak zadziała) i zobacz czy nie jestto wywoływane po przejściu na inną stronę
tak propos po co to?
  1. <?php
  2. ?>
jeżeli ten plik u góry to bloki/menu.php to poco znowu w podstronach session_start? Czego nie €żywasz sessji opartych o ciasteczka?
Cytat
Notatka:  Jeśli używasz sesji opartych o ciasteczka, to session_start() musi być wywołane przed wysłaniem jakichkolwiek danych do przeglądarki.
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.