![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 17.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
HELPP
![]() Mam problem ze skryptem autoryzacji a glownie z funkcja password() Mianowicie nie moge wybrac zadnych rekordow z bazy przy uzyciu tej funkcji. W bazie posiadam miedzy innymi kolumne login i password - hasla dodawalem przy uzyciu skryptu gdzie w zapytaniu uzywalem funkcji password() - i faktycznie hasla sa zaszyfrowane - samo zaypatnie wygladalo mnij wiecej tak $wstaw= "insert into user Values('$imie','$nazwisko','$login',password('$haslo'),'$email','$adres','$miasto','$wojewodztwo','$kod','$telefon','','',null)"; Gdy zas przy probie autoryzacji zglaszam zapytanie $sql = "SELECT imie FROM user WHERE login='$login' AND haslo= password('$haslo')"; Wyrzuca mi ze uzytkownik jest nie zarejestrowany (gdy w rzeczywistosci podaje poprawne haslo i login). Co ciekawe po zmodyfikowaniu zapytania na $sql = "SELECT imie FROM user WHERE login='$login' AND haslo='$haslo'"; czyli wyrzuceniu funkcji password() - przy wybieraniu rekordu w ktorych hasla byly dodawane bez funkcji password() i sa nie zaszyfrowane normalnie idzie sie zalogowac. Reasumujac funkcja password() dziala przy wstawianiu zaszyfrowanych hasel ale jak probuje przy jej pomocy pobrac rekord z bazy gdzie haslo bylo uprzednio przy pomocoy tej funkcji zaszyfrowane - rezulatat jest zerowy ;(((( Ponizej przedstaiwam caly skryp skladajacy sie z dowch plikow Prosze o pomoc - jestem poczatkujacy , rece mi opadaja juz drugi dzien nad tym siedzie. Probowalem jzu funkcji old_password() ale tez nic nie daje ![]() Probuje uzyc prostego skryptu ktory sklada sie z dwoch plikow Pierwszy plik login.html +++++++++++++++++++++++++++++++++++++++++ <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\"> <HTML> <HEAD> <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2"> <META HTTP-EQUIV="Creation-date" CONTENT="2002-04-08T08:28:33Z"> <META HTTP-EQUIV="Reply-to" CONTENT="konradkuc@wp.pl"> <META HTTP-EQUIV="Content-Language" CONTENT="pl"> <META NAME="Description" CONTENT="Autentykacja uzytkownika w php"> <META NAME="Author" CONTENT="Konrad Kuc"> <TITLE>Autentykacja uzytkownika</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> <form method=post action="login.php"> <table border=1 align=center cellspacing=3 cellpadding=3> <tr> <td align=center colspan=2><hr color=red> <H1>LOGOWANIE</H1><hr color=red> </td> </tr> <tr> <td align=center> <B>LOGIN: </B> </td> <td align=center> <input type="text" name="login"> </td> </tr> <tr> <td align=center> <B>HASLO: </B> </td> <td align=center> <input type=password name="haslo"> </td> </tr> <tr> <td align=center colspan=2> <input type=submit value="LOGIN"> </td> </tr> </table> </form> </BODY> </HTML> Drugi plik login.php +++++++++++++++++++++++++++++++++++++++++++++++ <?php if((!$login) || (!$haslo)) $id=mysql_connect("localhost","my",""); $wynik = (mysql_select_db("baza1", $id)); $sql = "SELECT imie FROM user WHERE login='$login' AND haslo= password('$haslo')"; $sql_result = mysql_query($sql, $id); $num = mysql_num_rows($sql_result); if($num == 1) { echo("<b>Jestes prawidlowym uzytkownikiem!!!</b><BR>"); echo("<B>Podales nastepujaca nazwe uzytkownika: $username</B><BR>"); echo("<B>Podales nastepujace haslo: $password</B><hr color=red>"); } else if($num == 0) { echo("<B>Nie masz autoryzacji!!!</B><hr color=red>"); } ?> ++++++++++++++++++++++++++++++++++++++++++++++++ |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 166 Pomógł: 0 Dołączył: 1.04.2004 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Mogę się mylić, bo nie używam password() tylko md5(), ale nie wstawiaj wartości password() w ''.
Dodatkowo możesz użyć trim(), żeby nie zaplątały się gdzieś białe znaki.
Ten post edytował Yarecki 18.02.2005, 00:31:42 -------------------- Nigdy nie kłóć się z głupim, ludzie mogą nie dostrzec różnicy.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 8.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Hej, jakbys sobie nie poradzil jeszcze z tym problemem, to proponuje sprawdzic w bazie czy nie ograniczyles dlugosci pola. Po wygenerowaniu do bazy moze Ci obcinac kilka znakow, dlatego nie moze znalezc hasla generowanego w zapytaniu przy logowaniu.
Powodzenia |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 8.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Moze MySQL-a masz po apgrejdzie ...
spropbuj zamiast funkcji password uzyc funkcji old_password ... jesli zadziala - sprawa jest oczywista (MySql - 4.1.10 - jak sie nie myle) Ten post edytował CzarnyKot 8.03.2005, 04:09:18 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 28.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
nie wpatrywałem się w kod ale po co stosować funkcję password??
Lepszym rozwiazaniem (zresztą najczęściej stosowanym) jest użycie kodowania md5 , czyli tkzw. kodowaniem jednostronnym 32 bitowym. Wpisz do bazy danych hasło zakodowane własnie tym algorytmem (md5("$haslo")) i podczas autoeyzacji porównuj ciąg znaków z bazy z tym podanym przez usera np.: if(md5("$wpis_hasla_z_formularza") == $haslo_z_bazy_danych)) { //to akcja } |
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 742 Pomógł: 0 Dołączył: 14.12.2003 Skąd: Gdańsk, Trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
jaql: zasosuj bbcode w pierwszym poście, albo zamknę temat.
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 21:07 |