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.

Vlastník

Zobrazeno 21 zpráv z 21.
//= 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.
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.