Autor | Zpráva | ||
---|---|---|---|
fili Profil |
#1 · Zasláno: 26. 7. 2013, 15:16:47
Mám dole uvedený kód, chcem vypísať po prihlásení do užívateľského účtu
jeho majiteľa, ale vypisuje mi len "Majiteľ účtu:", meno resp. login mi už nevypisuje, kde mám chybu? Ako to má byť správne, aby to šlapalo? $sql="SELECT * FROM majitel WHERE login LIKE %".AddSlashes($_POST['login'])."%' and password LIKE '%".AddSlashes($_POST['password'])."%'"; //echo "SQL:{$sql}<br>"; - vypisanie sql dotazu $result=MySQL_Query($sql) Or Die(MySQL_Error()); echo "<div class=\"pocet\">Majiteľ účtu:"; While($majitel=MySQL_Fetch_Array($result)); { echo "<b>".htmlSpecialChars($login['login'])."</b></div><br><br>"; } |
||
Taps Profil |
#2 · Zasláno: 26. 7. 2013, 15:31:37
fili:
<? echo "<b>".htmlSpecialChars($majitel['login'])."</b></div><br><br>"; ?> |
||
Joker Profil |
#3 · Zasláno: 26. 7. 2013, 15:43:30
fili:
Protože se přiřazuje do proměnné $majitel a vypisuje z proměnné $login. Každopádně ten kód je celý „divný“, resp. obsahuje spoustu chyb (seřazeno zhruba podle závažnosti). 1. V první řadě vůbec nechápu jeho smysl, kromě toho, že umožňuje zjistit hesla uživatelů. (zadám prázdný login a heslo „heslo“ a vypíší se mi všichni uživatelé, kteří mají heslo „heslo“. Anebo zadám prázdný login a prázdné heslo a vypíší se všichni uživatelé. Vyberu si jednoho, zadám jeho login a heslo třeba „e“. Pokud daný uživatel má v heslu „e“, vypíše se jeho jméno, jinak se nevypíše nic. Takhle můžu postupným zkoušením zjistit jeho heslo.) 2. Do databáze se neukládají čistá hesla, která zadává uživatel. Ukládejte a porovnávejte jen otisk (hash) hesla. 3. Nepoužívejte addslashes. Používejte mysql_real_escape_string. 4. Počáteční značka prvku <div> je před cyklem, ukončovací značka </div> je uvnitř cyklu. Když bude více záznamů, budou tam ukončovací značky navíc. 5. Celé rozšíření mysql je už zastaralé a nemělo by se používat. Používejte mysqli nebo PDO. |
||
fili Profil |
#4 · Zasláno: 26. 7. 2013, 16:05:52
Joker:
Protože se přiřazuje do proměnné $majitel a vypisuje z proměnné $login. to som samozrejme opravil, ale aj tak to nefunguje 1.malo by to vypisovať len jeden login po prihlásení konkrétneho majiteľa, kdže daný majiteľ účtu je už prihlásený 2. Čím tie heslá zahashujem pri vkladní do databáze? 3. Prečo? addslashes je zastaralé? 5. PDO nepoznám a neviem či by mi mysqli akceptovalo. |
||
Taps Profil |
#5 · Zasláno: 26. 7. 2013, 16:11:46
fili:
2) pro hashování můžeš použít funkci md5 nebo lépe sha1 <? $test= sha1('heslo'); ?> <? $sql="SELECT * FROM majitel WHERE login=mysql_real_escape_string($_POST['login']) and password=mysql_real_escape_sring($_POST['password'])"; //echo "SQL:{$sql}<br>"; - vypisanie sql dotazu $result=MySQL_Query($sql) Or Die(MySQL_Error()); echo "<div class=\"pocet\">Majiteľ účtu:"; $majitel=MySQL_Fetch_Array($result); echo "<b>".htmlSpecialChars($majitel['login'])."</b></div><br><br>"; ?> |
||
fili Profil |
#6 · Zasláno: 26. 7. 2013, 16:19:58
Taps:
Teraz mi uz nezobrazuje nic, len prazdnu stranku ani horny obrazok s menu |
||
Časová prodleva: 11 let
|
0