6.2. fejezet¶
A fejezet anyaga¶
PHP - Bevezetés¶
A félév hátralévő részében a PHP (PHP: Hypertext Preprocessor) nyelvvel fogunk foglalkozni, ami a szerveroldali programozási nyelvek közé tartozik. A PHP kódot egy PHP értelmező (más néven: PHP interpreter) értelmezi szerveroldalon. Felhasználói oldalon már csak a kód kimenetét, eredményét láthatjuk.
A PHP egy régóta jelen lévő programozási nyelv, amit számos különféle célra használhatunk. Néhány főbb alkalmazási területe, a teljesség igénye nélkül:
- dinamikus HTML tartalmak generálása
- HTML űrlapok feldolgozása
- adatbázis-kezelés
- menetkövetés
- sütik küldése és fogadása
- fájlkezelés
- jogosultságkezelés
- objektumorientált programozás.
Miért pont PHP?¶
- A PHP teljes mértékben ingyenes és nyílt forráskódú (open-source).
- A PHP-t rengeteg különböző platform támogatja (Windows, Linux, Unix, Mac OS X stb.).
- A PHP szinte minden ma használt szerverrel kompatibilis (Apache, IIS, Tomcat stb.).
- A nyelv könnyen tanulható, akár kezdő programozók számára is ideális.
- A PHP hatékonyan fut szerveroldalon.
- PHP-n alapulnak olyan népszerű weboldalak, mint például a Facebook, Wikipédia, Wordpress, Tumblr és Yahoo.
Mire lesz szükségünk?¶
A PHP-ban való programozáshoz kelleni fog...
- ...egy szerkesztőprogram, amibe a kódot írjuk (pl. Gedit, Geany, Notepad++, Sublime Text, PhpStorm, Visual Studio Code stb.)
- ...egy webszerver
- ...egy PHP értelmező
- ...egy adatbázisszerver (ezen a kurzuson az adatbázisokat nem tárgyaljuk).
A XAMPP telepítése és használata¶
A kurzus során a XAMPP nevű, ingyenesen letölthető szoftvercsomagot fogjuk használni. Ez biztosít számunkra egy Apache webszervert, egy adatbázisszervert, valamint egy PHP futtatókörnyezetet. Használata esetén lényegében már csak egy szerkesztőprogramról kell gondoskodnunk, és már fejleszthetünk is PHP-ban.
Telepítés¶
Töltsük le és telepítsük a XAMPP-ot az otthoni számítógépünkre!
- Navigáljunk el a következő weboldalra: https://www.apachefriends.org/hu/!
- Válasszuk ki az operációs rendszerünknek megfelelő letöltési linket!
- A letöltés után telepítsük a szoftvert a telepítési utasítások követésével!
- A telepítést követően indítsuk el a programot! Ekkor valami ehhez hasonlót kell látnunk:
PHP kód írása és futtatása¶
A PHP kódjainkat tetszőleges szerkesztőprogramba írhatjuk. A forráskódot .php
kiterjesztéssel mentjük el a [XAMPP telepítési helye]/xampp/htdocs
mappán belül. Ez a mappa a webszerver gyökérkönyvtára: minden, ami ebben található, elérhető lesz a webszerveren keresztül.
A XAMPP-on belül az Apache
felirathoz tartozó Start
gombra kattintva indítsuk el a szervert! Miután a szerver elindult (az Apache
felirat világoszöld háttérrel jelenik meg), a böngészőben elérhetjük a htdocs mappában található fájlokat a localhost/[fájl elérési útvonala a htdocs mappán belül]
URL-címen. A localhost egyébként itt a helyi gépünket jelenti, amelyet a 127.0.0.1 IP-címmel is elérhetünk.
A leírt folyamat egy ábrán szemléltetve (a képre kattintva a kép nagyobb méretben is megtekinthető):
Egy gyakori technikai probléma megoldása¶
A XAMPP telepítése után előfordulhat, hogy a webszervert nem sikerül elindítani. Ennek általában az az oka, hogy valamely másik program (pl. Skype) már használja a kommunikációhoz szükséges portokat. Ebben az esetben át kell konfigurálni az alapértelmezett portszámokat.
Az Apache
felirathoz tartozó Config
gombra kattintva az első két menüpontra lesz szükségünk.
- Kattintsunk az első menüpontra, majd a megnyíló konfigurációs fájlban (
httpd.conf
) keressünk rá erre:Listen 80
! Ez az a portszám, amit a szerver figyel. Ezt írjuk át egy szabad portra, például81
-re (ha a 81-es port sem szabad, akkor próbálkozzunk tovább82
,83
stb. értékekkel)! - Kattintsunk a második menüpontra, majd a megnyíló konfigurációs fájlban (
httpd-ssl.conf
) keressünk rá erre:Listen 443
! A portszámot itt is írjuk át, például444
-re (szükség esetén próbálkozzunk tovább a445
,446
stb. értékekkel)!
Az első konfigurációs fájlban a HTTP, a másodikban pedig a HTTPS protokoll által használt portszámokat állítottuk be.
Ha átállítjuk a szerver által figyelt alapértelmezett portokat, akkor az URL-ben fel kell tüntetnünk az új portot a szerveren lévő fájlok elérésekor. Például ha a 81-es portra állítottuk át a HTTP által használt portot, akkor a megadandó URL-cím a localhost:81/[fájl elérési útvonala a htdocs mappán belül]
lesz.
Az első PHP programunk: "Hello World!"¶
Ebben a részben elkészítjük a legelső PHP programunkat: egy olyan egyszerű programot, amely kiírja a képernyőre a "Hello World!" szöveget.
Első lépésben hozzunk létre a kedvenc szerkesztőprogramunkban egy hello.php
nevű fájlt, majd mentsük el azt a xampp/htdocs
mappába! A .php kiterjesztésű fájlokba nem csak PHP kódot, hanem például HTML kódot is írhatunk, ugyanis a PHP értelmező alapból egy egyszerű szövegnek tekinti a fájl tartalmát. Ezekben a fájlokban PHP utasításokat <?php
és ?>
között adhatunk meg (ilyen PHP blokkból akár több is szerepelhet egy PHP fájlon belül).
PHP-ban az utasítások végén pontosvessző szerepel (hasonlóképpen, mint C-ben vagy Javában). Az első PHP utasítás, amivel megismerkedünk, az echo
. Ennek segítségével tudunk a képernyőre írni. Írjuk bele a korábban létrehozott PHP forrásfájlunkba a következő kódot:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Mentsük el a módosításokat, indítsuk el XAMPP-ban a szervert (ha még nem tettük), majd írjuk be a böngésző címsorába a localhost/hello.php
URL-t (ha korábban átírtuk a HTTP által használt portot, akkor az új portszámot tüntessük fel az URL-ben: localhost:PORTSZAM/hello.php
)! Ha jól dolgoztunk, akkor a következő kimenetet látjuk:
Nézzük meg az így előállt weboldal forráskódját a böngészőben (Ctrl+Shift+I billentyűkombináció)!
Azt láthatjuk, hogy szerveroldali nyelvről lévén szó, a kiadott PHP utasítások (jelen esetben az echo
) nem jelennek meg az oldal forráskódjában, csupán azok kimenete lesz látható. Ez különösen hasznos akkor, amikor az üzleti logikát el szeretnénk rejteni a felhasználók elől.
Külső fájlok beágyazása¶
A PHP lehetőséget biztosít külső fájlok tartalmának beágyazására. Ez különösen hasznos lehet, amikor egy weboldal több lapján is ugyanazt a PHP vagy HTML kódot szeretnénk használni.
A külső fájlok beágyazására az include
és require
utasításokat használjuk. Ezeknek a működése nagyon hasonló, csupán abban különböznek, hogy ha a beágyazni kívánt fájl nem található, akkor:
require
használata esetén végzetes hibát kapunk, és a program futása megállinclude
használata esetén figyelmeztetést kapunk, és a program fut tovább.
A többszörös (esetleg végtelen) beágyazások elkerülésére használhatók az include_once
és require_once
utasítások. Ezek viselkedése az include
és require
működéséhez hasonló, azzal a fontos különbséggel, hogy ha már korábban beágyazták a fájlt, akkor ezek az utasítások nem ágyazzák be azt még egyszer.
Megjegyzés
A külső fájlok beágyazására szolgáló utasításokat zárójelekkel is használhatjuk (include()
, require()
, include_once()
, require_once()
).
Tipp
Ha sok beágyazandó fájllal van dolgunk, érdemes lehet őket egy külön könyvtárba szervezni, majd hozzáadni a könyvtárat az include path-hoz a következő utasítással: set_include_path("könyvtár elérési útvonala");
.
Példa: Szúrjuk be a weboldalunkra a header.html
és footer.html
fájlok tartalmát!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
A kód kimenete (a fejléc és a lábléc kialakítása a külső fájlokban található):
PHP oldalak szabványosságának ellenőrzése¶
Természetesen a PHP témakörében is fontos hangsúlyt fektetni arra, hogy az általunk elkészített weboldalak forráskódja szabványos legyen. A szabványosság ellenőrzése PHP oldalak esetén egy picit "trükkösebb", mint egyszerű HTML oldalak esetében.
Láttunk arra példát, hogy PHP segítségével is lehet a weboldalainkra tartalmat generálni (pl. echo
-val íratunk ki tartalmat, vagy beágyazunk egy külső fájlt), így tulajdonképpen nem is a PHP-fájljaink szabványosságát szeretnénk itt ellenőrizni, hanem azok kimenetét, az általuk generált weboldalakat szeretnénk validálni. Emiatt az nem működőképes, ha az 1. fejezetben említett W3C-s HTML Validátorba töltjük fel a PHP-fájljainkat.
A szabványosság ellenőrzéséhez célszerű telepíteni a böngészőnkben valamilyen validátor bővítményt, amely a böngészőben megjelenített weboldalaink szabványosságát ellenőrzi. Néhány ajánlott validátor szoftver különböző webböngészőkhöz:
- Google Chrome validátor bővítmény
- Firefox validátor bővítmény
- Opera validátor bővítmény
- Safari validátor bővítmény.
Telepítsük a böngészőnknek megfelelő validátor bővítményt, majd üzemeljük be azt a böngészőnkben! Ezt követően a PHP projektjeink weboldalainak szabványossága egyszerűen ellenőrizhető a telepített bővítmény használatával.
Példa: Validátor bővítmény használata Google Chrome böngészőben (A képre kattintva teljes méretben is megtekinthető az ábra)
Egy érdekes jelenség: cache-elt stíluslapok¶
Ha szerveroldalon fejlesztünk webes projektet, akkor könnyedén előfordulhat, hogy a CSS formázások módosítása után hiába frissítjük a böngészőben megnyitott weboldalt, az új formázások nem lesznek láthatóak.
Ennek az érdekes (és gyakran fejtörést okozó) jelenségnek az oka, hogy a böngésző a korábban már betöltött CSS stíluslapokat eltárolja a cache memóriában, és előfordulhat, hogy a stíluslap módosításait a böngésző "nem érzékeli", ezért a régebbi, cache-elt stílust tölti be.
A problémának egy nagyon egyszerű megoldása, ha a Ctrl + F5 billentyűkombinációval töltjük újra a böngészőben megnyitott weboldalt. Ez a billentyűkombináció oly módon frissíti az oldalt, hogy figyelmen kívül hagyja a cache tartalmát ("hard refresh").
Egy másik megoldás, ha elhelyezünk egy időbélyeget a betöltendő CSS fájl neve után.
1 |
|
A fenti megoldásban lényegében hozzábiggyesztjük a jelenlegi dátumot és időpontot a CSS fájlunk nevéhez, ezáltal a böngésző mindig az aktuális style.css
fájlban található formázásokat fogja betölteni, nem a cache-elt stíluslapot.