13. Skriptovací jazyk PHP Co je to PHP? PHP řadíme do skupiny skriptovacích jazyků, které se provádějí na straně serveru. PHP je na serveru závislé, protože na něm běží jeho interpreter, které skripty provádí. PHP se tímto odlišuje např. od JavaScriptu, jehož skripty se stahují přímo s HTML stránkou a jsou vykonány na straně klienta jeho prohlížečem. Má to své výhody i nevýhody. Výhodou PHP v tomto případě je, že se ke zdrojovému kódu nedostane nikdo jiný než autor, kdežto ke zdrojovému kódu JavaScriptu se dostane každý, kdo si stáhne HTML stránku, v níž je skript obsažen. JavaScript má výhodu ve své možnosti dynamicky reagovat na událost způsobenou klientem (např. pohyb kurzoru myši..), což PHP nedokáže. Samotné PHP skripty se mohou zapisovat přímo do HTML stránky (nejčastěji s příponou *.php).
Historie PHP Jazyk PHP vytvořil v roce 1994 Rasmus Lerdof, když si naprogramoval v Perlu jednoduché počítadlo přístupů na jeho stránky. Aby spouštění Perlu tolik nezatěžovalo server, přepsal ho do jazyka C. Tento systém se brzy stal populárním, a proto ho autor rozšířil a uvolnil pod názvem Personal Home Page Tools, později Personal Home Page Construction Kit. No a když Lerdof systém rozšířil i o možnost začleňování SQL příkazů do stránek, prací s formuláři a zobrazování výsledků dotazů SQL, získal systém název PHP/FI 2.0 (Personal Home Page/From Interpreter verze 2.0). Pod tímto názvem byl už jako jednoduchý programovací jazyk šířen do celého světa. Verze 2.0 však pracovala jen na svém domovském operačním, který je LINUX (UNIX). Proto bylo vytvořeno PHP 3.0, které již pracuje i na 32-bitových Windows a na operačním systému MACINTOSHE. Poslední uvolněnou verzí je PHP 4.0, která je šířena pod názvem ZEND. Udává se, že tato verze je 8-10x rychlejší než verze předešlá.
Co je k tvorbě PHP potřeba? K tvorbě PHP skriptů obvykle postačuje jakýkoliv běžný HTML editor, či jen poznámkový blok (Notepad). Nejdůležitější je ale mít kde vytvořené skripty umístit a vyzkoušet. K tomu je potřeba: 1.HTTP server, například zdarma distribuovaný Apache. 2. samotné PHP 3. databázový program, nejčastěji MySQL
Syntaxe Začneme jednoduchým začátečnickým skriptem pro výpis řetězce. Všimněte si: -Začali jsme Cokoliv bude mezi těmito tagy je PHP script. Vše ostatní je považováno za běžné HTML. - Každý příkaz PHP je ukončen středníkem - Text je v uvozovkách nebo v apostrofech Pokud již jednou zmíněný skript spustíme, zobrazí se v prohlížeči text Zdraví Tě PHP. Co kdybychom zapomněli přidat středník na konec řádku? Nebo bychom zapomněli apostrof?
Došlo by k chybě a v prohlížeči se zobrazí chybová hláška obsahující typ chyby a číslo řádku, kde se chyba vyskytuje: Parse error: parse error in c:\apache\htdocs\prvniskript.php on line 7 To je ve stručnosti pár základních informací o PHP. To dozajista nestačí k tomu aby jste mohli začít tvořit své vlastní PHP skripty. Je to jen stručný úvod do problematiky PHP. K tvorbě PHP skriptů potřebujete zná příkazy a funkce, které si můžete jednoduše stáhnout z internetu. Děkuji za pozornost a doufám, že již je Vám znám pojem PHP.
POLE Vytvoření pole Pole se tvoří příkazem array("prvek0", "prvek1", "prvek2"), každý prvek má své číslo - ten první (prvek0) nulu. $pole = array ("mrkev", "celer", "brambory"); echo($pole[0]); //vypíše 'mrkev' $zahrada = array (3 => "jablon", "hrusen"); echo($zaharda[4]); //vypíše 'hrusen' $sklenik[1] = "redkvicky"; //postupné přiřazování prvků i s indexem(1) $sklenik[3] = "fazole"; Pole se ukládají pod proměnné($pole a $zahrada). V druhém případě jsme zavedli číslování od tří, ne od nuly, proto prvek 4 = hrusen.
Procházení polem Procházení polem = rovná se postupné vybrání všech prvků Funkce count($pole) vrací počet prvků. $dodelat = array ("příručka k PHP", "příručka k CSS", "příručka k SQL", "příručka k XML"); for ($p = 0; $p < count($dodelat); ++$p){ echo ("stále není hotová ".$dodelat[$p]."
"); }
Funkce Deklarace funkce Kromě předem nastavených funkcí PHP, si můžete deklarovat své vlastní.
function napis(){ echo("ahoj"); } Opět, pokud umíte pracovat s funkcemi v Javascriptu, je zbytečné si tyto řádky číst. Snad jediná výjimka je, že PHP se neužívá ve spojení s událostmi. function ukazuje, že jde o deklaraci funkce. napis je název funkce (je výhodnější psát název bez diakritiky, ale také česky.Předem definované funkce nikdy nemají český název, pokud náhodou vaše funkce bude mít shodný název s některou již definovanou, skript by mohl fungovat chybně.return, close, open..) () definují zda se jedná o funkci s parametrem (viz dále), nebo bez (prázdné závorky-bez parametru). {} Ohraničují deklaraci a obsah funkce
Vyvolání funkce Nyní jsme definovali funkci, ale teď ji chceme použít: napis(); Zapíšeme pouze název funkce a závorky. Skript vypíše 'ahoj'.
Funkce bez argumentu Je již zmíněná funkce napis(), která nemá uvnitř závorek žádný argument(proměnnou).
Funkce s argumentem Kdybychom chtěli někdy napsat 'ahoj' někdy 'dobrý den' a jindy něco úplně jiného, použijeme funkci s argumentem. function napis($jmeno){ echo($jmeno); } napis(dobrý večer); //napíše dobrý večer napis(ahoj); //napíše ahoj Deklarace je úplně stejná až na argument $jmeno. Ten deklaruje proměnnou $jmeno. Když jsme vyvolali funkci a jako její argument jsme uvedli 'dobrý večer' a poté 'ahoj', byly tyto hodnoty přiřazeny k proměnné $jmeno a následně zapsány.
Funkce vracející hodnotu
Můžete také definovat funkci, která vrací hodnotu a s ní potom manipulovat, nebo jí zapsat: function vrat($cislo){ return $cislo*2; } echo(vrat(20)+"
"); echo(vrat(100)/vrat(10)); Funkce vrat(); pomocí příkazu return vrátí $cislo/2. S danou funkcí lze potom nakládat jako s proměnnou.
Řetězce Část řetězce - substr() Funkce substr() vybere z daného řetězce určenou část. substr(řetězec, počátek, konec) parametr konec je nepovinný $retezec=substr("internet", 1, 4); echo($retezec); //vypíše "nter" $retezec2=substr("internet", 2); echo($retezec2); //vypíše "ternet" $retezec3=substr("internet", -3); echo($retezec3); //vypíše "net"
Ostranění prázdných znaků Funkce trim() odstraní všechny zbytečné tabulátory a mezery $retezec=trim(" řetězec s mezerami "); echo($retezec) //vypíše "řetězec s mezerami"
Počet znaků Funkce strlen() vrací počet znaků řetězce echo(strlen("internet")) //vypíše "8"
Kód ASCII
Každé písmeno má svůj ASCII kód, tudíž můžeme místo písmen psát ASCII kód. K tomu slouží funkce chr() .Pokud chceme naopak text převédst na ASCII využijeme funkci ord() echo(ord(a)); // vypíše "97"; echo(chr(97)) // vypíše "a"
Regulární výrazy Regulární výrazy slouží k práci s textovými řetězci. RV umužňují kontrolovat zda je zadaný výraz platný podle nějaké formy, nabo můžete nahradit znaky, které se vám nelíbí jinými.
Text zapsaný regulárním výrazem Takhle to vypadá: ^zacatek řetězec, který začíná "zacatek..." konec$řetězec, který končí "..konec" ^[0-9][a-z]$ odpovídá třeba "1a" "1w" "3r", řetězci který začíná číslicí a zaním písmenem a pak již končí ^[^A-Z]$ jeden jakýkoliv znak kromě velkých písmen ^[^\"\'] řetězec který nezačíná uvozovkami ^.+$ odpovídá libovolnému počtu znaků ^.{4}$ odpovídá čtyřem libovolným znakům ^w{1, 3}$ odpovídá "w", "ww" a "www" ^[0-9]*$ odpovídá ^[0-9]{0,}$ číslice nulakrát a víckrát
Kontrola e-mailové adresy Jestliže vám návštěvníci vašich stránek vyplňují do formulářů svojí e-mailovou adresu, můžete kontrolovat její tvar - čímž je pěkně naštvete. Obecně má e-mailová adresa takovýto tvar
[email protected] znaky (com, uk, sk, cz..) $email="
[email protected]"; if (ereg("^.+@.+\\..+$", $mail)); echo ("vaše e-mailová adresa není platná") Pomocí funkce ereg(výraz, řetězec) zjišťujeme zda řetězec odpovídá výrazu. Vysvětlení ^.+@.+\\..+$ - na začátku libovolný text pokračující zavináčem za nímž následuje další libovolné slovo zakončené tečkou a pokračující posledním slovem.