Autor | Zpráva | ||
---|---|---|---|
Meešák Profil * |
#1 · Zasláno: 4. 8. 2011, 06:07:13
Zdravím,
mohl by mi někdo pomoci s tímto scriptem? <?php include('includes/config.php'); $logusername = $_POST['username']; $logpassword = $_POST['password']; $database=mysql_select_db("databaze", $mysql); if (isset($_POST['submit'])) { $acc_dump = mysql_query("SELECT * FROM account WHERE username = '$logusername'")or die(mysql_error()); while ($acc = MySQL_Fetch_Array($acc_dump)){ $acc['username'] = $user; $acc['password'] = $pass; } $logpassword = md5($logpassword); if (isset($logusername) && isset($logpassword)) { if (($logusername == $user) && ($logpassword == $pass)) { if (isset($_POST['rememberme'])) { /* Set cookie to last 1 year */ setcookie('username', $logusername, time()+60*60*24*365, '?go=admin', 'www.ww.ww''); setcookie('password', $logpassword, time()+60*60*24*365, '?go=admin', 'www.ww.ww''); } else { /* Cookie expires when browser closes */ setcookie('username', $logusername, false, '?go=admin', 'www.ww.ww'); setcookie('password', $logpassword, false, '?go=admin', 'www.ww.ww''); } header('Location: index.php'); } else { echo 'Username/Password Invalid'; } } else { echo 'You must supply a username and password.'; } } else { ?> <form method="post" action=""> Username: <input type="text" name="username"><br> Password: <input type="password" name="password"><br> Remember Me: <input type="checkbox" name="rememberme" value="1"><br> <input type="submit" name="submit" value="Login!"> </form> <?php } ?> |
||
Majkl578 Profil |
#2 · Zasláno: 4. 8. 2011, 06:12:12
Pomoci s čím? S tím proč nefunguje? Za 1., 2. a 4. výskytem „www.ww.ww“ máš vždy jeden apostrof navíc.
|
||
Meešák Profil * |
#3 · Zasláno: 4. 8. 2011, 06:17:10
mám to u sebe opraveno, ale stále to nefunguje,
myslím že je chyba při výpisu z DB. ale nedokážu zjistit co je blbě |
||
jenikkozak Profil |
#4 · Zasláno: 4. 8. 2011, 06:47:00
Meešák:
> myslím že je chyba při výpisu z DB. > ale nedokážu zjistit co je blbě A tak co ti vypisuje ten mysql_error()? Meešák: „mohl by mi někdo pomoci s tímto scriptem?“ - Jistě. Na 6. řádku netestuj existenci položky $_POST['submit'], ale třeba $_POST['username']. Ten submit se ti totiž v Explorerech neodešle, pokud bude někdo posílat přihlašovací formulář pomocí Enteru (a tedy neklikne na to tlačítko s nápisem „Login!“. - Cyklem while na 8. řádku procházíš všechny údaje o uživatelích s uživatelským jménem odeslaným z formuláře. Stejně hodnoty těch polí při každém průchodu cyklu přepisuješ. A pokud máš více uživatelů totožného jména, ti první se ti ani nemohou přihlásit. Takže ten cyklus tam je zbytečný. Konečně ty proměnné $user a $pass jsou tak trochu zbytečné. To pole $acc můžeš klidně využít na 15. řádku místo nich. - Ještě by chtělo se zaměřit na bezpečnost, zejména zařídit, aby uživatelské jméno neobsahovalo apostrof. - Hlavička Location by měla pro jistotu obsahovat absolutní adresu přesměrování. |
||
Ugo Profil * |
#5 · Zasláno: 4. 8. 2011, 09:51:18
ještě bych k předchozím doplnil co se mi nelíbí a stálo by za předělání :
- proč ukládat vybrání databáze do proměné? - snažíš se najít uživatele dřív než zkontroluješ vyplňění polí, navíc ti končí při chybě smrtí skriptu (tam de předpokládám ale o debug) - potřebuješ z databáze 2 sloupce ale vybíráš všechny - k čemu while a nepoužil bych mysql_fetch_array ale mysql_result nebo mysql_fetch_assoc - přiřazení do proměných $user a $pass je opačně (nepřiřazuješ do nich ale do $acc) ... jejich vytvoření mi nevadí, PHP v tomhle případě neudělá kopii - nebylo by dobrý dát si... time()+60*60*24*365 ... do proměný? |
||
Joker Profil |
#6 · Zasláno: 4. 8. 2011, 10:31:46
|
||
Časová prodleva: 13 let
|
0