PHP FAQ

Ji°φ Kosek


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.

1. ObecnΘ dotazy
1.1. Nainstaloval jsem si ·sp∞Ün∞ PHP4, ale skript∙m se nep°edßvajφ prom∞nnΘ z formulß°∙.
1.2. Ani p°edchozφ krok nepomohl, stßle se mi n∞kterΘ prom∞nnΘ z formulß°∙ nep°edßvajφ.
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
1.4. Lze n∞jak za°φdit, aby se obsah prom∞nn²ch zachoval i p°i p°echodech u₧ivatele mezi strßnkami?
2. Hosting podporujφcφ PHP, dokumentace, kde hledat pomoc
2.1. Rßd bych svΘ skripty umφstil na Internetu, nechci za to vÜak nic platit ₧ßdnΘ web-hostingovΘ firm∞.
2.2. Kde mohu najφt n∞jakΘ informace o PHP v ΦeÜtin∞ nebo slovenÜtin∞, angliΦtina toti₧ nenφ moje silnß strßnka?
2.3. Existujφ n∞jakß diskusnφ f≤ra, kde mohu konzultovat svΘ problΘmy s ostatnφmi v²vojß°i pou₧φvajφcφmi PHP?
3. Dotazy t²kajφcφ se knihy äPHP û tvorba interaktivnφch internetov²ch aplikacφô
3.1. P°ipravuje se aktualizace knihy pro PHP4?
3.2. Jak mohou vygenerovat indexov² soubor pro vlastnφ soubor se vtipy Φi jin²mi texty?
3.3. Jak mohu obsah formulß°e odeslat e-mailem?
4.1. P°eΦetl jsem vÜechny manußly a proÜel vÜechna diskusnφ f≤ra, ale °eÜenφ problΘmu jsem nezjistil.

1. ObecnΘ dotazy

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.

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.

2. Hosting podporujφcφ PHP, dokumentace, kde hledat pomoc

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.

3. Dotazy t²kajφcφ se knihy äPHP û tvorba interaktivnφch internetov²ch aplikacφô

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.

⌐ Ji°φ Kosek 2000