Diskuze: Při registraci uživatele Chyba => nekomunikace s databází
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
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.
Chyba je pravdepodobne v tom, že funkcia prepare na riadku predtým (ak to je tak ako si to predstavujem) vracia boolean hodnotu (false). Z dokumentácie:
If the database server cannot successfully prepare the statement, PDO::prepare() returns FALSE
Ale čo spôsobuje chybu ti bez náhľadu do kódov povedať neviem
Níže je kód, bez přístupových údajů k databázi.
Omlouvám se, že ho jen takto vkládám, ale nemám nyní možnost ho
nahrát.
Prakticky je to úplně stejný kód co napsal David. Copy + paste...
Ale mým hlavním problémem je teď otázka proč to nekomunikuje s
databází.
Díky za případnou radu.
<?php
session_start();
require('Db.php');
Db::connect('', '','', '');
if ($_POST)
{
if ($_POST['rok'] != date('Y'))
$zprava = 'Chybně vyplněný antispam.';
else if ($_POST['heslo'] != $_POST['heslo_znovu'])
$zprava = 'Hesla nesouhlasí';
else
{
$existuje = Db::querySingle('
SELECT COUNT(*)
FROM uzivatele
WHERE jmeno=?
LIMIT 1
', array($_POST['jmeno']));
if ($existuje == true)
$zprava = 'Uživatel s touto přezdívkou je již v databázi obsažen.';
else
{
Db::query('
INSERT INTO uzivatele (jmeno, heslo)
VALUES (?, SHA1(?))
', $_POST['jmeno'], $_POST['heslo'] . "t&#ssdf54gh");
/* $_SESSION['uzivatel_id'] = Db::getLastId();
$_SESSION['uzivatel_jmeno'] = $_POST['jmeno'];
$_SESSION['uzivatel_admin'] = 0;
header('Location: administrace.php');
exit();*/
}
}
}
?>
<!DOCTYPE html>
<html lang="cs-cz">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="styl.css" type="text/css" />
<title>Registrace</title>
</head>
<body>
<article>
<div id="centrovac">
<header>
<h1>Registrace</h1>
</header>
<section>
<?php
if (isset($zprava))
echo('<p>' . $zprava . '</p>');
?>
<form method="post">
Jméno<br />
<input type="text" name="jmeno" /><br />
Heslo<br />
<input type="password" name="heslo" /><br />
Heslo znovu<br />
<input type="password" name="heslo_znovu" /><br />
Zadejte aktuální rok (antispam)<br />
<input type="text" name="rok" /><br />
<input type="submit" value="Registrovat" />
</form>
</section>
<div class="cistic"></div>
</div>
</article>
</body>
</html>
Nenapadá ma takto čo by mohlo byť zle. Nekontroluješ či je vyplnené
napríklad meno, alebo heslo, ale to by nemalo spôsobovať chyby.
Trochu ma zaujalo, že pri DB::querySingle() predávaš parametre ako jedno pole
(array($_POST['jmeno'])) a potom pri DB::query() ich predávaš po jednom.
Ten kód je totožný s tím, který je zde na itnetworku...
Každopádně problém jsem již vyřešil.
Stejně Vám děkuji za reakce!
Zobrazeno 5 zpráv z 5.