Diskuze: Machr na PHP - Validátor formulářů
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 21 zpráv z 21.
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.
A já už začal psát. 
Jestli na to zbude místo, proč ne.
Už i tak nevím, kam dát ty
důležité části. 
Opravdu musí být ty názvy česky? Raději bych to psal v angličtině.

Cite: Pokud byste neměli inspiraci,...
Přemýšlím, co bych v tom formuláři asi tak validoval... Nějak mě nic nenapadá, protože skoro nic nevaliduji.
A proč? S tou si přece databáze poradí sama.
Kromě toho se na SQL injekci nedělá validace, ale sanitizace.
Tak můj kód najdete zde:
http://www.itnetwork.cz/dev-lighter/155
http://www.itnetwork.cz/dev-lighter/156
v css mám akorát následující řádek:
textarea{width: 350px;height: 100px;}
S těmi pseudokomentáři si děláš srandu ty nebo tvoje IDE?
function jeMocDlouhy()
{ // BEGIN function jeMocDlouhy
return(count($this->zprava) > 244);
} // END function jeMocDlouhy
Tenhle validátor není ale přeci vůbec univerzální, když budeš chtít zvalidovat jiný formulář, musíš udělat novou třídu. To potom ztrácí smysl. Žádné další výtvory ke mne nedorazily (pokud jsem je nepřehlédl), což je škoda, je to určitě zajímavé téma. Asi za to může to horko, možná se k tomu ještě vrátíme později. Zde tedy bohužel nic.
Ahoj,
když sem nikdo nic nedal, tak sem jen pro ukázku hodím to, co jsem sepsal já. Bylo by ale potřeba doladit ještě hodně věcí, např.:
Na druhou stranu jsem se pokusil o možnost callbacků při odeslání,
úspěšném zpracování a chybě. Callbacky se uloží do pole, tudíž lze
volat i více callbacků na jednu událost.
Třída Form obsahuje metodu, která vám vrátí formátovaný obsah chyb
(nečíslovaný seznam). Lze si vytvořit funkci, kterou registrujete jako
callback pro událost onFailure, která vám chyby vypíše (tzn. se nemusíte o
vypsání chyb starat sami).
Zde přikládám aktuální zdrojáky:
Form
http://www.itnetwork.cz/dev-lighter/148
Element
http://www.itnetwork.cz/dev-lighter/149
Textové pole
http://www.itnetwork.cz/dev-lighter/150
Heslo
http://www.itnetwork.cz/dev-lighter/151
Odesílací tlačítko
http://www.itnetwork.cz/dev-lighter/152
Omlouvám se za double post, jen kdyby to někoho zajímalo, tak primitivní použití by mohlo vypadat třeba takto:
// Funkce, která vypíše seznam chyb.
function displayFormErrors($form)
{
$form = $form[0];
echo $form->getErrorsAsString();
}
// Vytvoření formuláře a jeho elementů.
$loginForm = new Form("login");
$loginForm->addInput("Jméno", array(
"name" => "name",
"minlength" => 3,
"maxlength" => 10,
"pattern" => "^[a-zA-Z0-9]+$",
"required" => "required"
));
$loginForm->addPassword("Heslo", array(
"name" => "password",
"minlength" => 5,
"required" => "required"
));
$loginForm->addCheckbox("remember_login", array(
"name" => "remember_login",
"value" => 1
));
$loginForm->addSubmit(array(
"name" => "login",
"value" => "Přihlásit se"
));
// Registrace callbacku
$loginForm->onFailure[] = array("displayFormErrors", $loginForm);
// Vykreslení formuláře
echo $loginForm;
// Zpracování formuláře
if ($_POST) {
$loginForm->process($_POST);
if (!$loginForm->hasErrors()) {
if ($loginForm->values->name === "magnus" && $loginForm->values->password === "magnus") {
echo "Přihlášení admina 'magnus'.";
} else {
echo "Přihlášení uživatele '" . $loginForm->values->name . "' pod heslem '" . $loginForm->values->password . "'.";
}
if ($loginForm->values->remember_login) {
echo "<br />Zapamatovat si přihlášení.";
}
}
}
Jo, tohle vypadá docela použitelně
Proč jsi to nepřihlásil? 
Jednak protože jsem to dopisoval asi před dvěma hodinami, jednak jsem
myslel, že bude větší počet soutěžících, tak jsem nechtěl vkládat
nedokončený výtvor. 
On většinou je, ale prázdniny a horko dělají své
Můžeš to tu publikovat,
třeba si z toho někdo něco vezme.
Zobrazeno 21 zpráv z 21.
