Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Logowanie do bazy mysql - bledny skrypt
Forum PHP.pl > Forum > Przedszkole
marecki75
Witam. Posiadam skrypt rejestracji, ktory dziala poprawnie oraz skrypt logowania, ktory nie dziala do konca. Skrypt sprawdza najpierw czy podany login istnieje w bazie, jesli nie istnieje to nie sprawdza nawet hasla. Jesli login zostal znaleziony w bazie, wowczas sprawdza haslo, jesli sa zgodne nastepuje zalogowanie uzytkownika - tak powinien dzialac skrypt. Rzeczywiscie potrafi rozpoznac czy w bazie jest taki login jaki poda uzytkownik, ale mimo wprowadzenia poprawnego hasla nie chce mi zalogowac, skrypt stwierdza poprawnosc loginu ale nieprawidlowe haslo. Moze ktos jest w stanie odnalesc blad w moim skrypcie?

Baza:

  1. -- --------------------------------------------------------
  2. --
  3. -- Tworzymy Baze danych o nazwie BAZA
  4. -- Baza danych: `baza`
  5. --
  6. CREATE DATABASE `baza` DEFAULT CHARACTER SET utf8 COLLATE utf8_polish_ci;
  7. USE `baza`;
  8. --
  9. -- --------------------------------------------------------
  10. --
  11. -- Tworzymy tabele Która będzie Składować konta nowych urzytkowników
  12. -- Struktura tabeli dla `users`
  13. --
  14.  
  15. CREATE TABLE `users` (
  16. `user_id` tinyint(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  17. `user_name` varchar(13) collate utf8_polish_ci NOT NULL,
  18. `user_password` varchar(40) collate utf8_polish_ci NOT NULL,
  19. `user_password_short` varchar(17) collate utf8_polish_ci NOT NULL,
  20. `user_email` text collate utf8_polish_ci NOT NULL,
  21. PRIMARY KEY (`user_id`)
  22. ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE= utf8_polish_ci AUTO_INCREMENT=3;
  23. --
  24. -- --------------------------------------------------------


Skrypt login.php

  1. <?php
  2.  
  3. // rozpoczęcie buforowania (jest to potrzebne by nie mieć błędów typu headers already sent)
  4.  
  5. // start sesji
  6.  
  7. // połączenie z mysql
  8. mysql_connect('localhost', 'root', '')
  9. or die('Nieudane polaczenie z baza danych...');
  10.  
  11. // wybór bazy danych
  12. or die('Nie udalo sie wybrac bazy danych...');
  13. mysql_query ("SET CHARACTER SET utf8");
  14. mysql_query ("SET collation_connection = utf8_polish_ci");
  15. // nagłówek
  16. echo '<h2>Logowanie</h2>';
  17.  
  18. // sprawdzamy czy user jest już zalogowany
  19. if($_SESSION['logged']) echo 'Już jestes zalogowany!';
  20. else
  21. {
  22. // tworzymy prosty formularz
  23. echo '<form action="login.php" method="POST">
  24. Nick: <br />
  25. <input type="text" name="nick"><br />
  26. Hasło: <br />
  27. <input type="password" name="pass"><br />
  28. <input type="submit" name="ok" value="Zaloguj">
  29. </form>';
  30.  
  31. // jeśli zostanie naciśnięty przycisk "Zaloguj"
  32. if(isset($_POST['ok']))
  33. {
  34. $nick = $_POST['nick'];
  35. $pass = $_POST['pass'];
  36.  
  37. // sprawdzamy czy wszystkie dane zostały podane
  38. if(empty($nick) || empty($pass)) echo 'Wpisz wszystkie pola!';
  39. // jeśli tak...
  40. else
  41. {
  42. // filtrujemy dane
  43.  
  44. // kodujemy hasło
  45. $pass = md5($pass);
  46.  
  47. // sprawdzamy czy istnieje użytkownik z takim loginem i hasłem
  48. $result = mysql_query("SELECT * FROM users WHERE user_name='$nick' AND user_password='$pass'");
  49.  
  50. // jeśli nie istnieje
  51. if(mysql_num_rows($result)==0) echo 'Niestety podałes niepoprawne dane!';
  52. // jeśli tak...
  53. else
  54. {
  55. // dodajemy wynik zapytania do tablicy
  56. $row = mysql_fetch_array($result);
  57.  
  58. // ustawianie sesji że użytkownik jest zalogowany
  59. $_SESSION['logged'] = true;
  60.  
  61. // dodawanie do sesji id użytkownika, login oraz datę rejestracji
  62. $_SESSION['id'] = $row['id'];
  63. $_SESSION['nick'] = $row['nick'];
  64. //$_SESSION['data_rejestracji'] = $row['data_rejestracji'];
  65.  
  66. // wyświetlenie komunikatu oznaczającego poprawne logowanie
  67. echo 'Zostałes poprawnie zalogowany! Możesz teraz przejsć na <a href="index.php">stronę główna</a>';
  68. }
  69. }
  70. }
  71. }
  72.  
  73. // rozłączenie z bazą danych
  74.  
  75. // koniec buforowania
  76. ?>


Prosze o pomoc w odnalezieniu bledu.
kielich
W zapytaniu jest MD5 a jak jest w bazie ?!?!
potreb
U mnie wszystko działa jesteś pewny że wpisujesz poprawnie hasło i login, dodaj nowy rekord do users pamietaj że hasło masz szyfrowane w bazie z md5.
marecki75
Aaaa dobra sprawa rozwiazana. Co za glupek ze mnie. Siedzialem nad tym chyba z 4 godziny. A do wnioskow doszedlem w momencie napisania tego posta. Wywnioskowalem, ze cos nei gra z porownywaniem hasel md5. Pierwsza mysl, ze przy rejestracji mam inne kodowanie hasla. Zdziwilem sie jak spojrzalem w kod, bo przy pisaniu skryptu dale md5. Pozniej jak sie bawilem z kodowaniem zmienilem na sh1 i o tym zapomnialem. Przywrocilem md5 i skrypt dziala poprawnie. Pytanie takie na marginesie hasla kodowac lepiej w md5 czy sh1 ?
kielich
SHA1 - 160-bitowy
MD5 - 128-bitowy

Wiec chyba odpowiedz jest prosta smile.gif
marecki75
No tak racja. Dzieki kielich. Kielich piwa dla Ciebie 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.