Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]funkcja PASSWORD, pilne...
ZuyPan
post 13.07.2010, 20:28:46
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 4
Dołączył: 4.02.2010

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


Witajcie, mam problem i to taki, który muszę rozwiązać jeszcze dziś.
Na stronie robie logowanie - niby proste, ale muszę porównać wpisane hasło do hasła zakodowanego w mysql metodą PASSWORD (ma ono taką postać "*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29") nie bardzo wiem jak się za to zabrać. Php nie rozpoznaje funkcji PASSWORD... Przy rejestracji używam takiego czegoś:
  1. $zapytanie1 = "INSERT INTO account SET login = '".$login."', password = PASSWORD('".$haslo."'), email = '".$email."'";

Niestety nie można zmienić metody kodowania hasła w mysql więc muszę się z tym zmierzyć...
Czekam na propozycje, pozdrawiam


--------------------
Blog
Go to the top of the page
+Quote Post
Lars_18
post 13.07.2010, 20:34:36
Post #2





Grupa: Zarejestrowani
Postów: 63
Pomógł: 11
Dołączył: 29.05.2010

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


Rozwiązanie masz przecież podane w zapytaniu SQL które powyżej przytoczyłeś...
  1. $query = 'SELECT `id` FROM `account` WHERE `login` = \'' . $login . '\' AND `password` = PASSWORD(\'' . $haslo . '\')';


Ten post edytował Lars_18 13.07.2010, 20:42:17
Go to the top of the page
+Quote Post
ZuyPan
post 13.07.2010, 20:37:35
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 4
Dołączył: 4.02.2010

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


no ok, ale to jest rejestracja a przy logowaniu ja porównuje zmienną password która zawiera to co wpisał użytkownik z $rekord['password']; które wygląda tak jak pokazałem w pierwszym poście. Oczywiste jest, ze nie będą pasować więc to co wpisał użytkownik też muszę przedstawić w postaci PASSWORD, ale nadal nie wiem jak...


--------------------
Blog
Go to the top of the page
+Quote Post
siurek22
post 13.07.2010, 20:39:31
Post #4





Grupa: Zarejestrowani
Postów: 62
Pomógł: 2
Dołączył: 24.02.2008

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


w tym przypadku filtrujesz w pelni obie zmienne login i haslo i machasz je do zapytania i poprzez select wyciagasz rekord gdzie login taki jak dales i password= PASSWORD(".$haslo.") ot cala filozofia
Go to the top of the page
+Quote Post
ZuyPan
post 13.07.2010, 20:39:50
Post #5





Grupa: Zarejestrowani
Postów: 116
Pomógł: 4
Dołączył: 4.02.2010

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


ok dzięki za wskazówkę teraz tylko musi mi spasować do tego a konkretnie do tej linijki - if ($haslo == $rekord['password']){

  1. if ($login && $haslo){
  2.  
  3. $zapytanie = "SELECT * FROM account WHERE login = '$login'";
  4. $query = mysql_query($zapytanie, $polaczenie2);
  5. if ($query){
  6. if(mysql_num_rows($query) == 1){
  7. $rekord = mysql_fetch_assoc($query);
  8.  
  9. if ($haslo == $rekord['password']){
  10. echo 'coś tam';
  11. }else{
  12. $wiadomosc .= '<font color="red">Podany użytkownik nie istnieje.</font>';
  13. }
  14.  
  15.  
  16. }else{
  17. $wiadomosc .= '<font color="red">Wystąpił błąd podczas działania skryptu.</font>';
  18. }
  19.  
  20. }


Ten post edytował ZuyPan 13.07.2010, 20:40:02


--------------------
Blog
Go to the top of the page
+Quote Post
Lars_18
post 13.07.2010, 20:40:00
Post #6





Grupa: Zarejestrowani
Postów: 63
Pomógł: 11
Dołączył: 29.05.2010

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


No przecież napisałem ci kod, który możesz użyć do zalogowania użytkownika.

@UP: Nie pobieraj danych usera tylko sprawdzaj zapytaniem SELECT czy dane są poprawne.

Ten post edytował Lars_18 13.07.2010, 20:40:55
Go to the top of the page
+Quote Post
siurek22
post 13.07.2010, 20:42:10
Post #7





Grupa: Zarejestrowani
Postów: 62
Pomógł: 2
Dołączył: 24.02.2008

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


patrz wywolujesz zapytanie takie jak masz wyzej i zliczasz ilosc pobranych rekordow jezeli jest 1 to git jak nie to won
Go to the top of the page
+Quote Post
ZuyPan
post 13.07.2010, 20:42:14
Post #8





Grupa: Zarejestrowani
Postów: 116
Pomógł: 4
Dołączył: 4.02.2010

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


wybacz, ale zastosowałem rozwiązanie takie jakie jest nie bez powodu.. Wolał bym nie zmieniać sposobu w jaki to zrobiłem. Ujmując to najprościej - da się poza zapytaniem zmienną $haslo przerobić aby miała psotać PASSWORD?

Ten post edytował ZuyPan 13.07.2010, 20:43:04


--------------------
Blog
Go to the top of the page
+Quote Post
Lars_18
post 13.07.2010, 20:43:02
Post #9





Grupa: Zarejestrowani
Postów: 63
Pomógł: 11
Dołączył: 29.05.2010

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


W takim razie z jakiego powodu je zaimplementowałeś? Nie widzę w tym ani odrobiny sensu. Inaczej tego nie zrobisz ;P.

Ten post edytował Lars_18 13.07.2010, 20:43:26
Go to the top of the page
+Quote Post
ZuyPan
post 13.07.2010, 20:45:27
Post #10





Grupa: Zarejestrowani
Postów: 116
Pomógł: 4
Dołączył: 4.02.2010

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


cholera :/ cały skrypt w takim razie szlag trafi jeśli w ten sposób nie zadziała. Po to sobie najpierw sprawdzam czy login istnieje aby sobie przyy okazji pobrać inne dane a w tym hasło - o jedno zapytanie mniej. Poza tym założenia były takie aby nie wywalało błędy w stylu "Login lub hasło jest złe" tylko konkretnie powiedziało co jest złe...


--------------------
Blog
Go to the top of the page
+Quote Post
Lars_18
post 13.07.2010, 20:46:42
Post #11





Grupa: Zarejestrowani
Postów: 63
Pomógł: 11
Dołączył: 29.05.2010

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


Na twoje problemy jest jedno rozwiązanie - zmiana metody hashowania haseł w bazie smile.gif.
Go to the top of the page
+Quote Post
ZuyPan
post 13.07.2010, 20:48:02
Post #12





Grupa: Zarejestrowani
Postów: 116
Pomógł: 4
Dołączył: 4.02.2010

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


mówiłem już, że to nie wchodzi w grę... Cała ta baza wykorzystywana jest przez inny program, którego treści nikt nie ma zamiaru zmieniać. Ja robię tylko stronę www do tego "biznesu"


--------------------
Blog
Go to the top of the page
+Quote Post
Lars_18
post 13.07.2010, 20:51:43
Post #13





Grupa: Zarejestrowani
Postów: 63
Pomógł: 11
Dołączył: 29.05.2010

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


To po prostu zrób tak jak ci mówimy, a jak user wpisze błędny login/hasło to sprawdzaj czy login jest dobry - jeżeli tak to znaczy że hasło jest złe i wyświetl odpowiedni komunikat.

Ten post edytował Lars_18 13.07.2010, 20:51:58
Go to the top of the page
+Quote Post
siurek22
post 13.07.2010, 20:55:58
Post #14





Grupa: Zarejestrowani
Postów: 62
Pomógł: 2
Dołączył: 24.02.2008

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


lub wcisnij w zapytanie dodatkowo SELECT PASSWORD('$haslo') z tego co pamietam jest taka mozliwosc poczytaj dokladniej o mysql
Go to the top of the page
+Quote Post
ZuyPan
post 13.07.2010, 22:38:14
Post #15





Grupa: Zarejestrowani
Postów: 116
Pomógł: 4
Dołączył: 4.02.2010

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


Uff udało się! Oto kod php "dla potomnych" smile.gif Dziękuję bardzo za rady, bez Was bym sobie nie dał rady. Udało mi się też zrobić to wszystko zgodnie z moim zamysłem, a co więcej wyświetla osobne błędy dla złego loginu i hasła smile.gif

  1. if ($login && $haslo){
  2.  
  3. $zapytanie = "SELECT * FROM account WHERE login = '$login'";
  4. $query = mysql_query($zapytanie, $polaczenie2);
  5. if ($query){
  6. if(mysql_num_rows($query) == 1){
  7. $login_istnieje = 1;
  8.  
  9. $zapytanie2 = "SELECT * FROM account WHERE login = '$login' AND password = PASSWORD('$haslo')";
  10. $query2 = mysql_query($zapytanie2, $polaczenie2);
  11. if ($query2){
  12. if(mysql_num_rows($query2) == 1){
  13. $haslo_istnieje = 1;
  14.  
  15. if ($login_istnieje == 1 && $haslo_istnieje == 1){
  16.  
  17. // Tu można już wstawiać przypisanie danych do sesji
  18.  
  19. }
  20.  
  21.  
  22. }else{
  23. $wiadomosc .= '<font color="red">Podane hasło jest nie prawidłowe.</font>';
  24. }
  25.  
  26. }else{
  27. $wiadomosc .= '<font color="red">Wystąpił błąd podczas działania skryptu.</font>';
  28. }
  29.  
  30.  
  31. }else{
  32. $wiadomosc .= '<font color="red">Podany użytkownik nie istnieje.</font>';
  33. }
  34.  
  35.  
  36. }else{
  37. $wiadomosc .= '<font color="red">Wystąpił błąd podczas działania skryptu.</font>';
  38. }
  39.  
  40. }


Ten post edytował ZuyPan 13.07.2010, 22:39:14


--------------------
Blog
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: 24.07.2025 - 21:52