Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z password
Forum PHP.pl > Forum > Bazy danych > MySQL
hmmm
utworzylem sobie w bazie tabele, ktora nazwalem 'admin'.
kolumna, w ktorej przechowuje haslo ma nazwe 'wartosc' i jest typu varchar(30).
wprowadzajac do niej haslo skorzystalem z funkcji password().
niby wartosc zostala wprowadzona, bo wyswietlilo mi:
Cytat
Query OK, 1 row affected, 1 warning
jednak skad ten warning?

problem pojawia sie przy probie porownania wartosci w celu zalogowania.
haslo przepuszczam przez funckje password() i porownuje z tym z bazy, jednak mimo iz wpisze to samo, wyswietla mi, ze haslo jest nieprawidlowe.

domyslam sie, ze to przez ten warning podczas wprowadzania danych do tabeli dry.gif

bede wdzieczny za pomoc.
nospor
Manual:
Cytat
Note: The PASSWORD() function is used by the authentication system in MySQL Server, you should not use it in your own applications. For that purpose, use MD5() or SHA1() instead. Also see RFC 2195 for more information about handling passwords and authentication securely in your application
Nie zaleca się stosowania password, użyj lepiej md5()
hmmm
zrobilem, jak piszesz, ale dalej nie dziala dry.gif
nie qmam dlaczego w dalszym ciagu w wierszu polecen, jak poprzez update wpisuje nowe haslo wykorzystujac md5, to wykonuje, ale z bledem.
  1. UPDATE admin SET wartosc=md5('haslo') WHERE id=1;
i wyswietla mi wowczas
Cytat
Query OK, 1 row affected, 1 warning (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 1
dlaczego?
tworzac tabele kolumne okreslilem jako varchar(30) i nut null.

natomiast tak wyglada skrypt sprawdzajacy dane wysylane z formularza:
  1. <?php
  2. // ustawiam wartosc zmiennej $uwaga
  3. // ma ona za zadanie ostrzegac o bledach
  4. $uwagi = NULL;
  5.  
  6. // przypisuje wartosc przeslanego hasla zmiennej $haslo
  7. $haslo = $_POST['haslo'];
  8.  
  9. // wczytuje plik
  10. // i lacze sie z baza danych
  11. include('inc/polacz.inc');
  12. $db = mysql_connect($host, $user, $pass);
  13. mysql_select_db($name, $db);
  14.  
  15. $polecenie1 = &#092;"SELECT id FROM admin WHERE id=1 AND wartosc=md5('\" . $haslo . \"')\";
  16. $wynik1 = mysql_query($polecenie1);
  17. $wynik2 = mysql_num_rows($wynik1);
  18. // sprawdzam poprawnosc wprowadzonego hasla
  19. // wykonuje dla prawidlowego hasla
  20. if ($wynik2 == 1) {
  21. // zmieniam wartosc pola
  22. $polecenie2 = mysql_query(&#092;"UPDATE admin SET wartosc=1 WHERE id=2\");
  23. header (&#092;"Location: index.php?strona=6\");
  24. exit();
  25. // sprawdzam poprawnosc wprowadzonego hasla
  26. // wykonuje dla nieprawidlowego hasla
  27. } else {
  28. $uwagi .= 'podales nieprawidlowe haslo.' . &#092;"n\";
  29. }
  30.  
  31. ?>
tylko potem zamiast nadpisywania wartosci w tabeli admin bede tworzyl sesje, ale to teraz nie ma znaczenia tongue.gif

edit
zapomnialem dodac, ze bez md5 wszystko dziala jak powinno sadsmiley02.gif
FiDO
Po wykonaniu zapytania z warningiem wykonaj jeszcze SHOW WARNINGS, powinno Ci podac dokladniejszy opis problemu. Wklej go tutaj.
hmmm
Cytat
Level        | Code    |Message
----------------------------------------------------------------------------
Warning    | 1265    | Data truncated for column 'wartosc' at row 1
i nie mam pojecia, co to znaczy dry.gif
FiDO
No to wszystko jasne.. hash md5 zajmuje 32 znaki, a Ty masz to pole dlugosci 30 znakow, dlatego jest warning, ze pozostale znaki zostaly obciete. Zwieksz dlugosc pola i bedzie ok.
hmmm
dzieki bardzo biggrin.gif dziala tongue.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.