Strona 1 z 1
[php_mySQL]Sprawdzanie loginu i hasla szyfrowanego
: sob sty 22, 2005 5:05 pm
autor: zabora
mam problem z porownanie - logowanie do bazy i porownanie zaszyfrowanego hasla, Pierwszy plik z formularzem wyglada tak:
Kod: Zaznacz cały
<HTML>]
<BODY>
TEST_ZAPIS_DO_BAZY_INSERT
<FORM METHOD="POST" ACTION="select_log.php">
Login: <INPUT TYPE=TEXT NAME="LOGIN" SIZE=30> <BR>
Hasło: <INPUT TYPE=PASSWORD NAME="HASLO" SIZE=30> <BR>
<BR>
<INPUT TYPE=SUBMIT VALUE = "ZAPISZ">
</FORM>
</BODY>
</HTML>
drugi plik z php wyglada nastepujaco:
<HTML>
<BODY>
[php]<?php
<?php
mysql_connect("localhost","root","root") or die ("Nieudana proba polaczenia z baza");
mysql_select_db('test_klient') or die ("Nieudana proba polaczenia z baza");
$szyfr = md5($_POST["HASLO"]);
print($szyfr);
$query = "SELECT haslo,login FROM myuser WHERE login ='".$_POST["LOGIN"]."'";
$result = mysql_query($query);
if ($result == $szyfr)
echo "Poprawne haslo";
elseif ($result != $szyfr)
echo "Zle haslo";
?>
?>[/php]
</BODY>
</HTML>
W formularzu jak wpisze login i haslo ( w bazie w tabeli MYUSER jest taki user z loginem i haslem - haslo w tabeli MYUSERjest zaszyfrowane funkcja md5() )
to wypisuje mi zawsze echo "Zle haslo".
Na pewno wpisuje poprawny login i haslo. Gdzie moze byc problem?
[/code]
Re: [php_mySQL]Sprawdzanie loginu i hasla szyfrowanego
: sob sty 22, 2005 7:02 pm
autor: Piotr Bandyk
[php]<?php
$_POST[HASLO] = md5($_POST["HASLO"]);
$query = mysql_query( "SELECT * FROM myuser WHERE login ='$_POST[LOGIN]' AND haslo='$_POST[HASLO]'");
$dane = mysql_fetch_array($query);
if (!$query){
print "Złe hasło";
exit;
}else{
print "Dobre hasło";
}
?>[/php]
Ja stosuje coś w tym stylu i zawsze działa. Polecam używanie sha1 zamiast md5.
Pozdrawiam.
no dobra
: sob sty 22, 2005 7:53 pm
autor: zabora
no dobrze ale mi raczej chodzi o to, zeby selectem z bazy pobrac tylko wartosc ktora mnie interesuje - czyli haslo dla user o loginie $_POST["LOGIN"].
Jak sobie robilem kontrolne printy to wartosci z bazy pobiera prawidlowe - pytanie tylko dlaczego moje if nie dzialaja tak jak nalezy ? Wszystko wydaje sie byc w porzadku a jednak nie ma porownania hasla ze zmiennej $szyfr z haslem pobranym selectem z bazy.
Ale dzieki za odpowiedz.
Re: [php_mySQL]Sprawdzanie loginu i hasla szyfrowanego
: ndz sty 23, 2005 10:36 am
autor: iro
Zrezygnuj z md5 wykonywanego przez mysql'a.
Mi też kiedyś nie działało, jak wprowadzałem usera z hasłem traktowanym md5 przez bazę, a później porównywanym z hasłem traktowanym md5 przez PHP.
Po prostu wprowadzając rekord z userem pobierz hasło z formularza i potraktuj funkcją md5( ) z PHP. Dopiero tą wartość wprowadzaj do bazy.
Myślę, że to właśnie w tym problem.
BTW: w kodzie, który podałeś brakuje funkcji typu mysql_fetch_array().
Powinno być coś takiego:
[php]<?php
$dbResult = mysql_query($query);
$result = mysql_fetch_array($dbResult);
?>[/php]
Wtedy hasło możesz wybrać w następujący sposób:
[php]<?php
$haslo = $result["haslo"];
?>[/php]
nic z tego
: ndz sty 23, 2005 6:12 pm
autor: zabora
niestety nie dziala nadal..zmienilem nawet sposob szyfrowania na sha1.
Teraz od razu w php przypisuje do zmiennej zaszyfrowane haslo i juz zaszyfrowane zapisuje w bazie:
[php]<?php
$szyfr = sha1($_POST["HASLO"]);
$query = "INSERT INTO myuser (IMIE,NAZWISKO,LOGIN,HASLO)
VALUES ('".$_POST["IMIE"]."','".$_POST["NAZWISKO"]."','".$_POST["LOGIN"]."','$szyfr')";
$result = mysql_query($query);
Odczyt i porownanie wyglada tak:
$szyfr = $_POST["HASLO"];
$login = $_POST["LOGIN"];
$query = "SELECT haslo FROM myuser WHERE login ='$login'";
$result = mysql_query($query);
print("<BR>");
print("<BR>");
if (sha1($szyfr) == '$query') {
echo "haslo poprawne";
}else {
echo "Haslo zle";
}
?>[/php]
Nadal wypisuje mi wartosc dla else:(Nie kumam juz nic z tego:)
Re: nic z tego
: ndz sty 23, 2005 6:38 pm
autor: Wojciech Kocjan
zabora pisze:niestety nie dziala nadal..zmienilem nawet sposob szyfrowania na sha1. Teraz od razu w php przypisuje do zmiennej zaszyfrowane haslo i juz zaszyfrowane zapisuje w bazie:
Nic dziwnego, ze Ci to nie dziala, bo to zadnego sensu nie ma, to co napisales. Dodawanie zostaw tak jak masz, popraw jedynie odczytywanie. W tej chwili robisz to tak: kodujesz to haslo, co podal user, a nastepnie ta zakodowana wartosc przyrownujesz do stringa "SELECT haslo FROM myuser WHERE login ='$login'"...
Przy odczycie zrob tak:
[php]<?php
$result=mysql_query("SELECT COUNT(login) AS logged FROM myuser WHERE login ='".$_POST['login']."' AND haslo = '".sha1($_POST['haslo'])."' ");
$data=mysql_fetch_array($result);
if ($data['logged']==1) {
// zalogowany
}
else {
// niezalogowany
}
?>[/php]
I edytuj swojego wczesniejszego posta - uzywaj bbcode (php, code). Jesli tego nie zrobisz, dostaniesz oficjalne ostrzezenie.
koniec
: ndz sty 23, 2005 9:54 pm
autor: zabora
OK, dzieki za pomoc.Dziala juz bez problemu.P{osty przeredagowalem-sorki:)