| Autor | Zpráva | ||
|---|---|---|---|
| Pavel Vodnář Profil * |
#1 · Zasláno: 25. 1. 2011, 21:03:40
Dobrý den, potřeboval by jsem poradit jak s tímto kódem naložit - kód umí ověřit zda je uživatel registrovaný, když ne vypíše uživatel nenalezen.
Nicméně nedaří se mi přijít na to jak ověřit když je uživatel nalezen zda bylo zadáno správné heslo - kde mám chybku v kódu? Děkuji Vám
// kontrola údajů
if ($submit)
{
$connect = mysql_connect ("$localhost","$user","$pass") or die("Nepodařilo se připojit k databázi");
mysql_select_db ("sroty_net_"); //select database
//zkouka existence jmena
$zkouskajmena = mysql_query("SELECT uzivatelskejmeno FROM klienti WHERE uzivatelskejmeno='$name'");
$count = mysql_num_rows($zkouskajmena);
// zkouska existence hesla u daného jména
$zkouskahesla= mysql_query("SELECT heslo FROM klienti WHERE uzivatelskejmeno='$name'");
$count1 = mysql_num_rows($zkouskahesla);
if ($count==0)
{
$obsazeno ="Uživatelské jméno nenalezeno";
}
if (($count!=0)&&($count1!=0))
{
$uzivatelnalezen ="Zadali jste špatné heslo";
}
} |
||
| Alphard Profil |
#2 · Zasláno: 25. 1. 2011, 21:16:12
Ten druhý dotaz nepotřebujete. V prvním si vytáhněte i heslo a pak stačí porovnat
$hesloDb == sha1($_POST['heslo']), pokud teda používáte zrovna sha1().
Ochranu proti sql injection určitě máte v předchozí části kódu :-) |
||
| xmark Profil |
#3 · Zasláno: 25. 1. 2011, 21:17:46
Zkontroloval bych řádky 13 a 17. Opravil do očí bijící chyby a pak ty dva dotazy spojil do jednoho do podoby:
SELECT neco FROM tabulka WHERE neco = '$name' AND necojineho = '$heslo' |
||
| Pavel Vodnář Profil * |
#4 · Zasláno: 25. 1. 2011, 21:47:26
Děkuji Vám už to běží jak má
|
||
|
Časová prodleva: 4 dny
|
|||
| Dědeček Profil * |
#5 · Zasláno: 29. 1. 2011, 19:07:03
Proč nepoužít jednoduše
if(mysql_result(mysql_query("select count(*) from **** where **** = '****' and ****= '*****'"), 0, 0)) |
||
| pcmanik Profil |
#6 · Zasláno: 29. 1. 2011, 22:02:34
Dědeček:
Preco by mal pouzit mysql_result? Ta funkcia je pomala, oplati sa viac mysql_fetch_array. A aj tak ta podmienka bude vzdy vyhodnotena kladne, ak bude count 1, 0 ale kludne aj 1000 takze je to hlupost... |
||
|
Časová prodleva: 15 let
|
|||
0