Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: Problém s PDO

PHP PHP Problém s PDO American English version English version

Aktivity (1)
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Michal Vašíček:18.3.2014 20:00

Zdravím, začal jsem tedy překopávat weby a komunikaci s databází už zajišťuje PDO :) Jenomže při přihlašování mi to ukazuje jen hlášku, že jsem zadal blbý údaje ;(
Funkce, která přihlašuje:

function loginUser($nick, $heslo) {
        $heslo = sha1($heslo);
        connectDatabase();
        $dotaz = Db::query("SELECT * FROM uzivatele WHERE nick = ? AND heslo = ?", $nick, $heslo);
        $stav = 0;
        while($udaj == $dotaz) {
            $stav = $stav + 1;
            $id = $udaj['id'];
        }
        if($stav == 1) {
            session_start();
            $_SESSION['id'] = $id;
            Db::query("INSERT INTO log VALUES ('', 'Přihlášení', ?, ?, '" . date("j.n.Y G:o") . "')", $nick, $id);
            echo'<meta http-equiv="refresh" content="0;url=index.php?page=msg&function=login&type=good">';
        } else {
            Db::query("INSERT INTO log VALUES ('', 'Neúspěšné přihlášení', ?, ?, '" . date("j.n.Y G:o") . "')", $nick, $id);
            echo'<meta http-equiv="refresh" content="0;url=index.php?page=msg&function=login&type=bad">';
        }
    }

Je mi samozřejmě jasný, že tam mám někde naprosto dementní chybu, kterou vy najdete během pár vteřin :) Ale já ji prostě nenajdu, PDO je pro mě zatím španělská vesnice.

Odpovědět 18.3.2014 20:00
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
Odpovídá na Michal Vašíček
Martin Konečný (pavelco1998):18.3.2014 21:02

Tím "blbý údaje" máš na mysli špatné přihlašovací jméno nebo heslo?

Nahoru Odpovědět 18.3.2014 21:02
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Michal Vašíček:18.3.2014 21:05

Prostě mě to přesměruje na index.php?page=msg&fun­ction=login&ty­pe=bad, což mi zobrazí chybu. Nic konkrétnějšího :)

Nahoru Odpovědět 18.3.2014 21:05
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
Odpovídá na Michal Vašíček
Martin Konečný (pavelco1998):18.3.2014 21:11

Nějak jsem nepobral tuto část scriptu:

$dotaz = Db::query("SELECT * FROM uzivatele WHERE nick = ? AND heslo = ?", $nick, $heslo);
$stav = 0;
while($udaj == $dotaz) {
   $stav = $stav + 1;
   $id = $udaj['id'];
}

Nevím, co přesně vrací metoda Db::query(), ale ten while je nějaký nesmyslný. Porovnáváš tam proměnnou $udaj (která mimo jiné neexistuje) s proměnnou $dotaz, což je výsledek metody Db::query().
Pak je ten while nesmyslný v tom, že hledáš přece jen jednoho uživatele, tak tam nepotřebuješ cyklus.

Nahoru Odpovědět 18.3.2014 21:11
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Michal Vašíček:18.3.2014 21:12

Ano, je to nesmysl... v bezradnosti vyplodím cokoli :D

Nahoru Odpovědět 18.3.2014 21:12
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
Odpovídá na Michal Vašíček
Martin Konečný (pavelco1998):18.3.2014 21:29

Přemýšlej - prakticky jediné, co potřebuješ, je, aby se z DB vytáhlo ID uživatele podle jeho jména a hesla. Vyhledaný záznam projdeš a pokud se dané ID našlo, uložíš ho do session a přesměruješ. Pokud ne, hodíš error hlášku.

Nepotřebuješ na to cyklus, jen nějakou metodu fetch(). Nevím, jak vypadá struktura třídy Db, ale předpokládám, že tam něco takového je.

Nahoru Odpovědět 18.3.2014 21:29
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.