Grafika publishing webtip.cz grafika.cz mujiPod.cz mujmac.cz fotografovani.cz printing.cz builder.cz galerie
webtip.cz
adresář  | práce  | diskuse  | redakce  | inzerce
 
 


  Jak zvednout IQ formuláře
o autorovi 
poslat mailem 
tisknout článek 
aktuální rubrika 
Formuláře samy o sobě jsou jen nezáživná hloupá políčka. Ovšem ve spolupráci s PHP dostávájí nové, často velmi zajímavé možnosti.

Čevelíček Marek - 22.10.2002 - clanek - Rubrika: PHP

Stalo se vám někdy, že jste po kratší době opět zamířili na své oblíbené stránky a na těchto stránkách vás napadlo přispět svým pozdravem do guestbooku? Nic neobvyklého. A už se vám stalo, že když jste otevřeli stránku s guestbookem a v odesílacím formuláři bylo už předvyplněno vaše jméno (nick), email a možná ještě adresa www, přičemž jste do toho formuláře nic nepsali? Tak přesně tohle se jednou stalo mě a byl jsem velmi potěšen, že nemusím znovu zbytečně vyplňovat všechny políčka a místo toho stačí jen vyplnit pozdrav a odeslat. A právě o tomhle dnešní článek bude. Na jeho konci byste měli být schopni vytvářet takhle inteligentní formuláře, které ušetří vašim návštěvníkům mnoho času.

Začnu tím, jak to celé funguje. Je to na principu práce s cookie. Cookie není nic neznámého. Tyto koláčky se ukládají do vašeho počítače na podněty různých skriptů a nesou v sobě různé informace. Cookie nám umožňují nastavit si stránky podle svých potřeb. Na některých stránkách jsou třeba možnosti, že pokud nechcete zobrazovat určitou jejich část, prohlížeč si toto nastavení uloží jako cookie a při příštím navštívení stránek tyto kontrolují, jestli uživatel náhodou nemá jejich cookie s informacemi a případně je použije.

My této vlastnosti cookie využijeme při tvorbě inteligentního formuláře. Formulář bude nutné pouze jednou vyplnit ručně, aby se mohla odeslat cookie s potřebnými informacemi. Při dalším návratu na stránku zjistíme, jestli nemáte uloženu cookie, a pokud ano použijeme její hodnoty jako vstupní hodnoty formuláře.

Pokud je k určitým stránkám vázaná cookie, odesílá se automaticky. Stačí nám tedy jen zkontrolovat, zda nějaká dorazila nebo ne. Cookie mají svá jména a pro kontrolu musíme použít její jméno jako proměnnou. Nejlépe to pochopíte z následujícího skriptu:

<?
If ($visitor):
$var = Explode("###", $visitor);
else:
$var[0] = "";
$var[1] = "";
echo "<input type=\"hidden\" name=\"set\" value=\"1\">"; //pokud cookie neexistuje, hned po odeslání formuláře ji uložíme
endif;
?>

Skript říká: Pokud existuje cookie s názvem visitor, ulož do pole $var její hodnotu oddělenou třemi znaky #. Pokud neexistuje, přiřaď proměnným prázdné hodnoty a na obrazovku vypiš skryté pole se jménem set a hodnotou 1.

Po tomto skriptu bude následovat formulář, v němž jako výstupní hodnoty některých polí použijeme obsahy proměnných $var[0] a $var[1] jako na příkladě:

Jméno: <input type="text" name="jmeno" value="<? echo $var[0] ?>" size="30">
E-mail: <input type="text" name="email" value="<? echo $var[1] ?>" size="30">

Pokud jste tedy už někdy tento formulář vyplnili, zobrazí se vám v poli Jméno vaše dříve vyplněné jméno a v poli E-mail váše emailová adresa. Pokud však formulář vyplňujete poprvé, musíme si informace nejprve uložit. K tomu poslouží tento skript, který musí být umístěn na úplném začátku php souboru. Je to z toho důvodu, že cookie se musí odeslat jako první ještě před tím, než se na obrazovku vypíše nějaký kód.

<?
if ($set == 1):
$var[0] = $jmeno;
$var[1] = $email;
$values = Implode($var, "###");
SetCookie ("visitor", $values, $timein+31536000); //3. člen = platnost cookie; implicidně rok
endif;
?>

Pokud si vzpomínáte, v úplně první ukázce skriptu jsme vypisovali skryté pole input na obrazovku, pokud nepřišla žádná cookie. Toho nyní využijeme a pokud je tedy toto pole se jménem set vypsáno if ($set == 1):, uložíme do pole $var obsahy polí jméno a email. Poté pole sloučíme. Jako oddělovače použijeme ###. Ty křížky jsou tam tři proto, že kdyby náhodou měl nějaký člověk ve svém nicku jeden křížek a my jsme jeden křížek použili jako oddělovač, měl by půlku jména v poli Jmeno a půlku v poli E-mail, což nechceme. V našem případě by musel mít onen uživatel v nicku křížky tři :), což tak časté není.

Posledním krokem bude tedy uložení cookie s časovou platností 31536000 sekund - jeden rok.

Tím je inteligentní formulář připraven. Doufám, že se najde pát lidí, kteří tento skript využijí a uleví tak serfařům od zbytečné ztráty času nad vyplňováním formulářů. Pokud máte zájem o hotový skript, je TADY.

Čevelíček Marek


Hodnocení článku: -1- -2- -3- -4- -5-  Aktuální hodnocení: 2.68 (2610)

Relevantní články
Žádné články


Příspěvky do diskuse o aktuálním článku
Tomáš Valigura21.09.19:40Správné nastavení času
Zdeněk13.10.16:46Chyba
Dave09.12.8:38Řešení v Netscapu
Dave09.12.11:42RE: Řešení v Netscapu
Dave04.12.14:12Nefunkčnost v Netscapu
Liquid04.12.22:00RE: Nefunkčnost v Netscapu
Dave04.12.11:07Aktualizace platnosti cookie
Marek Čevelíček04.12.21:58RE: Aktualizace platnosti cookie
Tomáš29.10.14:42A vice poli?
Liquid29.10.19:43RE: A vice poli?
  

 

  O vydavateli | Kontakt | Ceník reklamy | Ochrana osobních dat
©2002 Grafika Publishing. Všechna práva vyhrazena!