Diskuze: Login
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 14 zpráv z 14.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Nemělo by tam být jen jedno "rovná se"?
if (mysql_num_rows($check_login) = 1) {
To opravdu ne. Jedná se o podmínku, nikoli o přiřazování hodnoty.
Sxmanek
Zkus si nechat vypsat, co je v
mysql_num_rows($check_login)
Hele, v databázi můžeš mít více stejných řádku, proto raději udělej toto:
if (mysql_num_rows($check_login) >= 1) {
A co se týče hesla, hashování prázdného řetězce ti nevrátí null, takže musíš udělat toto:
if (empty("$username") || empty( $_POST["password"] ))
// Nezahasovane heslo musis overit...
Už jsem to vyřešil První chyba byla, že jsem měl špatně jeden řádek
$_SESSION_ = ["$user_id"];
a ta druhá, že md5 vrací 32 znaků řětezec a já měl nastaveno u hesla v databázi max. 30, takže mi to porovnávalo 32 s 30 = vždy 0 shoda. Ale s tím hashováním prázdného řetězce dík.
Ještě jedna věc, která je tu ohledně PHP vždy oblíbená: Používej PDO. Možná je ze začátku těžší na pochopení, ale je to rozhodně dobrá investice. I já si vzpomínám jak jsem přecházel z toho starýho na PDO, ale jsem za to rád. Opravdu o tom uvažuj
Kouknu na to PHP ještě moc neumím, takže říkáš, ať se to učím rovnou s PDO?
Ano. Jak s říká, že starého psa nenaučíš novým kouskům, tak je to pravda. Je to přece logický, přechod na novou technoloii je vždy nějaký problém. Když se PDO naučíš rovnou, nezahltíš si hlavu něčím starým. Přece si taky nezačínal programovat v assembleru, tak proč se učit nějaký starý přístup k db
No a jak dlouho ti to vydrželo? A mělo to pěkný nevýhody co? Tak proč se učit staré technologie. Ano, někdy to smysl má, ale tohle to není
Nechce se mi zakládat nové téma, abych nespamoval, zkouším to teda předělat s PDO a mám problém s počtem řádků.
$query = $connection->prepare("SELECT * FROM users WHERE username = ? OR mail = ?");
$query = $query->execute(array($username, $mail));
$rows = $query->fetchALL(PDO::FETCH_COLUMN, 0);
$numrows = count($rows);
Vypisuje chybu:
Fatal error: Call to a member function fetchALL() on a non-object
na sifrovanie hesiel a inych udajov nepouzivaj MD5, ale inu, lebo uz nie je bezpecna
Zobrazeno 14 zpráv z 14.