Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Algorytm MD5 lub funkcja SHA1
Forum PHP.pl > Forum > PHP
malesja
Witam
Moglby mi ktos powiedziec jak zastosowac w php algorytm szyfrowania hasel? Tzn mam 3 pliki:
jeden z formularzem do logowania pole LOGIN i pole HASLO po wpisaniu i kliknieciu przycisku wpisane dane sa wysylane z uzyciem metody POST do drugiego pliku, tego ponizej, ktory wykorzystuje plik z db.php aby placzyc sie z baza a nastepnie wybrac wszystkie dane z pola uzytkownicy i pola hasla w celu sprawdzenia czy podany login z formularza i haslo istnieja jesli tak to logowanie przebieglo z powodzeniem i jest otwierana sesja, jesli dane sa nie prawidlowe wyswietla sie komunikat 'nie ma w bazie'

To tylko tak na syzbkiego zrobione bo jest mi potrzebnne do dalszej czesci projektu, logowanie wydaje sie byc O.K. tylko wlasnie nie wiem jak zrobic aby te hasla, ktore przewiduje aby w bazie byly szyfrowane po wprowadzeniu z formularza takze odpowioednia funkcja zamieniala na zgodne z tymi w bazie. Wystarczy wstawic MD5 albo SHA1 gdzies tylko nie wiem gdzie?
Moze mi to ktos powiedziec?

  1. <?php
  2.  
  3. include ("db.php");
  4.  
  5. $row = get_user($_POST['login'], $_POST['haslo']);
  6.  
  7. if($row)
  8.    {
  9.  
  10.    $_SESSION['id'] = $row['login'];
  11.    $_SESSION['username'] = $row['name'];
  12.  
  13.    }
  14. else
  15. {
  16.  
  17. echo "nie ma w bazie";
  18. }
  19.  
  20.  
  21. ?>
bemol
musisz przy rejestracji lub przy wpisywaniu do bazy bezpośrednio dodać funkcję SHA1 lub MD5 (i po stronie php i mysql taka funkcja istnieje).
dodatkowo przy wysłaniu loginu i hasla w formularzu musisz dodać do zapytania coś w stylu:
  1. <?php
  2. mysql_select("select * from users where user_login='".sha1($_GET['login'])."' AND ...";)
  3. ?>


tak samo z hasłem, no i oczywiście może to być metoda $_POST,a funkcja md5.
crackcomm
No i przy logowaniu
  1. <?php
  2.  
  3. include ("db.php");
  4.  
  5. $row = get_user($_POST['login'], md5($_POST['haslo'])); //o ile to ta funkcja tongue.gif
  6.  
  7. if($row)
  8.   {
  9.  
  10.   $_SESSION['id'] = $row['login'];
  11.   $_SESSION['username'] = $row['name'];
  12.  
  13.   }
  14. else
  15. {
  16.  
  17. echo "nie ma w bazie";
  18. }
  19.  
  20.  
  21. ?>
malesja
dobra dzieki, madre z Was chlopaki winksmiley.jpg p.s. a podczas rejestracji jak ustawie w bazie pole password gdzie bedzie ono przez baze juz zamieniane algorytmem MD5 to w skrypcie php nie musze uzywac tej funkcji?
W ogole logowanie dziala mi w ten sposob, ze SELECT sprawdza czy uzytkownik i haslo w bazie wystepuja jak wystepuja i sie zgadzaja to nastepuje logowanie, ale chyba powinienem to zrobic iz najpierw powinenem sprawdzic czy w bazie wystepuje uzytkownik o danym loginie, a dalej jesli wystepuje powinienem sprawdzic czy podane haslo jest pasujace do danego loginu.

Mam jeszcze inne pytanie. Jak zrobic glowne menu, w ktorym beda koleczka. Glowna strona, Kontakt itd. to koleczko z inna ikonka tak jak w przykladzie ponizej gdzie po najechaniu kursorem na odpowiednie menu podswietli sie ono np. z szarego na kolorowe. Wiem ze trzeba to osadzic kazda ikonke w innej ramce i mysle, ze to trzeba zrobic za pomoca gifow, ale chyba tez musze okreslic, ktory obszar ma byc przezroczysty tzn. robie rysunek w kwadracie wypelniam np. rozowym kolorem i okreslam go jako przezroczysty, nastepnie rysuje koleczko, w ktorym bedzie ikonka, ale juz poza koleczkiem poza obwiednia kolor rozowy w tym kwadracie bedzie niewidoczny wiec menu wyjdzie mi tak jak ponizej. Dajcie jakies pomysly. Jeszcze tego nie testowalem, ale moze ktos ma lepszy i latwiejszy pomysl.


Robiac strone glowna chce aby czesc z menu glownym nie byla przeladowywana po wybraniu jakiejs kategorii, aby bylo ono zawsze wyswietlane, a ladowane byly do odpowoieniej czesci strony tylko te rzeczy, ktore wybierze uzytkownik w menu czy robiac to za pomoca ramek nie bedzie to jak na owe czasy technologia przestarzala, czy moze inaczej powinienem to zrobic?
Pawel_W
musisz użyc tej funkcji poniewać w bazie będziesz miał zakodowane hasło a z formularza przyjdzie ci niezakodowane

EDIT: nie doczytałem, lepiej sprawdź ;o
1oBuZ
Podczas rejestracji kodujesz hasło najlepiej za pomocą funkcji md5()

(kodowanie umieść w pliku który pobiera dane z formularza)

Zakodowanie hasło trafia do bazy danych, podczas logowania sprawdzasz tylko zakodowane ciągi |(przykładowo tak jak to napisał: crackcomm).
Pawel_W
co do tych kółek to robisz 2 obrazki kolorowy i szary (kolorowy.gif, szary.gif) a potem podmieniasz je tak:
  1. <img src="szary.gif" onmouseover="this.src='kolorowy.gif'" onmouseout="this.src='szary.gif'">
crackcomm
Całkowicie zapomniałem zapytać, tak na marginesie, w funkcji get_user dodajesz slashe przed sprawdzaniem w bazie ?

  1. <?php
  2. $row = get_user($_POST['login'], md5($_POST['haslo']));
  3. ?>
malesja
crackcomm? nie rozumiem Twojego pytania z tymi slashami. Po co je dodawac? nic takiego nie dodaje.
Jedyne co mnie tu nurtuje to to, ze powinienem najpierw sprawdzac czy dany login jest w bazie a potem sprawdzac czy dane haslo pasuje do loginu a ja zrobilem to zr SELECT pobiera login i haslo.

Ponadto dopowiedzcie jak robic ten uklad strony glownej, zeby nie przeladowywac calego serwisu za kazdym razem kiedy ktos wybierze jakies menu. Menu ma pozostac w jednej ramce a np tresci maja sie ladowac juz w innej? Ale metoda ramek na te czasy chyba nie jest za dobrym pomyslem. Moglbym prosic o jakies podpowiedzi jak rozwiazac to w inny sposob.
blooregard
Cytat
Jedyne co mnie tu nurtuje to to, ze powinienem najpierw sprawdzac czy dany login jest w bazie a potem sprawdzac czy dane haslo pasuje do loginu a ja zrobilem to zr SELECT pobiera login i haslo

No i dobrze zrobiłeś. Jeśli ktoś podał prawidłwoy login i hasło, to i tak zapytanie zwróci Ci dokładnie jeden wynik.
Cytat
Moglbym prosic o jakies podpowiedzi jak rozwiazac to w inny sposob.

AJAX? Tzn. kliknięcie w opcję w menu wywołuje zdarzenie pobierające i wyświetlające zawartość (treść) div-a z głównym kontentem. Czyli tak czy siak, bez JavaScriptu się nie obejdzie.
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.