Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]SHA1 błąd logowania, baza widzi zaszyfrowane hasło a php wyświetla ze błąd
pikasso
post 26.10.2008, 21:49:56
Post #1





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 8.07.2008
Skąd: Warszawa

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


Witam zrobiłem nowy system logowania oparty na bazie danych i logowało się wszystko normalnie do puki nie dodałem sha1

oto kod
  1. <?php
  2. session_register("zalogowany");
  3.  
  4. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  5.  
  6. @$db = mysql_connect("moj_adres", "nazwa", "haslo") or die("Nie można nawiązać połączenia z bazą");
  7. mysql_select_db("nazwa_bd")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\" enctype=\"application/x-www-form-urlencoded\">";
  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. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></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"]) && sha1(!empty ($_POST["haslo"]))){
  32.        if(mysql_num_rows(mysql_query("select * from users where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".sha1(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 panelu <a href="stronka.php">TUTAJ</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(); ?>


oraz

  1. <?php
  2. @$db = mysql_connect("adres", "nazwa", "haslo") or die("Nie można nawiązać połączenia z bazą"); //połączenie z bazą danych
  3. mysql_select_db("nazwa_bd")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=text name=haslo><br>";
  10.    echo "<input type=hidden value='1' name=send>";
  11.    echo "<input type=submit value='Zarejestruj mnie'>";
  12.    echo "</form>";
  13. }
  14. ?>
  15. <!DOCTYPE html
  16.    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  17.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  18. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  19. <head>
  20.    <title>Formularz rejestracyjny</title>
  21. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
  22. <body>
  23. <?php
  24. if($_POST["send"]==1){    //sprawdzanie czy formularz został wysłany
  25.    if(!empty($_POST["login"]) && sha1(!empty ($_POST["haslo"]))){    //oraz czy uzupełniono wszystkie dane
  26.        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
  27.        else{
  28.            mysql_query("insert into users values(NULL, '".htmlspecialchars($_POST["login"])."', '".sha1(htmlspecialchars($_POST["haslo"]))."')");  // zapisywanie rekordu do bazy
  29.            echo "Rejestracja przebiegła pomyślnie. Możesz teraz przejść do <a href='indexa.php'>strony głównej</a> i się zalogować.";
  30.            }
  31.    }
  32.    else ShowForm("Nie uzupełniono wszystkich pól!!!");
  33. }
  34. else ShowForm();
  35. mysql_close(); //zamykanie połączenia z bazą
  36. ?>
  37. </body>
  38. </html>



Hasła do MySQL są zapisywane normalnie ale po kliknięciu zaloguj wyskakuje blednę dane czyli mój komunikat.
Pomocy...


--------------------
https://krasniej.pl Kancelaria Adwokacka Gocław Warszawa
Go to the top of the page
+Quote Post
bigZbig
post 26.10.2008, 22:02:24
Post #2





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Jakiej długości masz pole user_haslo w BD?


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
pikasso
post 26.10.2008, 22:07:39
Post #3





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 8.07.2008
Skąd: Warszawa

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


user_haslo` VARCHAR( 30 ) myślisz że więcej powinienem dać??


--------------------
https://krasniej.pl Kancelaria Adwokacka Gocław Warszawa
Go to the top of the page
+Quote Post
Lejto
post 26.10.2008, 22:08:20
Post #4





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


zobacz czy hasło zakodowało i zmień to:
bo ty masz w kodzie najpierw funkcje sha1 -> htmlspecialchars zobacz na odwrót może to coś da


--------------------
Go to the top of the page
+Quote Post
bigZbig
post 26.10.2008, 22:09:17
Post #5





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


http://pl.php.net/manual/pl/function.sha1.php

Kod
If the optional raw_output  is set to TRUE, then the sha1 digest is instead returned in raw binary format with a length of 20, otherwise the returned value is a 40-character hexadecimal number. Defaults to FALSE.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
pikasso
post 26.10.2008, 22:14:18
Post #6





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 8.07.2008
Skąd: Warszawa

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


Ok już działa dzięki bigZbig + wedruje do Ciebie smile.gif


--------------------
https://krasniej.pl Kancelaria Adwokacka Gocław Warszawa
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: 6.06.2024 - 17:53