Manuál PHP | ||
---|---|---|
Předcházející | Další |
PHP a HTML mají hodně společného: PHP generuje HTML, a HTML má informace, které budou poslány PHP.
Je více situací, pro které je zakódování důležité. Za předpokladu, že máte string $data, který obsahuje řetězec, jenž máte nezakódovaný a chcete ho poslat, je třeba se zabývat těmito relevantními problémy:
HTML interpretace. Pokud specifikujete náhodný (obecný) řetězec, musíte ho dát do uvozovek a celý ho zpracovat funkcí htmlspecialchars() (aby se odstranily/převedly speciální znaky jazyka HTML).
URL: sestává z několika částí. Pokud chcete, aby vaše data byla interpretována jako jedna položka, musíte je zakódovat pomocí urlencode().
Poznámka: Je chybou použít urlencode() pro $data, protože prohlížeče samy zajišťují zpracování dat shodné s funkcí urlencode(). Všechny oblíbené prohlížeče to dělají korektně. Uvědomte si, že toto není závislé na použité metodě (např. GET nebo POST). Všimnete si toho však pouze v případě GET, protože požadavky POST jsou obvykle skryté.
Poznámka: Data jsou v prohlížeči zobrazena tak, jak bylo zamýšleno, protože prohlížeč bude správně interpretovat speciální symboly.
Po odeslání, ať již pomocí GET nebo POST, data budou zakódována způsobem urlencode pro přenos a následně přímo dekódována v PHP. Takže vůbec nepotřebujete provádět žádné zakódování/dekódování ručně, vše je prováděno automaticky.
Poznámka: V tomto případě již opravdu vytváříte GET požadavek, proto je nutné data kódovat ručně pomocí urlencode().
Poznámka: Musíte také použít htmlspecialchars() na celý URL, protože URL je zde hodnotou HTML atributu. V tomto případě prohlížeč nejdříve odstraní speciální znaky a pak zpracuje URL. PHP správně pochopí posílaný URL, protože jste data zakódovali pomocí urlencoded().
Můžete se všimnout, že symbol & v URL je nahrazen &. Přestože to většina prohlížečů opraví. pokud na to zapomenete, není to vždy možné. Takže pokud váš URL není dynamický, musíte použít htmlspecialchars().
Když odesíláte formulář, lze namísto standardního tlačítka použít obrázek pomocí tagu jako
<input type="image" src="image.gif" name="foo"> |
Protože $foo.x a $foo.y jsou v PHP neplatné názvy proměnných, jsou automaticky převedeny na $foo_x a $foo_y. Tzn. tečky jsou nahrazeny podtržítky.
Aby výsledky odeslání vašeho formuláře byly umístěny v poli (array), nazvěte elementy <input>, <select> nebo <textarea> tímto způsobem:
<input name="MyArray[]"> <input name="MyArray[]"> <input name="MyArray[]"> <input name="MyArray[]"> |
<input name="MyArray[]"> <input name="MyArray[]"> <input name="MyOtherArray[]"> <input name="MyOtherArray[]"> |
<input name="AnotherArray[]"> <input name="AnotherArray[]"> <input name="AnotherArray[email]"> <input name="AnotherArray[phone]"> |
Poznámka: Specifikace klíců polí je v HTML nepovinné. Pokud klíče nespecifikujete, pole bude vyplněno podle pořadí elementů ve formuláři. Náš první příklad obsahuje klíče 0, 1, 2 a 3.
Viz také Funkce pro práci s poli a Proměnné z vnějšku PHP.
Tag pro vícenásobný výběr v HTML konstruktu umožňuje uživatelům vybrat více položej ze seznamu. Tyto položky se posílají do handleru pro formulář. Problém je v tom, že se zpracovávají pod stejným jménem. Například:
<select name="var" multiple> |
var=option1 var=option2 var=option3 |
<select name="var[]" multiple> |
Uvědomte si, že pokud používáte JavaScript, může přidání [] do názvu elementu způsobit problémy při pokusu odkazovat element jeho jménem. Tehdy použijte číselnou identifikaci elementu, nebo název proměnné uzavřete do apostrofů a použijte ho jako indexaci do pole elementů, například:
variable = documents.forms[0].elements['var[]']; |
Předcházející | Domů | Další |
Používání PHP | Nahoru | PHP a COM |