Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z uwierzytelnianiem
Forum PHP.pl > Forum > PHP
bobens_83
Witam. Moglibyscie rzucic okiem na kod:
  1. <?php
  2. // BLOK UWIERZYTELNIAJACY
  3. if( isset($_POST['user']) && isset($_POST['pass']) )
  4. {
  5. $user = $_POST['user'];
  6. $pass = $_POST['pass'];
  7.  
  8. $db = new mysqli( 'localhost', 'root', '', 'user_session' );
  9. $zapyt = 'select * from user_session.uw_uz'
  10.  ."where user = '$user'"
  11.  ."and password = sha1(".$pass.")";
  12.  
  13. $wynik = $db->query($zapyt);
  14. $ile = $wynik->num_rows;
  15. if( $ile == 0 ) echo "0";
  16. echo $ile;
  17. if( $wynik->num_rows > 0 )
  18. {
  19. $_SESSION['good_id'] = $user;
  20. }
  21. echo $_SESSION['good_id'];
  22. $db->close();
  23. }
  24. ?>
  25.  
  26.  
  27. <html>
  28. <body>
  29. <h1>Strona główna</h1>
  30. <?php
  31.  // GRA
  32. if( isset($_SESSION['good_id']) )
  33. {
  34. echo "Jesteś zalogowany jako: ".$_SESSION['good_id'];
  35. echo "<br><a href="wyloguj.php">Wyloguj</a>";
  36. }
  37. else  // NIE GRA!!!
  38. {
  39. if( isset($user) )
  40. {
  41. //******NIEUDANA PROBA*********
  42. echo "Zalogowanie niemozliwe!";
  43. }
  44. else
  45. {
  46. //***NIE BYLO PROBY LOGOWANIA***
  47. echo "User nie jest zalogowany!";
  48. }
  49.  
  50. echo "<form method="post" action="index.php">";
  51. echo "<table><tr><td>User: </td><td><input type="text" name="user"></td></tr>";
  52. echo "<tr><td>Pass: </td><td><input type="password" name="pass"></td></tr>";
  53. echo "<tr><td></td><td><input type="submit" value="OK"></td></tr></table>";
  54. echo "</form>";
  55. }
  56. ?>
  57. <br>
  58. <a href="tylko_czlonkowie.php">Część członkowska</a>
  59. </body>
  60. </html>


Niezaleznie czy wprowadze poprawne czy niepoprawne dane, pojawia sie komunikat zalogowanie niemozliwe! Sprawdzalem mechanizm laczenia z baza w innym, prostszym skrypcie i jest ok. Kod wydaje sie byc logiczny. Z gory dziekuje i pozdrawiam.
Kristof
ale masz błąd połaczenia z mysql czy poprostu wywala ze sie nie zgadza i mowi ze nie zalogowany questionmark.gif
bobens_83
Wywala kod z linijki 43, zadnego errora z bazy nie ma worriedsmiley.gif
Kristof
spróbuj tak:
  1. <?php
  2. // BLOK UWIERZYTELNIAJACY
  3. if( isset($_POST['user']) && isset($_POST['pass']) )
  4. {
  5. $user = $_POST['user'];
  6. $pass = $_POST['pass'];
  7.  
  8. $db = new mysqli( 'localhost', 'root', '', 'user_session' );
  9. $zapyt = 'select * from user_session.uw_uz'
  10.  ."where user = '$user'"
  11.  ."and password = sha1(".$pass.")";
  12.  
  13. $wynik = $db->query($zapyt);
  14. $ile = $wynik->num_rows;
  15. if( $ile == 0 ) echo "0";
  16. echo $ile;
  17. if( $wynik->num_rows > 0 )
  18. {
  19. $_SESSION['good_id'] = $user;
  20. }
  21. echo $_SESSION['good_id'];
  22. $db->close();
  23. }
  24. ?>
  25.  
  26.  
  27. <html>
  28. <body>
  29. <h1>Strona główna</h1>
  30. <?php
  31.  // GRA
  32. if( isset($_SESSION['good_id']) )
  33. {
  34. echo "Jesteś zalogowany jako: ".$_SESSION['good_id'];
  35. echo "<br><a href="wyloguj.php">Wyloguj</a>";
  36. }
  37. elseif( isset($user))  //tutaj poprawiłem // NIE GRA!!!
  38. {
  39. //******NIEUDANA PROBA*********
  40. echo "Zalogowanie niemozliwe!";
  41. }
  42. else
  43. {
  44. //***NIE BYLO PROBY LOGOWANIA***
  45. echo "User nie jest zalogowany!";
  46. }
  47.  
  48. echo "<form method="post" action="index.php">";
  49. echo "<table><tr><td>User: </td><td><input type="text" name="user"></td></tr>";
  50. echo "<tr><td>Pass: </td><td><input type="password" name="pass"></td></tr>";
  51. echo "<tr><td></td><td><input type="submit" value="OK"></td></tr></table>";
  52. echo "</form>";
  53. ?>
  54. <br>
  55. <a href="tylko_czlonkowie.php">Część członkowska</a>
  56. </body>
  57. </html>
bobens_83
Niestety bez zmian, zwraca 0. W bazie user_session znajduje sie 1 tabela uw_uz w ktorej mam: user_id, password[varchar 40] i user[varchar 20]. Czyli to by sie zgadzalo sadsmiley02.gif
Kristof
a w jaki sposob masz wczesniej zaszyfrowane hasło?? Spróbuj odczytać hasło przez md5
kornelcio
  1.  <?php
  2.  if( isset($user) ) { //******NIEUDANA PROBA*********
  3. echo "Zalogowanie niemozliwe!"; 
  4.  } ?>


Jestreś pewien, że TO jest dobrze? zmienna $user jest zdefiniowana wcześniej poprzez $user = $_POST['user']; czyli zmienna ta zawsze istnieje, jeżęli zostały przesłane dane z formularza...
Wg. mnie powinno być tak:
  1.  <?php
  2.  if( !isset($user) ) { //******NIEUDANA PROBA*********
  3. echo "Zalogowanie niemozliwe!"; 
  4.  } ?>
bobens_83
Haslo szyfruje przy wprowadzaniu do bazy za pomoca sha1.

To raczej nie jest to. Zmienna ta nie istnieje gdy skrypt wywoluje sie pierwszy raz. Ale pominmy to, to jest do dopracowania. Tylko czemu po wprowadzeniu poprawnych danych dalej zwraca 0. A moze to miec zwiazek jakis z php.ini?

Pozdrawiam.



========================================================
A jeszcze taka rzecz: zrobilem formularz ktory wowoluje sktypt:
  1. <?php
  2.  
  3. $user = $_POST['user'];
  4. $pass = $_POST['pass'];
  5.  
  6. $db = new mysqli( 'localhost', $user, $pass, 'feniks' );
  7.  
  8. if( $db )
  9. {
  10. $zapyt = "select * from news";
  11. $wynik = $db->query($zapyt);
  12. $ile = $wynik->num_rows;
  13. echo $ile;
  14. $wynik->free();
  15. $db->close();
  16. }
  17. else
  18. {
  19. echo "error";
  20. }
  21.  
  22. ?>


Zalozylem uzytkownika MySQL 'marian' o hasle 'haselko'. Jesli wprowadze do formularza te dane to skrypt dziala poprawnie. Ale gdy wpisze dane niepoprawne to zawiesza mi sie Apache - wystepuje blad krytyczny blink.gif

Co wy na to ?
SongoQ
Ja radze spojrzec do manuala i zrobic dokladnie jak jest w przykladzie (przyklad 1).
http://pl2.php.net/manual/pl/function.mysqli-connect.php
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.