Diskuze: Nette: form EQUAL a password z databazy

Člen

Zobrazeno 13 zpráv z 13.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |


Nedělám tolik do php, ale předpokládám, že
$form->addPassword('pass', 'Vase heslo:')
->setRequired('Napiste vase heslo')
->addRule(Form::EQUAL, 'Heslo sa nezhoduje',md5($post->password));
by mělo stačit.
Heslo se přece z databáze nikdy nevytahuje ani ve formě MD5.


Túto máš jednoduchý príklad + návod ako sa to v Nette rieši: http://doc.nette.org/…thentication
//Píšem ako anonym pretože keď som prihlásený tak mi nejde kliknúť na tlačítko odoslať (iba pri tomto príspevku), netuším prečo
Prepacte nenapadlo mi ze nette patri do sekcie PHP...:[
Jak říká Kit, hesla z databáze netahej. Předpokládám, že děláš přihlašování. Jednoduše si pošli dotaz na databázi s hashovaným heslem v podmínce WHERE:
SELECT id, username FROM users WHERE password = ? AND username = ?
Data, co ti to vrátí, si můžeš uložit do session jako identitu.
Zatím jsem nepochpil, k čemu Nette vlastně je, takže víc neporadím. Pro porovnávání se používají dotazy viz Drahomír Hanák , ale jak se to napasuje do Nette, netuším.
Nerobim prihlasovanie ale formular na zmenu hesla cize form:
a v tom forme sa volako snazim dat podmienku aby ze stare heslo z formu rovnalo s heslom v databeze
V databaze mam hesla ulozene v md5 takze ked to teraz porovnam tak priklad
ked je heslo "nbu1234" tak to porovnava
"nbu1234" <> "d41d8cd98f00b204e9800998ecf8427e"
este tomu nette nerozumiem... urcite sa to da dako lahko...
Tohle vyřeší databáze. SQL:
UPDATE users SET password = ? WHERE password = ? AND username = ?
Pro Nette Databse to bude vypadat nějak takto:
$connection
->table('users')
->where(array('password' => $oldPsw, 'username' => $username))
->update(array('password' => $newPsw));
Pokud používáš příklad z Nette Quick Startu, tak si vytvoř metodu ve třídě UsersRepository na změnu hesla (např. 'changePassword'), ve které místo $connection->table('users') budeš mít jen $this->getTable() a zbytek bude stejný. (pozor na verzi: Connection je ve verzích 2.x objekt typu Nette\Database\Connection v 2.1 Nette\Database\Context)
K tvé otázce s formuláři. Příklad, co jsem ti poslal, vrací počet ovlivněných řádek. Pokud bude výsledek 0 (ovlivněných řádek), v presenteru zavoláš $this->flashMessage('Toto není vaše staré heslo. Prosím, zkuste to znovu', 'error'), jinak mu stejným způsobem vypíšeš zprávu o úspěšné změně hesla.
Nette je framework napsaný v PHP. Na další otázky bude tedy lepší založit v sekci PHP nové vlákno a jako první slovo nadpisu napsat "Nette" kvůli snadné orientaci.
Jen se asi budeš muset spokojit s tím, že kvalita odpovědí bude pravděpodobně nižší, než ve specializovaném fóru.
Zobrazeno 13 zpráv z 13.