Autor Zpráva
fili
Profil
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
fili:
<?
echo "<b>".htmlSpecialChars($majitel['login'])."</b></div><br><br>";
?>
Joker
Profil
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
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
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
Taps:
Teraz mi uz nezobrazuje nic, len prazdnu stranku ani horny obrazok s menu

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: