PHP: Pou��v�n� PHP - Manual
PHP  
downloads | documentation | faq | getting help | mailing lists | | php.net sites | links | my php.net 
search for in the  
<Sestavovac� (kompila�n�) probl�myPHP a HTML>
view the version of this page
Last updated: Thu, 15 Jul 2004

Kapitola 52. Pou��v�n� PHP

Tato ��st shrnuje nej�ast�j�� chyby, se kter�mi se m��ete setkat p�i psan� PHP skript�.

1. Cht�l bych napsat generick� PHP skript, kter� by um�l zpracovat data z jak�hokoli formul��e. Jak se dozv�m, kter� prom�nn� metody POST jsou k dispozici?
2. Pot�ebuji p�ev�st v�echny apostrofy (') na zp�tn� lom�tka n�sledovan� apostrofy. Jak se to d� ud�lat pomoc� regul�rn�ho v�razu?
3. Kdy� nap�u n�sleduj�c� k�d, v�stup se tiskne v nespr�vn�m po�ad�:
function myfunc($argument)
{
   echo $argument + 10;
}
$variable = 10;
echo "myfunc($variable) = " . myfunc($variable);
what's going on?
4. Hej, co se stalo s m�mi konci ��dk�?
<pre>
<?php echo "Tohle by m�l b�t prvn� ��dek."; ?>
<?php
echo "Tohle by se m�lo uk�zat na nov�m ��dku."; ?>
</pre>
5. Zobrazila se mi zpr�va 'Warning: Cannot send session cookie - headers already sent...' nebo 'Cannot add header information - headers already sent...'.
6. Pot�ebuji p��mo p�istupovat k hlavi�ce po�adavku. Jak to ud�lat?
7. Kdy� zkus�m autentikaci s IIS, dostanu 'No Input file specified'.
8. M�j PHP skript pracuje na IE a Lynxu, ale v Netscapu ��st v�stupu miz�. Kdy� si zapnu "Zobrazit zdrojov� k�d", v IE vid�m obsah, v Netscapu nikoliv.
9. Jak� jsou p�edpoklady m�ch�n� XML a PHP? St�uje si to na moje <?xml> tagy!
10. Jak mohu pou��t PHP s FrontPagem nebo jin�m HTML editorem, kter� trv� na odsunut� m�ho k�du?
11. Kde najdi �pln� seznam dostupn�ch p�ednastaven�ch prom�nn�ch, a pro� to nen� zdokumentov�no v dokumentaci PHP?
12. Zkou��m p�istupovat k jedn� ze standardn�ch CGI prom�nn�ch (jako je $DOCUMENT_ROOT nebo $HTTP_REFERER) v u�ivatelsky definovan� funkci, a nem��e ji to naj�t. Co je �patn�?

1. Cht�l bych napsat generick� PHP skript, kter� by um�l zpracovat data z jak�hokoli formul��e. Jak se dozv�m, kter� prom�nn� metody POST jsou k dispozici?

Ujist�te se, �e m�te v souboru php.ini zapnuto track_vars Od PHP 4.0.3 je tato mo�nost v�dy zapnuta. Pokud tomu tak je, vytvo�� se n�jak� asociativn� pole, z nich� nejd�le�it�j�� je $HTTP_POST_VARS. Tak�e pro psan� generick�ho skriptu pro obsluhu prom�nn�ch metody POST budete pot�ebovat p�ibli�n� toto:
foreach ($HTTP_POST_VARS as $var => $value) {
   echo "$var = $value<br>\n";
}

2. Pot�ebuji p�ev�st v�echny apostrofy (') na zp�tn� lom�tka n�sledovan� apostrofy. Jak se to d� ud�lat pomoc� regul�rn�ho v�razu?

Nejd��ve se pod�vejte na funkci addslashes(). D�l� p�esn� to, co pot�ebujete. M�li byste se tak� pod�vat na direktivu magic_quotes_gpc v souboru php.ini.

3. Kdy� nap�u n�sleduj�c� k�d, v�stup se tiskne v nespr�vn�m po�ad�:
function myfunc($argument)
{
   echo $argument + 10;
}
$variable = 10;
echo "myfunc($variable) = " . myfunc($variable);
what's going on?

Pro pou�it� v�sledk� va�� funkce ve v�razu (jako je spojen� s jin�m �et�zcem v p��kladu v��e), mus�te hodnotu vracet (pomoc� vracet), ne tisknout() (pomoc� echo()).

4. Hej, co se stalo s m�mi konci ��dk�?
<pre>
<?php echo "Tohle by m�l b�t prvn� ��dek."; ?>
<?php
echo "Tohle by se m�lo uk�zat na nov�m ��dku."; ?>
</pre>

V PHP se blok k�du zakon�uje bu� "?>", nebo "?>\n" (kde \n znamen� nov� ��dek). Tak�e ve v��e uveden�m p��kladu budou vypsan� v�ty na jedin�m ��dku, proto�e PHP vynech�v� konce ��dk� za koncem bloku. To znamen�, �e mus�te p�id�vat zvl�tn� konce ��dk� za ka�d� blok PHP k�du, aby se vytisklo od��dkov�n� jedin�.

Pro� to PHP d�l�? P�i form�tov�n� norm�ln�ho HTML to obvykle zjednodu�uje �ivot, proto�e nechcete konce ��dk�, n�br� chcete vytvo�it extr�mn� dlouh� ��dky nebo jinak zne�itelnit zdrojov� k�d.

5. Zobrazila se mi zpr�va 'Warning: Cannot send session cookie - headers already sent...' nebo 'Cannot add header information - headers already sent...'.

Funkce header(), set_cookie() a funkce session mus� do v�stupu p�idat hlavi�ky. Hlavi�ky je mo�no pos�lat pouze p�ed vlastn�m obsahem. Funkce to ud�laj�, pokud PHP b�� jako modul Apache. N�sleduj�c� kus k�du zobraz� v�echny hlavi�ky v po�adavku:
$headers = getallheaders();
foreach ($headers as $name => $content) {
   echo "headers[$name] = $content<br>\n";
}

6. Pot�ebuji p��mo p�istupovat k hlavi�ce po�adavku. Jak to ud�lat?

Funkce getallheaders() to ud�l�, pokud PHP b�� jako modul do Apache. N�sleduj�c� kus k�du zobraz� v�echny hlavi�ky v po�adavku:
$headers = getallheaders();
foreach ($headers as $name => $content) {
   echo "headers[$name] = $content<br>\n";
}

7. Kdy� zkus�m autentikaci s IIS, dostanu 'No Input file specified'.

Bezpe�nostn� model IIS je s t�m na �t�ru. Je to probl�m spole�n� v�em CGI program�m b��c�m pod IIS. �e�en�m je vytvo�it oby�ejn� HTML soubor (neparsovan� PHP) jako vstupn� str�nku do autentikovan�ho adres��e. Potom se pou�ije META tag k p�esm�rov�n� na PHP str�nku nebo odkaz k ru�n�mu p�echodu. PHP pak autentikaci zpracuje spr�vn�. S modulem ISAPI toto nen� probl�mem. Jin�ch NT webovsk�ch server� se probl�m net�k�. V�ce informac� - viz .

8. M�j PHP skript pracuje na IE a Lynxu, ale v Netscapu ��st v�stupu miz�. Kdy� si zapnu "Zobrazit zdrojov� k�d", v IE vid�m obsah, v Netscapu nikoliv.

Netscape je striktn�j�� ohledn� HTML tag� (nap�. tabulek) n� IE. Kontrola HTML v�stupu pomoc� HTML valid�toru, jako je , m��e b�t n�pomocna. Nap��klad chyb�j�c� </table> zp�sobuje v��e uveden� probl�m.

IE i Lynx tak� ignoruj� jak�koliv nulov� (\0) znaky v HTML proudu, Netscape nikoli. Nejlep�� cestou k ov��en� je zkompilovat verzi PHP pro p��kazovou ��dku (zn�mou jako CGI verze) a spustit skript z p��kazov� ��dky. Na *NIXech to p�esm�rujte do od -c a hledejte znaky \0. Pod Windows mus�te naj�t editor nebo jin� program, kter� umo��uje prohl�en� bin�rn�ch soubor�. Kdy� Netscape uvid� v souboru nulov� znak, typicky nic dal��ho nezobraz�, a�koli IE i Lynx ano.

9. Jak� jsou p�edpoklady m�ch�n� XML a PHP? St�uje si to na moje <?xml> tagy!

Mus�te vypnout kr�tk� tagy v souboru php.ini nastaven�m short_tags na 0 nebo pou�it�m odpov�daj�c� direktivy Apache. M��ete tak� pou��t sekci <File> k selektivn�mu nastaven�.

10. Jak mohu pou��t PHP s FrontPagem nebo jin�m HTML editorem, kter� trv� na odsunut� m�ho k�du?

Jedn�m z nejjednodu���ch zp�sob� je povolit pou�it� ASP tag� v PHP k�du. To umo�n� pou��vat odd�lova�e v ASP stylu (<% a %>). N�kter� popul�rn� HTML editory s pracuj� (v tuto chv�li) inteligentn�ji. K zapnut� ASP tag� mus�te v souboru php.ini nastavit prom�nnou asp_tags nebo pou��t p��slu�nou direktivu Apache.

11. Kde najdi �pln� seznam dostupn�ch p�ednastaven�ch prom�nn�ch, a pro� to nen� zdokumentov�no v dokumentaci PHP?

Nejlep�� metodou je vlo�it do str�nky <?php phpinfo(); ?> a na��st to do prohl�e�e. Zobraz� se informace v�eho druhu o nainstalovan�m PHP, v�etn� seznamu prom�nn�ch prost�ed� i speci�ln�ch prom�nn�ch nastavovan�ch HTTP serverem. Tento seznam opravdu nem��e b�t zdokumentov�n v dokumentaci k PHP, prot�e se li�� server od serveru.

12. Zkou��m p�istupovat k jedn� ze standardn�ch CGI prom�nn�ch (jako je $DOCUMENT_ROOT nebo $HTTP_REFERER) v u�ivatelsky definovan� funkci, a nem��e ji to naj�t. Co je �patn�?

Prom�nn� prost�ed� jsou norm�ln� glob�ln� prom�nn�, tak�e je mus�te bu� deklarovat ve funkci jako glob�ln� prom�nn� (nap��klad pou�it�m "global $DOCUMENT_ROOT;") nebo pou��t pole glob�ln�ch prom�nn�ch (nap�. "$GLOBALS["DOCUMENT_ROOT"]").



add a note add a note User Contributed Notes
Pou��v�n� PHP
There are no user contributed notes for this page.

<Sestavovac� (kompila�n�) probl�myPHP a HTML>
 Last updated: Thu, 15 Jul 2004
show source | credits | sitemap | contact | advertising | mirror sites 
Copyright © 2001-2004 The PHP Group
All rights reserved.
This unofficial mirror is operated at: /
Last updated: Sun Nov 14 23:09:54 2004 Local time zone must be set--see zic manual page