28. ledna 2008
Externí hlasovací formuláře na Ujdeto. Věc, která pokud si dobře pamatuju napadla poprvé Filipouse, a která skýtá mnohé přínosy jak pro Ujdeto, tak pro různé fankluby. Úplně nejjednodušší realizace, která byla až do dnešního večera oficiálně doporučená, spočívala ve vytvoření "falešného" hlasovacího formuláře - předvyplněného formuláře, který posílal veškeré potřebné údaje stejným způsobem, jako kdyby byl odeslán oficiální formulář. Generování takového formuláře bylo snadné, proto jsem jej mohl dát na tlačítko hned vedle hlasovacího tlačítka. Asi dvacet webů se toho chytlo, ale stejně to pořád nebylo úplně ono. Formulář byl málo akční a jakmile vybrané skladby z hitparády vypadly, stal se formulář nepoužitelným. Navíc se vždy výsledky otevíraly do nového okna s plnohodnotnou stránkou Ujdeto.cz, což také dost odrazovalo. Na základě přání lidu (konkrétně děkujte Adél) jsem se proto rozhodl hlasovací formulář významným způsobem inovovat. Vlastně jsem jej udělal úplně znova.
Všechny výše uvedené problémy jsem vyřešil novým generátorem hlasovacích formulářů. Mezi hlavní vlastnosti nového hlasovacího formuláře patří:
Problém nového hlasovacího formuláře spočívá v tom, že určité části kódu jsou spouštěny na stránce (doméně) fanklubu a určité části kódu musí být nutně spuštěny na stránce (doméně) Ujdeto.cz, přičemž obě části spolu musí nějakým způsobem komunikovat. Ochrana před XSS zabudovaná do všech moderních prohlížečů samozřejmě nic podobného nedovoluje, takže je zapotřebí tuto skutečnost nějakým způsobem obejít. V praxi to vypadá tak, že je na stránky fanklubu umístěn obal hlasovacího formuláře s nastavením proměnných, definicí kaskádových stylů a elementem IFRAME, který obsahuje výkonný kód spouštěný na straně Ujdeto serveru (ten se stará o vypsání formuláře a zpracování hlasování). Jelikož obsah spouštěný v tomto vnořeném rámci IFRAME nemůže přistupovat k obsahu stránky v rodičovském rámci, potřebuje se k němu dostat jiným způsobem. Za tímto účelem používám HTTP hlavičku Referer, která obsahuje adresu stránky v rodičovském rámci. Obsah této stránky se stáhne, přečtou se důležité hodnoty (sekce nastavení, kaskádové styly apod) a následně se s použitím těchto hodnot vytvoří HTML kód hlasovacího formuláře.
Toto řešení má však jeden háček - adresa v Refereru musí za každých okolností obsahovat alespoň fragment vygenerovaného hlasovacího formuláře (nastavení, css,...). V případě, že je obsah adresy generován na základě odeslaného formuláře metodou POST nebo na základě obsahu Sessions, ujdeto server nebude moci potřebné údaje přečíst. Nedostane se k nim. Samozřejmě se i tento problém dá nějakým způsobem řešit, ale rozhodně to není úplně banální a vhodné pro běžného Frantu uživatele, který spravuje nějaké phpBB forum. V případě, že budete chtít vložit hlasovací formulář na zaheslované stránky, můžete mě kontaktovat na [email schován].
No a na závěr nesmí chybět odkaz na nový generátor hlasovacího formuláře Ujdeto pro fankluby a pár ukázek:
Publikováno dne 28. 01. 2008 v kategorii Moje weby
Odhadnutá klíčová slova BETA: hlasovací | hlasovací formulář | formuláře | html | hlasování | vytvoření
Mohlo by Vás zajímat BETA: Elektronický podpis a ePodání - daně elektronicky I
O kategorii Moje weby
Do této kategorie patří články, které se týkají mých vlastních internetových projektů. Kromě různých zajímavostí a zákulisních informací zde naleznete také velké procento vyloženě propagačních článků, které mají za cíl upozornit širokou veřejnost na různé nové funkce a vlastnosti.
POZOR: K článku zatím nebyl vložen žádný komentář, takže s velkou pravděpodobností nikoho neurazil, nikoho nepobavil a už vůbec nikomu nepomohl.
Programátor, samozvaný hodnotitel a zejména kritik.
Pan Vyplňto.cz a tvůrce několika webových stránek.