![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 12 Dołączył: 30.11.2011 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Nie za bardzo rozumiem jak mam umieścić md5 w skrypcie aby wszystko działało poprawnie. Rejestracja wygląda tak:
a logowanie tak
Będę wdzięczny za jakiekolwiek inne uwagi co do kodu. Pozdrawiam. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 13 Dołączył: 23.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
rejestracja
logowanie
Powinno śmigać a jak nie to napisz, w domu zobaczę to na spokojnie. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 12 Dołączył: 30.11.2011 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Można zarejestrować użytkownika, ale przy logowaniu wyskakuje "Nie ma takiego użytkownika"
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 11.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
W md5 chodzi o to żeby zaszyfrować jakiś tekst w twoim przypadku hasło. Jak zaszyfrujesz hasło podczas rejestracji to w polu hasło w bazie będziesz miał hasło zapisane w md5.
Czyli nie np bolek tylko fskkb724jgfsd wiec jak się potem logujesz to bolek nie będzie równe fskkb724jgfsd tylko w logowaniu musi być podawane fskkb724jgfsd. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 12 Dołączył: 30.11.2011 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
czyli mam dodać do kodu md5 ?
$query = mysql_query("SELECT * FROM users WHERE login='$username' && password='md5($password)'"); |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 289 Pomógł: 1 Dołączył: 2.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
brakuje też walidacji przed sql_injection (np. mysql_real_escape_string() przy zapytaniu). Sprawdzając też czy jest taki użytkownik z danym hasłem dałbym na końcu LIMIT 1, bo inaczej będzie szukać całą bazę
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 12 Dołączył: 30.11.2011 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Poprawiłem tak kod logowania, nie pokazuje żadnego błędu tylko komunikat że nie ma takiego użytkownika (użytkownik na 100% jest w bazie)
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 13 Dołączył: 23.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
Najpierw zaloguj się do bazy danych przez np. phpMyAdmin i sprawdź czy hasło do danego użytkownika zostało zapisane w md5 czy normalnie takie jak podałeś w formularzu rejestracji. I jeżeli tak jest to zainspiruj się tym:
Ten post edytował Bateria 2.12.2011, 07:44:20 |
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Mysl troszeczkę co robisz...
najpierw hasło hashujesz w php: $password=md5($password); a potem jeszcze w mysql: password=md5("'.$password.'")' Wywal to z mysql. Hashujesz w php i to wystarczy @bateria zjadłeś mysql_query. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 12 Dołączył: 30.11.2011 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Mysl troszeczkę co robisz... najpierw hasło hashujesz w php: $password=md5($password); a potem jeszcze w mysql: password=md5("'.$password.'")' Wywal to z mysql. Hashujesz w php i to wystarczy @bateria zjadłeś mysql_query. nie rozumiem najpierw w mysql a potem mam wywalić to z mysql. zrobilem takie cos kod rejestracji
a to kod logowania
W myphpadmin pokazuje juz kasło po md5 Po próbie zalogowania hasłem jak przy rejestracji pokazuje że nie ma takiego użytkownika, gdy wpisuje hasło takie jak po md5 (biore je z bazy) to sie loguje. |
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat nie rozumiem najpierw w mysql a potem mam wywalić to z mysql. NIkt ci nigdzie nie kazał robić md5 na poziomie zapytania. md5 kazano ci robić w php i tę wartość wkładać do zapytania. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 12 Dołączył: 30.11.2011 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
powinienem pozostawić
a w deklarowanych zmiennych powinienem mieć
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 13 Dołączył: 23.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
W rejestracji wysyłasz hasło do bazy danych ale proces kodowania do md5 nie przebiega za pomocą funkcji w bazie danych tylko w skrypcie, więc wysyłasz już zakodowane hasło. Natomiast w pliku logowania gdy wpiszesz hasło do pola $_POST zostanie ono zakodowane do md5 i porównane z zakodowanym hasłem które zostanie pobrane z bazy danych.
A więc w rejestracji zmienne deklarujesz w ten sposób:
Logowanie:
I query w logowaniu: I teraz musisz sprawdzić jaka ilość wierszy zwróci to zapytanie, jeżeli 1 tworzy sesje i jesteś zalogowany. Ten post edytował Bateria 2.12.2011, 13:32:30 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 12 Dołączył: 30.11.2011 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Poprawki naniesione i czy nie mogę w ten sposób sprawdzić czy użytkownik jest zalogowany ?
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 13 Dołączył: 23.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście że możesz a nawet było by wskazane.
Jeżeli pomogłem kliknij ikonkę 'POMÓGŁ' |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 12 Dołączył: 30.11.2011 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
@Bateria coś nadal jest nie tak z kodem w loginie ponieważ rejestracji ładnie szyfruje hasło (sprawdzałem w phpmyadnim), ale podczas logowania nie znajduje użytkownika nawet po wpisanym haśle zaszyfrowanym (wyciągnietym z bazy)
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 548 Pomógł: 105 Dołączył: 4.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
jakiej wielkości masz pole w bazie danych w którym przechowujesz hasło
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 12 Dołączył: 30.11.2011 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
var 20
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 548 Pomógł: 105 Dołączył: 4.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
zmień na char (100)
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 12 Dołączył: 30.11.2011 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
i to bylo to (IMG:style_emoticons/default/smile.gif) wszystko działa. Dziękuję za pomoc (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#21
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat zmień na char (100) Raczej na varchar(32) a jeszcze lepiej na char(32) - md5 zawsze zwraca 32 znaki
|
|
|
-Gość- |
![]()
Post
#22
|
Goście ![]() |
MD5 (zwłaszcza bez soli) nie jest już bezpieczną metodą przechowywania haseł i już jej się nie powinno stosować. Najlepiej jakby hasło było przechowywane za pomocą SHA512 z solą unikalną dla każdego użytkownika. Można to zrealizować tak:
ciąg ma długość 128 znaków, czyli musi być w polu char(128) Logowanie wygląda tak, że zadajesz zapytanie select wyszukujące po nazwie użytkownika (nie możesz od razu sprawdzać hasła bo żeby je dobrze wygenerować musisz mieć salt). 1. Może się wydawać to nadmiarowe, ale jak ktoś przełamie zabezpieczenia (nawet nie poprzez Twój błąd tylko kogoś innego) i dostanie twoją bazę danych w swoje ręce to takie zabezpieczenie będzie się wydawać o wiele mniej nadmiarowe. W idealnym świecie każdy ma osobne hasło do każdego serwisu, a hasło jest złożone z losowych znaków o dużych i małych literach. W rzeczywistości hasła użytkowników są o wiele bardziej słownikowe. 2. To że hash jest taki długi, nie powoduje że jest znacząco wolniejszy. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 22:32 |