Kihagyás

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!

  1. Navigáljunk el a következő weboldalra: https://www.apachefriends.org/hu/!
  2. Válasszuk ki az operációs rendszerünknek megfelelő letöltési linket!
  3. A letöltés után telepítsük a szoftvert a telepítési utasítások követésével!
  4. A telepítést követően indítsuk el a programot! Ekkor valami ehhez hasonlót kell látnunk:

A XAMPP alkalmazás

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ő):

XAMPP használata

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.

XAMPP használata

  1. 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ául 81-re (ha a 81-es port sem szabad, akkor próbálkozzunk tovább 82, 83 stb. értékekkel)!
  2. 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ául 444-re (szükség esetén próbálkozzunk tovább a 445, 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
<!DOCTYPE html>
<html lang="hu">
  <head>
    <title>Az első PHP programom</title>
    <meta charset="UTF-8"/>
  </head>
  <body>
    <?php 
      echo "Hello World!"; 
    ?>
  </body>
</html>

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:

A kód kimenete

Nézzük meg az így előállt weboldal forráskódját a böngészőben (Ctrl+Shift+I billentyűkombináció)!

A weboldal forráskódja

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áll
  • include 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
<!DOCTYPE html>
<html lang="hu">
  <head>
    <title>Az első PHP programom</title>
    <meta charset="UTF-8"/>
    <link rel="stylesheet" href="style.css"/>
  </head>
  <body>
    <?php include_once "header.html"; ?>

    Ide jön valami tartalom...

    <?php include_once "footer.html"; ?>
  </body>
</html>

A kód kimenete (a fejléc és a lábléc kialakítása a külső fájlokban található):

A kód kimenete

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:

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)

PHP oldalak validálása

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
<link rel="stylesheet" href="style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>"/>

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.


Utolsó frissítés: 2024-02-10 17:23:02