Diskuze: Nefunkční přihlášení/registrace
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 14 zpráv z 14.
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 |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj,
je sice hezký, že ti to vyhodí čistou stránku, ale co třeba postnout nějaký kód, abychom se na to mohli podívat?
Myslíš, že ti bez ukázky kódu někdo bude umět poradit? Trošku víc podrobností by to chtělo...
Jo, na to jsem myslel.. Snad to příliš nezahltím.. Tohle je ta důležitá část z RegistraceKontroler.php :
public function zpracuj($parametry)
{
// Hlavička stránky
$this->hlavicka['titulek'] = 'Registrace';
if ($_POST)
{
try
{
$spravceUzivatelu = new SpravceUzivatelu();
$spravceUzivatelu->registruj($_POST['jmeno'], $_POST['heslo'], $_POST['heslo_znovu'], $_POST['rok']);
$spravceUzivatelu->prihlas($_POST['jmeno'], $_POST['heslo']);
$this->pridejZpravu('Byl jste úspěšně zaregistrován.');
$this->presmeruj('administrace');
}
catch (ChybaUzivatele $chyba)
{
$this->pridejZpravu($chyba->getMessage());
}
Odkazuje se to na správceUzivatelu.php :
public function vratOtisk($heslo)
{
$sul = 'fd16sdfd2ew#$%';
return hash('sha256', $heslo . $sul);
}
// Registruje nového uživatele do systému
public function registruj($jmeno, $heslo, $hesloZnovu, $rok)
{
if ($rok != date('Y'))
throw new ChybaUzivatele('Chybně vyplněný antispam.');
if ($heslo != $hesloZnovu)
throw new ChybaUzivatele('Hesla nesouhlasí.');
$uzivatel = array(
'jmeno' => $jmeno,
'heslo' => $this->vratOtisk($heslo),
);
try
{
Db::vloz('uzivatele', $uzivatel);
}
catch (PDOException $chyba)
{
throw new ChybaUzivatele('Uživatel s tímto jménem je již zaregistrovaný.');
}
}
// Přihlásí uživatele do systému
public function prihlas($jmeno, $heslo)
{
$uzivatel = Db::dotazJeden('
SELECT uzivatele_id, jmeno, admin
FROM uzivatele
WHERE jmeno = ? AND heslo = ?
', array($jmeno, $this->vratOtisk($heslo)));
if (!$uzivatel)
throw new ChybaUzivatele('Neplatné jméno nebo heslo.');
$_SESSION['uzivatel'] = $uzivatel;
}
a poslední co by to mělo ovlivňovat jsou tyto dvě metody v Dp.php :
public static function dotaz($dotaz, $parametry = array()) {
$navrat = self::$spojeni->prepare($dotaz);
$navrat->execute($parametry);
return $navrat->rowCount();
}
// Vloží do tabulky nový řádek jako data z asociativního pole
public static function vloz($tabulka, $parametry = array()) {
return self::dotaz("INSERT INTO `$tabulka` (`".
implode('`, `', array_keys($parametry)).
"`) VALUES (".str_repeat('?,', sizeOf($parametry)-1)."?)",
array_values($parametry));
}
Musí tam být ne úplně překlep, ale asi nějaká drobnost, kvůli které to vlastně vypisuje prázdné... (pole?) .
Ještě jsem příliš nepobral "nyní mi to vyhodí čistou stránku s hodnotou 1". Jako že ti to hodí jen bílou stránku a je tam napsaná 1?
Jo, přesně tak..předtím to házelo chybovou hlášku, kterou mám někde v kódu nastavenou.. trochu jsem si s tím pohrál a vypisuje to jedničku.. pouze jedničku..
Ta jednička je způsobena tímto řádkem ve spravceUzivatelu.php pod částí, kde se definuje $uzivatel :
die(print_r($uzivatel));
Tak mi to píše "Neplatné jméno nebo heslo." byť to ale zadávám správně, přesně jako když jsem dělal registraci (u registrace mi to háže stejný problém, ale do db se uživatel vloží)
Něco je špatně v tom mechanismu, který obsluhuje kontrolu zadávaných údajů
Zkus si vypsat hash toho hesla, jestli souhlasí s tím v DB.
U podmínky WHERE záleží i na velikosti písmen (včetně jména).
To nebyl špatnej nápad, když si tam vypíšu hash zadaného hesla (aspoň myslím, že to je on) tak mi vyskočí ten samý co v db ale navíc je za tím nějaký další nesmyslný kus otisku toho hesla, který ale v db už není..
v db je otisk: 84990d792c1a6834d3fdcb60360006
a mě to vypíše navíc: d2c52387e03cbff7e9a11dfe1cb1e39de2 (tohle pokračuje
za tím nahoře)
Nechápu kde se to tam vzalo ale :/
Tak mám asi problém vyřešen! já si totiž v db nastavil velikost pole
heslo varchar(30), jenže tento hash se vytváří asi tak sto znakový, možná
i delší.. takže jsem pro jistotu navýšil na 250 a novou registraci mi to
již dobře přesměrovalo do administrace!!
to vypsání mi pomohlo, díky

Zobrazeno 14 zpráv z 14.