Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Bład przy logowaniu.
sebian
post 10.10.2012, 09:58:51
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 2.08.2009

Ostrzeżenie: (0%)
-----


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. }
Go to the top of the page
+Quote Post
nospor
post 10.10.2012, 10:14:56
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No przecież tutaj:
loguj($nazwa_uz, $haslo);
$_SESSION['prawid_uzyt'] = $nazwa_uz;

bezwarunkowo tę nazwę zapisujesz do sesji....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sebian
post 10.10.2012, 10:22:56
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 2.08.2009

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
nospor
post 10.10.2012, 10:26:08
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Może rzucałeś wyjątkiem, czego teraz nie robisz.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sebian
post 10.10.2012, 10:30:03
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 2.08.2009

Ostrzeżenie: (0%)
-----


Był wyjątek, masz racje smile.gif dzieki za podpowiedz. A poza tematem wyjątek czy warunek lepiej stosować? Jaka jest zasadnicza różnica.
Go to the top of the page
+Quote Post
nospor
post 10.10.2012, 10:43:08
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Poczytaj o wyjątkach a będziesz wiedział jaka jest różnica smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sebian
post 10.10.2012, 10:51:02
Post #7





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 2.08.2009

Ostrzeżenie: (0%)
-----


Dobrze mistrzu. Dzieki za pomoc, pozdro smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2025 - 22:32