Autor Zpráva
gooner47
Profil *
Ahoj potřebuji zkontrolovat zda se např pod id 1 nachází heslo zadaná ve formuláři. Ale asi mám ale chybnou syntaxi:
$sql_kontrola_hesla = "SELECT * FROM uzivatele WHERE id = '$id' AND heslo = '$aktualni_heslo_md5'";

nevíte prosím vás někdo jak na to?
Monkeys
Profil *
gooner47:
na dotaz pouzi num_rows ak vrati 0 tak sa nenachadza ak 1 tak sa nachadza.

M.
gooner47
Profil *
Používám PDO

$kontrola_hesla = $db -> query($sql_kontrola_hesla) -> fetchColumn();

ten to příklad mám i u registrace ne kontrolu emailu a funguje bez problému, tak nevím..
Kubo2
Profil
gooner47, Monkeys:
> „potřebuji zkontrolovat zda se např pod id 1 nachází heslo zadaná ve formuláři
> „na dotaz pouzi num_rows
>

Nemusíš vyberať z tabuľky zbytočne všetky stĺpce, spomaluješ si tým aplikáciu/systém. Použi v dotaze SQL funkciu COUNT(), ktoré je ekvivalentná num_rows, ale spočítava nájdené riadky už v DB, a ako výsledok posiela len hodnotu (číslo).

$sql_kontrola_hesla = "SELECT COUNT(`id`) AS `existuje` FROM `uzivatele` WHERE `id` = '$id' AND `heslo` = '$aktualni_heslo_md5';";


gooner47:
Používám PDO
Tak to si vyriešený, iba testuj, či PDOStatement::fetchColumn() vracia FALSE alebo niečo iné.



gooner47
Profil *
$sql_kontrola_hesla = "SELECT COUNT(`id`) AS `existuje` FROM `uzivatele` WHERE `id` = '$id' AND `heslo` = '$aktualni_heslo_md5';";
                                $kontrola_hesla = $db -> query($sql_kontrola_hesla) -> fetchColumn();
                                    if ($kontrola_hesla != 0)
                                        {
                                            output_hlaska_heslo(2);
                                        }
takhle vypadá celý kod. A pořád mi to vypisuje hláčku že heslo neni v db
Kubo2
Profil
gooner47:
Nepoužívam PDO, takže si niesom istý, prečo to nefunguje. Ale minimálne ten SQL dotaz by mal vracať to čo sa od neho chce, prípadne to otestuj - nechaj si vypisovať priamo $db->query($sql_kontrola_hesla)->fetchColumn(); a skús zadať správne heslo (malo by vypísať 1) a zlé heslo (vypíše 0). Mimochodom, ako vyzerá kostra funkcie output_hlaska_heslo()?
gooner47
Profil *
function output_hlaska_heslo($num)
                        {
$hlaska[2] = '
div class="alert alert-error hlaska-zmena">
    <button type="button" class="close" data-dismiss="alert">&times;</button>
    <strong>Chyba!</strong> Zadané heslo není v databázi.
</div>';
echo '<p>'.$hlaska[$num].'</p>';
                            form_heslo();
                        exit();
                        }

Když zadám správná heslo tak to stejně napíš že neni v db

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: