Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Bład przy logowaniu.
Forum PHP.pl > Forum > PHP
sebian
Witam. mam sobie skrypcior, wszystko ładnie pieknie ale gdzies popełniłem błąd bo przy logowaniu nawet jesli nie ma połączenia z baza danych zmienna z nazwą usera jest zapisywana do sesji z formularza logowania... za chiny ludowe nie wiem gdzie bład popełniłem, oto fragmenty kodu, jak ktos ma pomysł to prosze o wskazanie drogi.

funkcje.php
  1. <?php
  2. require_once('funkcje_bazy.php');
  3.  
  4. function content()
  5. {
  6. if(!isset($_GET['show']))
  7. {
  8. $_GET['show'] = 'index';
  9. }
  10. switch($_GET['show'])
  11. {
  12. // logowanie
  13. case 'zaloguj':
  14. zaloguj();
  15. break;
  16.  
  17. // wylogowywanie
  18. case 'wyloguj':
  19. wyloguj();
  20. break;
  21.  
  22. // rejestracja
  23. case 'nowa_rejestracja':
  24. nowa_rejestracja();
  25. break;
  26.  
  27. // rejestracja_form
  28. case 'wyswietl_form_rej':
  29. wyswietl_form_rej();
  30. break;
  31.  
  32.  
  33. }
  34. }
  35.  
  36. // FUNKCJE LOGOWANIA
  37. function zaloguj()
  38. {
  39. // utworzenie krótkich nazw zmiennych
  40. $nazwa_uz = $_POST['nazwa_uz'];
  41. $haslo = $_POST['haslo'];
  42.  
  43. if ($nazwa_uz && $haslo)
  44. // właśnie nastąpiła próba logowania
  45. {
  46. try
  47. {
  48. loguj($nazwa_uz, $haslo);
  49. // jeżeli użytkownik znajduje się w bazie danych rejestracja identyfikatora
  50. $_SESSION['prawid_uzyt'] = $nazwa_uz;
  51. }
  52. catch (Exception $e)
  53. {
  54. // niepomyślne logowanie
  55. tworz_naglowek_html();
  56.  
  57. echo 'Zalogowanie niemożliwe';
  58. tworz_stopke_html();
  59. }
  60. }
  61. }
  62.  
  63. function loguj($nazwa_uz, $haslo)
  64. // sprawdzenie nazwy użytkownika i hasła w bazie danych
  65. // jeżeli się zgadza, zwraca true
  66. // jeżeli nie, wyrzuca wyjątek
  67. {
  68. // połączenie z bazą danych
  69. $lacz = lacz_bd();
  70.  
  71. // sprawdzenie unikatowości nazwy użytkownika
  72. $wynik = $lacz->query("select * from uzytkownik
  73. where nazwa_uz='$nazwa_uz'
  74. and haslo = sha1('$haslo')");
  75. if (!$wynik)
  76. echo 'Logowanie nie powiodło się.';
  77.  
  78. if ($wynik->num_rows>0)
  79. return true;
  80. else
  81. echo 'Logowanie nie powiodło się.';
  82. header("Location: index.php");
  83. }
  84.  
  85.  
  86. function wyloguj()
  87. {
  88. $stary_uzyt = $_SESSION['prawid_uzyt'];
  89. // przechowanie do sprawdzenia, czy logowanie wystąpiło
  90. unset($_SESSION['prawid_uzyt']);
  91. $wynik_niszcz = session_destroy();
  92.  
  93. // początek wyświetlania html
  94. if (!empty($stary_uzyt))
  95. {
  96. if ($wynik_niszcz)
  97. {
  98. // jeżeli użytkownik zalogowany i nie wylogowany
  99. echo 'Wylogowano.<br />';
  100. }
  101. else
  102. {
  103. // użytkownik zalogowany i wylogowanie niemożliwe
  104. echo 'Błąd, nie moge Cie wylogować.<br />';
  105. }
  106. }
  107. else
  108. {
  109. // jeżeli brak zalogowania, lecz w jakiś sposób uzyskany dostęp do strony
  110. echo 'Nie jesteś zalogowany.<br />';
  111. }
  112. header("Location: index.php");
  113. }
  114.  
  115. function wypelniony($zmienne_formularza)
  116. {
  117. // sprawdzenie, czy każda zmienna posiada wartość
  118. foreach ($zmienne_formularza as $klucz => $wartosc)
  119. {
  120. if (!isset($klucz) || ($wartosc == ''))
  121. return false;
  122. }
  123. return true;
  124. }
  125.  
  126. function prawidlowy_email($adres)
  127. {
  128. // sprawdzenie prawidłowości adresu poczty elektronicznej
  129. if (ereg('^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$', $adres))
  130. return true;
  131. else
  132. return false;
  133. }
  134.  
  135. // KONIEC
  136.  
  137. // FUNKCJE WYŚWIETL LOGOWANIE/USERA
  138.  
  139. function singin()
  140. // WYświetla funkcję logowania lub wyświelta zalogowanego usera
  141. {
  142. if (isset($_SESSION['prawid_uzyt']))
  143. {
  144. echo '<span class="log_as_right"><a href="index.php?show=wyloguj">Wyloguj</a></span><span class="log_as_left">Zalogowano jako&nbsp;: <span class="display_nick">'.stripslashes($_SESSION['prawid_uzyt']).'</span></span>';
  145. }
  146. else
  147. {
  148. echo '
  149. <li class="singin_lang_right"><a href="#">Zarejestruj / Zaloguj</a>
  150. <div class="dropdown_3columns align_right">
  151. <div class="col_3">';
  152. wyswietl_form_log();
  153. echo '</div>
  154. </div>
  155. </li>';
  156. }
  157. }
  158. ?>


Formularz:
  1. function wyswietl_form_log()
  2. // wyświetl formularz logowania
  3. {
  4. ?>
  5. <p>
  6. <form method="post" action="index.php?show=zaloguj">
  7. <tr>
  8. <td class="text_form_log">Username:</td>
  9. <td><input class="in_form_log" type=text name=nazwa_uz></td></tr>
  10. <tr>
  11. <td class="text_form_log">Password:</td>
  12. <td><input class="in_form_log" type=password name=haslo></td></tr>
  13. <tr>
  14. <td><a href="zapomnij_formularz.php">Przypomnij</a></td>
  15. <td ><input type=submit value="Logowanie"></td>
  16. </tr>
  17. </table></form></p>
  18. <h2></h2>
  19. <a href="index.php?show=wyswietl_form_rej"><div id="wyswietl_form_rej">ZAREJESTRUJ ZA FREE</div></a>
  20.  
  21. <?php
  22. }
nospor
No przecież tutaj:
loguj($nazwa_uz, $haslo);
$_SESSION['prawid_uzyt'] = $nazwa_uz;

bezwarunkowo tę nazwę zapisujesz do sesji....
sebian
No faktycznie, ale dziwne to troche bo jak na poczatku miałem to na plikacha nie na funkcjach to nie było tego problemu choc też nie bylo if-a. Wyjasnisz dlaczego?
nospor
Może rzucałeś wyjątkiem, czego teraz nie robisz.
sebian
Był wyjątek, masz racje smile.gif dzieki za podpowiedz. A poza tematem wyjątek czy warunek lepiej stosować? Jaka jest zasadnicza różnica.
nospor
Poczytaj o wyjątkach a będziesz wiedział jaka jest różnica smile.gif
sebian
Dobrze mistrzu. Dzieki za pomoc, pozdro smile.gif
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.