| 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: 15 let
|
|||
0