PHP a HTML interagují hodně: PHP může generovat HTML a HTML může předávat informace PHP. Před čtením těchto častých dotazů je důležité se naučit, jak načíst proměnné z externích zdrojů. Manuální Stránka na toto téma obsahuje také mnoho příkladů.
jaké kódování / dekódování potřebuji, když předám hodnotu prostřednictvím formuláře / URL?
existuje několik fází, pro které je kódování důležité., Za předpokladu, že máte řetězec $data, který obsahuje řetězec, který chcete přenést na v non-kódované způsobem, jsou příslušné fáze:
-
HTML výklad. Chcete-li zadat náhodný řetězec, musíte jej zahrnout do dvojitých uvozovek a htmlspecialchars() celou hodnotu.
-
URL: URL se skládá z několika částí. Pokud chcete, aby vaše data byla interpretována jako jedna položka, musíte je kódovat pomocí urlencode().,
Příklad #1 skryté formě HTML prvek
<?php
echo '<input type="hidden" value="' . htmlspecialchars($data) . '" />'."\n";
?>
Poznámka: je špatné urlencode() $data, protože je to prohlížečů odpovědnost urlencode() data. Všechny populární prohlížeče to dělají správně. Všimněte si, že k tomu dojde bez ohledu na metodu (tj. To si všimnete pouze v případě požadavku GET, protože požadavky na příspěvky jsou obvykle skryty.,
Poznámka: data jsou zobrazena v prohlížeči, jak bylo zamýšleno, protože prohlížeč nebude interpretovat HTML unikl symboly. Po odeslání, a to buď přes GET nebo POST, data budou urlencoded prohlížeč pro přenos, a přímo urldecoded PHP. Takže nakonec nemusíte dělat žádné zakódování/urldecoding sebe, vše je zpracováno automaticky.,
Příklad #3 V URL
<?php
echo '<a href="' . htmlspecialchars("/nextpage.php?stage=23&data=" .
urlencode($data)) . '">'."\n";
?>
Poznámka: Ve skutečnosti jste předstírat HTML GET požadavek, proto je nutné ručně urlencode() data.
Poznámka: musíte htmlspecialchars() celá URL, protože URL se vyskytuje jako hodnota HTML atributu. V takovém případě prohlížeč nejprve un-htmlspecialchars () hodnotu a poté předá adresu URL. PHP bude správně rozumět URL, protože jste urlencode () D data., Zjistíte, že
&
v URL je nahrazen&
. Přestože se většina prohlížečů obnoví, pokud na to zapomenete, není to vždy možné. Takže i když vaše adresa URL není dynamická, musíte htmlspecialchars () URL.
snažím se používat <input type=“image“> tag, ale $foo.x a $ foo.y proměnné nejsou k dispozici. Ani $ _GET neexistuje. Kde jsou?,
Při odeslání formuláře, je možné použít obrázek místo standardní tlačítko odeslat s visačkou, jako:
<input type="image" src="https://www.php.net/manual/en/faq.html.phpimage.gif" name="foo" />
, Když uživatel klikne někde na obrázku, průvodní formulář bude předán serveru s další dvě proměnné: foo.x a foo.y.
protože foo.x a foo.y by neplatné názvy proměnných v PHP, jsou automaticky převedeny na foo_x a foo_y. To znamená, že období jsou nahrazeny podtržítky., Tak, že přístup těchto proměnných jako každá jiná, která je popsána v části o načítání proměnných z externích zdrojů. Například $_GET.
Poznámka:
mezery v názvech proměnných požadavků jsou převedeny na podtržítka.
Jak mohu vytvořit pole v HTML <formulář>?,
<formulář> výsledek poslán jako pole do PHP skriptu jméno <vstup>, <vyberte> nebo <textarea> elementy, jako je tato:
<input name="MyArray" /><input name="MyArray" /><input name="MyArray" /><input name="MyArray" />
Všimněte si hranatých závorkách po názvu proměnné, to je to, co dělá to pole., Můžete skupina prvků do různých polí přiřazením stejné jméno pro různé prvky:
<input name="MyArray" /><input name="MyArray" /><input name="MyOtherArray" /><input name="MyOtherArray" />
Toto produkuje dvě pole, MyArray a MyOtherArray, které posílá do PHP skriptu. Je také možné přiřadit specifické klávesy pro vaše pole:
<input name="AnotherArray" /><input name="AnotherArray" /><input name="AnotherArray" /><input name="AnotherArray" />
AnotherArray pole bude nyní obsahovat klávesy 0, 1, e-mail a telefon.
Poznámka:
zadání klíčů pole je v HTML volitelné., Pokud klíče neuvedete, pole se vyplní v pořadí, v jakém se prvky objeví ve formuláři. Náš první příklad bude obsahovat klíče 0, 1, 2 a 3.
Viz také funkce pole a proměnné z externích zdrojů.
Jak získám všechny výsledky z vybrané více značek HTML?
select multiple tag v HTML construct umožňuje uživatelům vybrat více položek ze seznamu. Tyto položky jsou pak předány akčnímu psovodu pro formulář. Problém je v tom, že jsou všechny předány se stejným názvem widgetu. Tedy.,
<select name="var" multiple="yes">
Každé vybrané možnosti dorazí na akci psovoda jako:
var=option1var=option2var=option3
Každá volba přepíše obsah z předchozích $var proměnné. Řešením je použití funkce PHP „array from form element“. Následující by měly být použity:
<select name="var" multiple="yes">
Tohle říká, PHP k léčbě $var jako pole a každé přiřazení hodnoty var přidá položku do pole. První položka se stává $ var, Další $ var, atd., Funkce count () lze použít k určení, kolik možností bylo vybráno,a funkce sort() lze v případě potřeby použít k třídění pole option.
Všimněte si, že pokud používáte JavaScript na název prvku může způsobit problémy, když se pokusíte odkazovat na prvek podle jména. Použití je číselné podobě, ID prvku, místo, nebo uzavřete název proměnné v jednoduchých uvozovkách a použít jako index prvků pole, například:
variable = document.forms.elements'];
Jak mohu přenést proměnnou z Javascriptu do PHP?,
protože Javascript je (obvykle) technologie na straně klienta a PHP je (obvykle) technologie na straně serveru, a protože HTTP je protokol „bez státní příslušnosti“, oba jazyky nemohou přímo sdílet proměnné.
je však možné mezi nimi předávat proměnné. Jedním ze způsobů, jak toho dosáhnout, je generovat kód Javascript s PHP a nechat prohlížeč aktualizovat sám, předávat specifické proměnné zpět do PHP skriptu. Níže uvedený příklad přesně ukazuje, jak to udělat-umožňuje PHP kódu zachytit výšku a šířku obrazovky, což je obvykle možné pouze na straně klienta.,