Zpět na úvodní stránku

Vkládání php kódu

O vkládání html kódu není nutné cokoli říkat, to podstatné je uvedeno přímo v dané sekci administrace. Jen pro zopakování: pořadí prvků určovat raději s většími rozestupy (5. 10. 15. ...), snadno se pak mezi ně zařadí jiná šablona. Deaktivace šablony proběhne tak, že jí určíš pořadí vyšší než 1000. Pak nebude zařazena do zpracování, ale v databázi zůstane.
A to nejdůležitější: prvek vnořený do jiného prvku musí mít vyšší pořadové číslo než ten, ve kterém je umístěn. Důvod je vysvětlen u formuláře pro nový prvek.

A nyní k php...

Možnosti vkládání php jsou docela omezeny a nezakrývám, že jde spíše o experimentální funkci. Prostě mě napadlo, že by to mohlo fungovat a nějak to funguje... za každou radu, jak rozšířit funkčnost, budu vděčný.

V současné době jde o toto: ty vložíš nějaký php kód. Při uložení do databáze jsou ke všem uvozovkám a znakům dolaru přidána escapovací lomítka. Tak to vyžaduje php fce eval(), která provádí provedení tvého php kódu.

Při reloadu webu se načítají všechny kódy (s pořadím pod 1000) a provádějí se. Pokud je jejich tag nalezen v šabloně, samozřejmě.

Nyní jsou 2 možnosti:

  1. Tvůj php kód generuje nějaký výstup. Tag v šabloně má být nahrazen výsledkem scriptu. Pak je nezbytně nutné, aby byl tento výsledek na konci tvého scriptu vložen do proměnné $sablonaNahrazeni. Jedině v tom případě dojde k nahrazení tagu v šabloně výsledkem scriptu. A o to jde, nebo se mýlím?
  2. Tvůj tag negeneruje žádný výstup. Dejme tomu, že třeba ukládá IP adresy návštěvníků do souboru. I když do šablony není nic vloženo, je nutné, aby v ní byl umístěn tag tohoto kódu. Jak jinak, ten by přece bez toho nebyl zavolán a zpracován. Skutečnost, že nejde o script, který by vygeneroval nějaký obsah, také není nijak znepokojující. Když systém zjistí, že je proměnná $sablonaNahrazeni prázdná, jednoduše jen odstraní tag aktuálního kódu ze šablony, resp je nahrazen ničím (= vymazán).

Až se hrozím toho, jak jednoduše to vypadá... takhle můžeš nabýt falešného dojmu, že o nic nejde :) To by byl ovšem šeredný omyl. Co se stane s webem, když budeš mít chybu v kódu, to se situaci od situace liší. Ale hezké to nebude.

Pluginový nástroj

Toto rozhraní lze také využít pro jistou verzi pluginovatelnosti. Někdo napíše nějaký php kód, zveřejní jej u sebe na webu a nabídne ke stažení a používání. Beztak to budu sám dělat :) Jenže... co když někdo zveřejní kód, který bych do lidské řeči přeložil takto: udělej toto, udělej tamto, udělej todlecto, odmejluj přístupové údaje k databázi na můj mejl, udělej toto, udělej tamto.... Neprogramátor toto nebezpečí nerozezná... ale to už je holt riziko této experimentální fce.

Už jen doplním... dej pozor na zapomenuté středníky na konci řádku, dělají problémy :) A vzhledem k rozvržení webu nelze ani omylem použít php funkci echo(). Takový výstup by zničil strukturu stránky. Vše, co ze scriptu vystupuje, musí projít přes výše zmíněnou proměnnou.