V nßsledujφcφch odstavcφch se pokusφm zodpov∞d∞t na nejΦast∞jÜφ dotazy a problΘmy, se kter²mi se setkßvajφ p°edevÜφm zaΦφnajφcφ u₧ivatelΘ systΘmu PHP. Vychßzφm p°itom ze skuteΦn²ch dotaz∙, se kter²mi jsem setkal b∞hem v²uky PHP a v r∙zn²ch diskusnφch skupinßch.
Tento problΘm jste si zp∙sobili sami snahou o co nejv²konn∞jÜφ server. Distribuce PHP4 pro Windows obsahuje dva p°edp°ipravenΘ konfiguraΦnφ soubory php.ini û php.ini-dist a php.ini-optimized. V∞tÜina u₧ivatel∙ slep∞ sßhne po druhΘm konfiguraΦnφm souboru. Ten vÜak vypφnß mnoho funkcφ interpretu PHP, aby maximßln∞ urychlil jeho b∞h. VypnutΘ je v n∞m i naΦtenφ parametr∙ z formulß°∙ do prom∞nn²ch. Pro jeho zapnutφ staΦφ v php.ini sprßvn∞ nastavit hodnotu direktivy register_globals:
register_globals = On
Nejpravd∞podobn∞jÜφ je varianta, ₧e n∞kdy v minulosti jste si v prohlφ₧eΦi ulo₧ili cookie se stejn²m nßzvem jak² mß prom∞nnß. P°i p°edßvßnφ prom∞nn²ch skript∙m majφ cookies standardn∞ vyÜÜφ prioritu ne₧ prom∞nnΘ z formulß°∙. ╪eÜenφm je bu∩ p°ejmenovat prom∞nnΘ, nebo si nepot°ebnΘ cookies z prohlφ₧eΦe vymazat.
Pokud vaÜe aplikace pou₧φvß cookies, vyplatφ se pou₧φvat prohlφ₧eΦ, kter² umo₧≥uje snadnΘ prohlφ₧enφ a odstra≥ovßnφ cookies. Takov²m prohlφ₧eΦem je nap°φklad Mozilla, kterß zφskala ocen∞nφ produkt roku. Zkuste v nφ p°φkaz Tasks->Privacy and Security->Cookie Manager->View Stored Cookies.
1.3. Ve skriptu pot°ebuji pou₧φt funkci blabla(), ale PHP mi p°i jejφm pou₧itφ ohlßsφ:
Fatal error: Call to undefined function: blabla() in nßzev skriptu on line °ßdka
Ve skriptu jste pou₧ili funkci, kterou vaÜe PHP neznß. Ze vÜeho nejd°φv je dobrΘ zkontrolovat, zda v nßzvu funkce nenφ p°eklep. Pokud funkce stßle nepracuje, jednß se o funkci, kterß je souΦßstφ n∞jakΘho modulu PHP û t∞chto modul∙ lze v PHP pou₧φt n∞kolik, umo₧≥ujφ nap°φklad spoluprßci s r∙zn²mi databßzemi, vytvß°enφ obrßzk∙ apod. Je mo₧nΘ, ₧e funkce pat°φ do modulu, kter² nemßte v PHP naΦten². P°ehled modul∙, kterΘ vaÜe PHP podporuje zjistφte velice jednoduÜe pomocφ funkce phpinfo(), kterß vypφÜe kompletnφ informaci o konfiguraci interpretu PHP. V nov∞jÜφch verzφch PHP je k dispozici specißlnφ funkce, kterß vracφ pole s nßzvy vÜech aktivnφch modul∙:
print_r (get_loaded_extensions());
Pokud vaÜe funkce pat°φ do modulu, kter² nenφ naΦten², musφte modul do PHP p°idat. NejjednoduÜÜφ situace je asi ve Windows. Zde staΦφ do souboru php.ini p°idat °ßdku
extension = php_nßzev_modulu.dll
DostupnΘ moduly jsou p°itom nejΦast∞ji ulo₧eny v adresß°i extensions v adresß°i s PHP. N∞kterΘ moduly zßvisφ na dalÜφch DLL knihovnßch v adresß°i dlls, ty je pot°eba nakopφrovat do n∞jakΘho adresß°e, kde je Windows najdou. Nap°φklad c:\winnt\system32.
Na unixov²ch systΘmech je n∞kolik mo₧nostφ, jak modul p°idat, a podstatn∞ zßvisφ na tom, jak je PHP zkompilovßno. Mnoho u₧ivatel∙ pou₧φvß novΘ distribuce Linuxu a mß Apache i PHP nainstalovßno z n∞jak²ch distribuΦnφch balφΦk∙ jako RPM. Mohou zde b²t p°ipraveny i balφΦky s dalÜφmi PHP moduly. V∞tÜinou je staΦφ nainstalovat a pak v php.ini p°idat dalÜφ direktivu extension, podobn∞ jako na Windows. P°φpona modulu je obvykle .so mφsto .dll.
Pokud jste si PHP sami sestavili ze zdrojov²ch k≤d∙, musφte znovu provΘst kompilaci. P°ed nφ je pot°eba spustit p°φkaz ./configure s odpovφdajφcφmi parametry. Pro v∞tÜinu modul∙ mß patametr tvar --with-nßzev_modulu. Kompilaci se zde bohu₧el nem∙₧eme v∞novat nijak detailn∞, podrobn∞jÜφ informace naleznete v dokumentaci k PHP.
Mo₧nostφ je n∞kolik. V jednoduch²ch p°φpadech lze vÜechny prom∞nnΘ p°edßvat jako parametry v URL adresßch odkaz∙ a ve skryt²ch formulß°ov²ch polφch. Tento postup je vÜak dost pracn², nenφ moc bezpeΦn² a zbyteΦn∞ zvyÜuje objem dat p°enßÜen²ch mezi klientem a serverem.
Existuje mechanismus tzv. session prom∞nn²ch, jejich₧ hodnota se pro jednotlivΘ u₧ivatele aplikace automaticky p°enßÜφ mezi strßnkami. V PHP4 jsou session prom∞nnΘ standardnφ souΦßstφ jazyka, v PHP3 m∙₧ete pou₧φt n∞jakou rozÜi°ujφcφ knihovnu, nap°. PHPLIB. Podrobn∞jÜφ informace naleznete na strßnkßch http://www.kosek.cz/clanky/php4/session.html a http://www.kosek.cz/clanky/phplib/session.html.
Existujφ i äfree-webyô, kterΘ podporujφ PHP a n∞kdy i databßzi MySQL. Jejich pou₧itφ je vÜak vhodnΘ pouze pro malΘ projekty û dφky velkΘmu zßjmu u₧ivatel∙ majφ velmi Φasto problΘmy s v²konem. NejlΘpe, kdy₧ je sami vyzkouÜφte û http://www.kgb.cz, http://www.fbi.cz, http://www.miesto.sk, http://www.yo.cz, http://www.egarden.cz, http://www.oceany.cz, http://www.host.sk, http://www.crolink.cz a http://www.webzdarma.cz. Nic nenφ samoz°ejm∞ ·pln∞ zadarmo. Na v∞tÜin∞ server∙ musφte na svΘ strßnky umφstit reklamnφ banner.
Dnes u₧ je situace pom∞rn∞ p°φznivß. O PHP vydalo p∙vodnφ Φeskou knihu nakladatelstvφ Grada, Computer Press v brzkΘ dob∞ vydß p°eklad knihy od nakladatelstvφ Wrox. Vznikß i Φesk² p°eklad originßlnφho manußlu, kter² je dostupn² na adrese http://www.php.net/manual/cs/. ╚eskΘ servery zam∞°enΘ na v²vojß°e p°inßÜejφ samoz°ejm∞ i informace o PHP. Zkuste servery jako http://www.builder.cz, http://www.root.cz, http://www.interval.cz, http://www.php.sk nebo http://www.developer.sk.
ZaΦal bych asi diskusnφ skupinou cz.comp.lang.php. Pokud nevφte, jak s diskusnφ skupinou pracovat, zkuste do prohlφ₧eΦe napsat adresu news://csnews.vslib.cz/cz.comp.lang.php.
Existujφ i diskusnφ f≤ra p°φstupnß p°φmo z prohlφ₧eΦe. Mezi nejnavÜt∞vovan∞jÜφ patrn∞ pat°φ klub PHP na Pr∙vodci a diskusnφ f≤rum PHP na serveru Builder.cz.
P°ipravuje, ale nebude hotovß d°φve ne₧ b∞hem roku 2001 û je to zkrßtka hodn∞ prßce a den mß jen 24 hodin. PHP4 p°idßvß oproti p°edchozφ verzi n∞kolik nov²ch rys∙, ale z hlediska psanφ skript∙ nijak zßsadnφch. Kniha je tedy stßle aktußlnφ, nejv∞tÜφ rozdφly mezi PHP3 a PHP4 jsou popsßny na strßnce http://www.kosek.cz/clanky/php4/. Podrobn∞jÜφ informace jsou v originßlnφ dokumentaci.
Lze k tomu pou₧φt program strfile, kter² je standardnφ souΦßstφ mnoha unixov²ch distribucφ. Mßte-li Windows, stßhn∞te si zkompilovanou verzi. Program vy₧aduje, abyste v systΘmu m∞li nainstalovßnu knihovnu cygwin1.dll.
Obsluha formulß°e je popsßna ve skriptu na stran∞ 107. Pokud chcete data zφskanß ve formulß°e odeslat na n∞jakou e-mailovou adresu, p°idejte za °ßdek
// Zde se mohou zφskanΘ informace libovoln∞ zpracovat
nßsledujφcφ k≤d:
if (@Mail("prijemce@nekde.cz", "Formular ze stranky", "Jmeno: $Jmeno\n" . "Prijmeni: $Prijmeni\n" . "Pohlavi: $Pohlavi\n" . "E-mail: $Email\n" . "WWW: $Web\n\n" . "Datum a cas odeslani formulare: " . Date("d.m.Y H:i:s"))) echo "<p>Formulß° byl ·sp∞Ün∞ odeslßn.</p>\n"; else echo "<p>P°i odesφlßnφ formulß°e doÜlo k chyb∞.</p>\n";
Prostudujte vÜechnu dokumentaci peΦliv∞ jeÜt∞ jednou a hlavn∞ NEPROPADEJTE PANICE.