Autor Zpráva
Meešák
Profil *
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
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 *
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
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 *
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
Meešák:
nefunguje
Nejspíš to bude rozbité.

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:

0