Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z mysql i md5
Forum PHP.pl > Forum > Przedszkole
Darekxp
Witam! Korzystam ze skryptu na logowanie i rejestracje z http://webmade.org/porady/sesje-php-system-logowania.php ale nie moge zrobić żeby hasło było kodowane md5. Próbowałem różnych sposobów ale mi nie wychodzi, a jak już sie udało i ładnie koduje przez md5 w bazie wpis jest ok, to nie moge sie zalogować. Ponadto jak dodam dodatkowe pola do rejestracji(w bazie oczywiście dodałem odpowiedznie zapytanie) i je dopisuje to mam problem z logowaniem i cały czas pisze że podano złe dane.
Jeżeli wszystko dopisuje do bazy tak jak powinno to chyba przyczyna tkwi gdzies podczas logowania? sadsmiley02.gif
scanner
A gdzie listingi? Jasnowidzów na etacie nie trzymamy.
Darekxp
rejestracja

  1. <?php
  2. mysql_connect("localahost", "baza", "")or die("Nie można nawiązać połączenia z bazą"); //połączenie z bazą danych
  3. mysql_select_db("users")or die("Wystąpił błąd podczas wybierania bazy danych");
  4.  
  5. function ShowForm($komunikat=""){ //funkcja wyświetlająca formularz rejestracyjny
  6. echo "$komunikat<br>";
  7. echo "<form action='rejestruj.php' method=post>";
  8. echo "Login: <input type=text name=login><br>";
  9. echo "Hasło: <input type=password name=haslo><br>";
  10. echo "Klasa: <input type=text name=klasa><br>";
  11. echo "Wiek: <input type=text name=wiek><br>";
  12. echo "E-mail: <input type=text name=email><br>";
  13. echo "Hobby: <input type=text name=hobby><br>";
  14. echo "<input type=hidden value='1' name=send>";
  15. echo "<input type=submit value='Zarejestruj mnie'>";
  16. echo "</form>";
  17. }
  18. ?>
  19. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  20. <html>
  21. <head>
  22. <title>Untitled Document</title>
  23. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  24.  
  25. </head>
  26.  
  27.  
  28. <body>
  29. <?php
  30. if($_POST["send"]==1){ //sprawdzanie czy formularz został wysłany
  31. if(!empty($_POST["login"]) && !empty($_POST["haslo"]) && !empty($_POST["klasa"]) && !empty($_POST["wiek"]) && !empty($_POST["email"]) && !empty($_POST["hobby"])){ //oraz czy uzupełniono wszystkie dane
  32. if(mysql_num_rows(mysql_query("select * from users where user_login='".htmlspecialchars($_POST["login"]."'"))))ShowForm("Użytkownik o podanym loginie już istnieje!!!"); // sprawdzanie czy użytkownik o podanej nazwie już istnieje
  33. else{
  34. mysql_query("insert into users values(NULL, '".htmlspecialchars($_POST["login"])."', '".md5($_POST["haslo"])."', '".htmlspecialchars($_POST["klasa"])."', '".htmlspecialchars($_POST["wiek"])."', '".htmlspecialchars($_POST["email"])."', '".htmlspecialchars($_POST["hobby"])."')"); // zapisywanie rekordu do bazy
  35. echo "Rejestracja przebiegła pomyślnie. Możesz teraz przejść do <a href='index.php'>strony głównej</a> i się zalogować.";
  36. }
  37. }
  38. else ShowForm("Nie uzupełniono wszystkich pól!!!");
  39. }
  40. else ShowForm();
  41. mysql_close(); //zamykanie połączenia z bazą
  42. ?>
  43. </body>
  44. </body>
  45. </html>


index.php
  1. <?php
  2. session_register("zalogowany");
  3.  
  4. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  5.  
  6. mysql_connect("localhost", "root", "")or die("Nie można nawiązać połączenia z bazą");
  7. mysql_select_db("test")or die("Wystąpił błąd podczas wybierania bazy danych");
  8.  
  9. function ShowLogin($komunikat=""){
  10. echo "$komunikat<br>";
  11. echo "<form action='index.php' method=post>";
  12. echo "Login: <input type=text name=login><br>";
  13. echo "Hasło: <input type=text name=haslo><br>";
  14. echo "<input type=submit value='Zaloguj!'>";
  15. echo "</form>";
  16. echo "Jeśli nie jesteś zarejestrowany, <a href='rejestruj.php'>tu znajdziesz formularz</a>";
  17. }
  18.  
  19. ?>
  20. <!DOCTYPE html 
  21. PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  22. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  23. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  24. <head>
  25. <title>Strona główna</title>
  26. </head>
  27. <body>
  28. <?php
  29. if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
  30. if($_SESSION["zalogowany"]!=1){
  31. if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  32. if(mysql_num_rows(mysql_query("select * from users where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".htmlspecialchars($_POST["haslo"])."'"))){
  33. echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>";
  34. $_SESSION["zalogowany"]=1;
  35. }
  36. else echo ShowLogin("Podano złe dane!!!");
  37. }
  38. else ShowLogin();
  39. }
  40. else{
  41. ?>
  42. Gratulacje! Zalogowałeś się pomyślnie! Możesz przejśc teraz do innych podstron, 
    np. do <a href="stronka.php">tej</a>
  43. <br><a href='index.php?wyloguj=tak'>wyloguj się</a>
  44. <?php
  45. }
  46. ?>
  47.  
  48. </body>
  49. </html>
  50. <?php mysql_close(); ?>
kaczy
Żeby w bazie hasło było kodowane w md5 musisz podczas rejestracji dodać funkcje md5() i puźniej podczas logowanie hasło także musi być kodowane funkcją md5() wtedy wszystko powinno działać.
Lejto
czyli:
  1. <?php
  2. if(mysql_num_rows(mysql_query("select * from users where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".md5(htmlspecialchars($_POST["haslo"]))."'"))){
  3. echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>";
  4. $_SESSION["zalogowany"]=1;
  5. }
  6. ?>
Darekxp
niestety nie działa, nawet nie koduje md5 ;] u mnie kodowało tak jak miałem ale nie dało sie zalogowac i nie wiem jak to zrobić
strife
Proszę o dodanie tagu do tematu, zgodnego z zasadami forum Przedszkole, inaczej temat zostanie zamknięty.

@Lejto - jaki jest sens użycia htmlspecialchars, jak potem używasz md5? - Żaden!
Shili
Zrób tak: wyświetl sobie hasło z bazy przyporządkowane do Twojego loginu (to zapisane w bazie z md5) i wyświetl hasło, które wpisałeś w pole hasła do logowania (również potraktowane md5).

I porównaj. Jeśli wyświetli Ci 2 takie same ciągi md5, to problem leży gdzieś indziej.
Lejto
@strife - Darekxp miał już htmlspecialchars(); w swoim kodzie to nie usuwałem
strife
Cytat(Lejto @ 10.07.2008, 12:50:18 ) *
@strife - Darekxp miał już htmlspecialchars(); w swoim kodzie to nie usuwałem

Rozumiem, ale mimo wszystko, jak już podajesz kod na forum, to staraj się wyłapywać również błędy, a nie je powielać w kolejnych postach, EOT. smile.gif

Reasumując ~Darekxp, zrób tak jak napisała Shili, a będziemy dalej działać. Od siebie mogę również Ci dać mały opis, dotyczący logowania, który kiedyś dawno temu pisałem smile.gif Przejrzyj ten temat, może na coś wpadniesz link.
Darekxp
najgłubsze jest to że jak wkleje sam kod z linku w pierwszym poście i dodam chociażby jednopole wiecej w formularzu rejestracyjnym i bazie i nie bede nic sie bawić z md5 to i tak sie nie zaloguje bo pojawiają sie niepoprawne dane blinksmiley.gif
Shili
Pytanie pierwsze:
Czy po logowaniu wyświetla Ci się Twój komunikat o niepoprawnych danych?
Pytanie drugie:
Po wysłaniu formularza zrób sobie print_r($_POST); czy to co się wyświetla jest tym, co znajduje się w bazie danych?
mike
Cytat(strife @ 10.07.2008, 12:42:19 ) *
Proszę o dodanie tagu do tematu, zgodnego z zasadami forum Przedszkole, inaczej temat zostanie zamknięty.
Ponawiam prośbę mad.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.