Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z uwierzytelnianiem, za pomoca SQL
bobens_83
post
Post #1





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 7.11.2005
Skąd: z Czelsy

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


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.

Ten post edytował bobens_83 19.12.2005, 17:30:13
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Kristof
post
Post #2





Grupa: Zarejestrowani
Postów: 33
Pomógł: 1
Dołączył: 15.12.2005

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


ale masz błąd połaczenia z mysql czy poprostu wywala ze sie nie zgadza i mowi ze nie zalogowany (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
bobens_83
post
Post #3





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 7.11.2005
Skąd: z Czelsy

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


Wywala kod z linijki 43, zadnego errora z bazy nie ma (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif)
Go to the top of the page
+Quote Post
Kristof
post
Post #4





Grupa: Zarejestrowani
Postów: 33
Pomógł: 1
Dołączył: 15.12.2005

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


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>


Ten post edytował Kristof 19.12.2005, 18:07:22
Go to the top of the page
+Quote Post
bobens_83
post
Post #5





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 7.11.2005
Skąd: z Czelsy

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


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 (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif)
Go to the top of the page
+Quote Post
Kristof
post
Post #6





Grupa: Zarejestrowani
Postów: 33
Pomógł: 1
Dołączył: 15.12.2005

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


a w jaki sposob masz wczesniej zaszyfrowane hasło?? Spróbuj odczytać hasło przez md5
Go to the top of the page
+Quote Post
kornelcio
post
Post #7





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 19.12.2004
Skąd: Sanok

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


  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.  } ?>
Go to the top of the page
+Quote Post
bobens_83
post
Post #8





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 7.11.2005
Skąd: z Czelsy

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


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 (IMG:http://forum.php.pl/style_emoticons/default/blink.gif)

Co wy na to ?

Ten post edytował bobens_83 20.12.2005, 00:17:41
Go to the top of the page
+Quote Post
SongoQ
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Ja radze spojrzec do manuala i zrobic dokladnie jak jest w przykladzie (przyklad 1).
http://pl2.php.net/manual/pl/function.mysqli-connect.php
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.12.2025 - 18:02