fábián zoltán - tanuljunk php-ül (2005, 149 oldal)

Upload: pabiand

Post on 30-May-2018

243 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    1/149

    1

    Tanuljunk PHP-l

    (Fejleszts alatt)

    Fbin Zoltn

    2001-2004

    v0.8

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    2/149

    2

    Tartalomjegyzk1 BEVEZETS.............................................................................................................................................................5

    MIRE J EZ A JEGYZET?.....................................................................................................................................................51.2APHP RVID TRTNETE ..........................................................................................................................................5MI A PHP?.......................................................................................................................................................................6

    2 MILYEN RENDSZEREN HASZNLHAT? ........................................................................................................8

    2.1.1 Milyen opercis rendszer? ...........................................................................................................................8 2.1.2 Milyen WEB szervert? ................................................................................ ...................................................8

    3 A PHP4 TELEPTSE (WIN32 VLTOZAT).................................. ......................................................................9

    3.1 KNYVTRAK ....................................................................................................................................................93.2 TELEPTS ........................................................................................................................................................10

    3.2.1 Apache WEB szerver 1.3.xx vagy 2.0.xx ....................................................................................................... 103.2.2 Internet Information Server 4 vagy 5............................................................................................................10 3.2.3 Personal Web Server 4 vagy jabb (Win98) .............................................. ...................................................113.2.4 Szerver nlkli hasznlat: ............................................................................................................................11

    4 ESZKZK A PHP HASZNLATHOZ............................................................................................................12

    5 EGY HTML S EGY PHP OLDAL SZERKEZETE ............................................................................................13

    6 A PHP SZINTAKTIKJA......................................................................................................................................14

    7 VLTOZK, ADATTPUSOK..............................................................................................................................15

    7.1 A VLTOZ NEVE .............................................................................................................................................157.2 A VLTOZ RTKE ..........................................................................................................................................157.3 A VLTOZK S KIFEJEZSEK TPUSAI ...............................................................................................................157.4 ELRE DEFINILT VLTOZK ............................................................................................................................17

    7.4.1 PHP Core A PHP rendszer alapvetvltozinak a listja..........................................................................177.4.2 Environment................................................................................................................................................177.4.3 PHP Variables - A PHP vltozk listja.......................................................................................................17

    7.5 KONSTANSOK ...................................................................................................................................................18

    8 ALAPVET UTASTSOK ..................................................................................................................................19

    8.1 ECHO ...............................................................................................................................................................198.2 FORMZOTT KIRS ..........................................................................................................................................208.3 A KIIRATS GYAKORLSA.................................................................................................................................21

    9 OPERTOROK (MVELETEK)..........................................................................................................................22

    9.1 STRINGEK KZTTI MVELETEK........................................................................................................................229.2 ARITMETIKAI MVELETEK ................................................................................................................................229.3 HOZZRENDELS, RTKADS ..........................................................................................................................229.4 NVEL/CSKKENT OPERTOROK...................................................................................................................229.5 LOGIKAI OPERTOROK ......................................................................................................................................239.6 SSZEHASONLT OPERTOROK........................................................................................................................239.7 BITORIENTLT OPERTOROK.............................................................................................................................23

    9.8 HIBAKEZEL OPERTOROK ...............................................................................................................................249.9 VGREHAJT OPERTOROK...............................................................................................................................249.10 GYAKORL FELADATOK....................................................................................................................................24

    10 VEZRLSI SZERKEZETEK..............................................................................................................................25

    10.1 ELGAZSOK ...................................................................................................................................................2510.2 CIKLUSOK ........................................................................................................................................................2710.3 ELGAZSOK S CIKLUSOK HASZNLATA HTML KDDAL KEVERVE ..................................................................2910.4 PHP LAPOK BESZRSA,MAKRO-K HASZNLATA...........................................................................................30 10.5 TVOLI FILE-OK HVSA ...................................................................................................................................3110.6 PLDAPROGRAMOK FELTTELEKKEL, CIKLUSOKKAL ..........................................................................................31

    11 SAJT FGGVNYEK, VLTOZK LETTARTAMA S LTHATSGA...............................................32

    11.1 FGGVNYEK ...................................................................................................................................................3211.2 PARAMTERTADS .........................................................................................................................................3211.3 FGGVNYEK VISSZATRSI RTKE .................................................................................................................34

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    3/149

    3

    11.4 VLTOZK LETTARTALMA S LTHATSGA ..................................................................................................3411.5 VLTOZK TADSA LAPOK KZTT ................................................................................................................36

    11.5.1 Header utasts....................................................................................................................................... 3611.5.2 GET metdus ..........................................................................................................................................3611.5.3 POST metdus ........................................................................................................................................3711.5.4 $_SESSION vltozk ...............................................................................................................................40Egy session kezelmkdse - plda..........................................................................................................................4511.5.5 COOKIE-k (stik) ...................................................................................................................................48

    12 KONVERZI ADATTPUSOK KZTT............................................................................................................5013 TMBK................................................................................................................................................................51

    14 SZTRINGEK, SZVEGEK MANIPULCIJA..................................................................................................55

    15 FORMOK /RLAPOK INTERAKTV PROGRAMOK RSA.......................................................................59

    15.1.1 nmagukat meghv rlapok...................................................................................................................59

    16 FORMOK ADATAINAK FELDOLGOZSA SZERVER- S KLIENS OLDALON.......................................61

    17 LEVLKLDS, PLAIN TEXT, HTML LEVL, ATTACHEMENT.................................................................63

    18 ADATBZISOK.....................................................................................................................................................65

    18.1 MYSQL ...........................................................................................................................................................6618.2 POSTGRES SQL................................................................................................................................................66 18.3 ADATBZIS-KEZELS NATV MDON..................................................................................................................6818.4 TIPIKUS FELADATOK ADATBZIS-KEZELSNL ...................................................................................................7018.5 HIBAKEZELS ...................................................................................................................................................7318.6 ADATBZISKEZELS MSKPPEN ABSZTRAKCIS RTEGEK,ADODB,ODBC ..................................................73

    18.6.1 Az absztrakcis rteg...............................................................................................................................73 18.6.2 ODBC programcsomag...........................................................................................................................7318.6.3 Az ADODB rtegezs ..............................................................................................................................74Example 3: Inserting .................................................................................................................................................79Example 4: Debugging ..............................................................................................................................................79Example 5: MySQL and Menus..................................................................................................................................80Example 6: Connecting to 2 Databases At Once.........................................................................................................80Example 7: Generating Update and Insert SQL .........................................................................................................80Example 8: Implementing Scrolling with Next and Previous.......................................................................................82Example 9: Exporting in CSV or Tab-Delimited Format.............................................................................................83Example 10: Recordset Filters...................................................................................................................................83Example 11: Smart Transactions ...............................................................................................................................83

    18.7 USING CUSTOM ERROR HANDLERS AND PEAR_ERROR...................................................................................8518.8 DATA SOURCE NAMES ...................................................................................................................................8718.9 CACHING OF RECORDSETS ............................................................................................................................8718.10 PIVOT TABLES.............................................................................................................................................87

    19 CLASS REFERENCE...........................................................................................................................................91

    19.1 GLOBAL VARIABLES......................................................................................................................................91$ADODB_COUNTRECS...........................................................................................................................................91

    $ADODB_CACHE_DIR............................................................................................................................................91$ADODB_FETCH_MODE........................................................................................................................................9119.2 ADOCONNECTION ..........................................................................................................................................93

    ADOConnection Fields..............................................................................................................................................93 ADOConnection Main Functions...............................................................................................................................94 ADOConnection Utility Functions ...........................................................................................................................105

    19.3 ADORECORDSET .........................................................................................................................................107ADORecordSet Fields .............................................................................................................................................107ADORecordSet Functions........................................................................................................................................107 function rs2html($adorecordset,[$tableheader_attributes], [$col_titles]).................................................................112Differences between this ADOdb library and Microsoft ADO................................................................................... 113

    20 DATABASE DRIVER GUIDE ...........................................................................................................................114

    20.1 ID KEZELSE PHPMYSQL ESETN .............................................................................................................11520.2 SOKIG FUT PROGRAMOK .............................................................................................................................116

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    4/149

    4

    21 FILE-OK, KNYVTRAK KEZELSE A SZERVEREN S TVOLI URL-EKEN............ ...... ...... ...... ...... ..117

    LTOGATK SZMA:

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    5/149

    5

    1 Bevezets

    Mire j ez a jegyzet?A jegyzetnek az a clja, hogy bevezesse az olvast a ma robbansszeren terjed PHP nyelv vilgba,megtantsa az alapvet eljrsokat, fogalmakat s kpess tegye az olvast sajt PHP scriptek rsra.Hasznljuk tovbb a Szily Klmn Mszaki Kzpiskola tdves szmtstechnikai programoz

    szakn is.Nem teljes PHP dokumentci! Nem is lehet az, hiszen mialatt a jegyzetet megrtam legalbb kt jverzi jelent meg a PHP-bl s folyamatosan bvl a PHP-ben hasznlhat szolgltatsok kre.Igyekeztem arra koncentrlni, hogy egy kezd viszonylag gyorsan elsajtthassa a nyelv alapjait,gyorsan tudjon hatsos programokat rni, s ha valamilyen gyakran elfordul problma megoldsrakeres vlaszt, akkor azt viszonylag hamar meg tudja oldani. Teljes dokumentcit az Internetrl lehetbeszerezni, rszben magyar nyelven az albbi cmekrl, http://www.php.net dokumentci angolul vagya http://hu.php.net/docs.php oldal magyarul. A php 4.2.3 verzijtl prblkozva rom ezt a jegyzetet.

    A jegyzetben tallhat pldaprogramokat, tleteket, rszben az albbi forrsokbl szemezgettem sezton ksznetet mondok nekik :

    http://hu.php.net A PHP site magyar oldalai

    [email protected] Magyar PHP lista

    http://php4.x3.hu, Korss Istvn (KI), [email protected]

    PHP-s cikksorozata a PC-World-bl, resource-ok PHP s egyb tmkban

    http://phpbuilder.com/columns/ying20000602.php3?page=1

    sessionok, Ying Zhang cikke

    http://phpmailer.sourceforge.net

    Emailkldshttp://php.weblogs.com/ADODB

    ADODB adatbziskezels

    Molnr Lszl

    A Postgres SQL teleptse

    Smarty felhasznli kziknyv

    http://Smarty.php.net

    Smarty template rendszer

    s a dikjaim is.

    1. 2 A PHP rvid trtneteA PHP trtnete 1994 szre nylik vissza, amikor a munkt keres Rasmus Lerdorf egy Perl CGIszkriptet hasznlt a Web odalt felkeresk regisztrlsra. A ltogatkat naplz kdot "PHP-tools forPersonal Home Page"-nek nevezte el. Az els nyilvnos vltozat gy 1995 tjn ltott napvilgot. Ezmg csak nhny egyszerbb feladatra volt hasznlhat, tbbek kztt szmllt, vendgknyvettartalmazott.

    A PHP fejlesztse a Toronti Egyetemen folytatdott, ahol Rasmus Lerdorf olyan interfszt fejlesztettki, aminek segtsgvel a HTML kdba gyazott specilis utastsok kzvetlenl rtk el az egyetemiadatbzisokat. A rendszert Rasmus "Form Interpreter"-nek, FI-nek nevezte el. Az FI-ben hasznlt elvmr megegyezett a PHP alapelvvel, miszerint a HTML kdba begyazott utastsokat rtelmezte s

    http://www.php.net/http://hu.php.net/docs.phphttp://hu.php.net/mailto:[email protected]://php4.x3.hu/mailto:[email protected]://phpbuilder.com/columns/ying20000602.php3?page=1http://phpmailer.sourceforge.net/http://php.weblogs.com/ADODBhttp://smarty.php.net/http://smarty.php.net/http://php.weblogs.com/ADODBhttp://phpmailer.sourceforge.net/http://phpbuilder.com/columns/ying20000602.php3?page=1mailto:[email protected]://php4.x3.hu/mailto:[email protected]://hu.php.net/http://hu.php.net/docs.phphttp://www.php.net/
  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    6/149

    6

    hajtotta vgre az FI rtelmezje. Ksbb a PHP s az FI sszehzastsbl szletett meg az els szleskrben hasznlt parancsrtelmez a PHP/FI. Ez tartalmazta a PHP s az FI addigi szolgltatsait, st azmSQL adatbzisok elrst is tmogatta. Rasmus eleinte eljtszadozott a gondolattal, hogy a PHP-tkereskedelmi termkk teszi, de olyan komoly mennyisg visszajelzst kapott ms programozktl,klnbz kiegsztseket s hibajavtsokat kldve a PHP-hez, hogy letett ebbli szndkrl. A PHPfejldshez s sokrtsghez nagymrtkben hozzjrult kls programozk szabad s ingyenesrszvtele a rendszer fejlesztsben. A PHP a mai napig is ingyenes termk, s ez valban nagyon j

    dolog.Az els verzi megjelenstl kezdve a PHP felhasznli tbora tretlenl nvekedett. 1996-ban kzel15.000 Web oldalon hasznltk a PHP/FI-t, 1997-ben mr tbb mint 50.000 Web oldalon. Ebben azvben kezddtt el a PHP sokkal jobban szervezett tovbbfejlesztse. A PHP/FI-t rtelmezjt szinte azalapoktl kezdve jrartk, temelve a PHP/FI-ben alkalmazott technikkat s kdot, de szmos jat ishozztve. gy alakult ki a PHP 3-as vltozata, ami gyakorlatilag rendelkezett mindazokkal akpessgekkel, amik a PHP npszersgt megalapoztk. A PHP fejldse azonban nem ll meg.Jelenleg a 4.0.6 vltozatnl tart a fejleszts, de ksznheten a "szabad szoftver" filozfinak nemvalszn, hogy itt megreked.

    A magyar PHP lista az elmlt vben indult, napi 2-3 levllel, egy v alatt napi 30-50 levlre duzzadt a

    forgalma.

    Mi a PHP?Egy programozsi nyelv. A PHP majdnem ltalnos cl programozsi nyelv, amely mra sokfleterleten alkalmazhat, amit a Weben keresztl meg lehet oldani. Dinamikus oldalak, adatbzis-kezels,akr gyviteli alkalmazsok, levelezs, portlok, grafikai alkalmazsok, file-kezels, tvoliadminisztrci, stb.

    Mieltt a PHP mkdst rszleteznnk, meg kell ismerkedni egy kicsit a Web-en lv alkalmazsoklelkivilgval.

    Amikor a bngszben berjuk egy olyan oldal nevt, s letltjk azt, akkor az Interneten lv WEBszerver kldi el a bngsznknek a kvnt oldalt. Ez az oldal egy HTML oldal, egy ASCII szvegllomny, amely megrkezve a bngsznkre azt a bngsz rtelmezi, s a tartalmt megjelenti.

    Az ilyen oldalakat statikus oldalaknak hvjuk, mivel a kvetkez s az utna kvetkez krsekkormindig pontosan ugyanazt az oldalt fogjuk jra meg jra megkapni, hiszen a szerveren ez egy file.Abban az esetben, ha azt szeretnnk, hogy az oldal tartalma vltozzon, azaz dinamikus oldalt szeretnnk,valamilyen mdon az oldalt a szerveren ltre kell hozni, mdostani kell. Ennek rdekben ki kellegszteni a WEB-szervert olyan alkalmazsokkal, amelyek az oldal krsekor futskor lltjk el azoldalt, majd odaadjk a szervernek, amely az eredmnyt tovbbtja a bngsz fel. Ezeket aprogramokat sszefoglal nven CGI programoknak hvjuk, ami a Common Gateway Interfacekifejezs rvidtse. Ezek a programok teht j funkcionalitssal bvtik ki a WEB szervereket. A

    legfontosabb ebben az, hogy ez ltal a bngszk interaktv mdon tudnak kapcsolatot teremteni a WEBszerverrel, adatokat tudnak bevinni neki, a bevitt informci alapjn vltozik a visszaadott rtk. Azilyen rendszer mkdse olyan, hogy a bngszben bert informcit megkapja a WEB szerver, tadjaa CGI programnak, ami az informci birtokban feldolgozza s visszakldi a WEB szervernek, amelytovbbtja a bngsz fel HTML kd formjban. A CGI programok vagy a szerver opercisrendszern futni kpes programok, amelyeket valamilyen nyelven, pl. C-ben rtak meg s fordtottak le,vagy gynevezett scriptek, amelyek egy rtelmez program kzremkdsvel futnak.

    A PHP programokat egy ilyen rtelmez futtatja a szerveren akkor, ha a bngsz PHP, PHP3,PHP4, vagy hasonl kiterjeszts file-okra hivatkozik. Ekkor a WEB szerver meghvja a PHP rtelmezprogramot (interpretert), amely rtelmezi a krdses oldalt, majd az eredmnyt Web oldal formjban

    visszaadja a WEB szervernek, amely tovbbtja a bngsznek.

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    7/149

    7

    Teht a PHP program egy WEB szerveren fut script, amelynek az eredmnye egy WEB bngsznkeresztl jelenik meg.

    Ha valaki mr tallkozott HTML oldalakon Javascriptekkel, vagy Vbscriptekkel, akkor lehet fogalmaarrl, hogy mirl is van sz, ugyanakkor lnyeges klnbsg van a ktfle megolds kztt.

    Mg a Javascriptek s a Vbscriptek a bngszn hajtdnak vgre, addig a PHP scriptek a szerveren.Ennek tbb elnye van, pldul sokkal bonyolultabbak lehetnek, el lehet rejteni a tartalmukat a kvncsi

    tekintetek ell, nincsenek a bngsz kpessgeihez ktve. A PHP script a bngszn soha nem jelenikmeg (ha megjelenik, akkor bajJ), csak az a HTML vagy egyb kd, amelyet elllt.

    A bngsz krse nyomn a PHP rtelmez megkapja az oldal helyt, nevt s az esetleges bemenparamtereket

    valami.php valami.php

    Bngsz WEB szerver PHP rtelmez

    A kvnt oldalt betlti az rtelmez, feldolgozza, s az eredmnyt visszakldi

    HTMLkd

    HTMLkd

    Bngsz WEB szerver PHP rtelmez valami.php

    A PHP rtelmez a fejldse sorn egyszer script futtat programocskbl komoly fejleszteszkz lett.

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    8/149

    8

    2 Milyen rendszeren hasznlhat?

    2.1.1 Milyen opercis rendszer?Gyakorlatilag ltezik az sszes elterjedt opercis rendszeren, Win32, Linux, Solaris, BSD, hogy csak alegismertebbeket rjk le. Ezeken a rendszereken fut sok-sok WEB szerver segtsgvel lehet futtatni.Gondolva a tanulsra s az ltalban meglv szmtstechnikai krnyezetre a Windows 98, ME, NT,W2000 opercis rendszert ajnljuk.

    Magyarzat:

    Mirt nem LINUX? Azok rszre, akik most tanuljk a nyelvet nem clszer olyan rendszert hasznlni,amelynek nem ismerik elgg a tulajdonsgait. Az oktatsban elssorban Windowsos rendszerekethasznlnak.

    2.1.2 Milyen WEB szervert?A PHP teleptse eltt mindenkppen szksgnk lesz egy mkd WEB szerverre. Nyilvn most nemaz a feladatunk, hogy egy WEB szerver teleptst bemutassuk, de ha a Windows NT-t hasznljuk s aService Pack 5-t felteleptettk, akkor lesz IIS4-nk. A Windows 2000 alatt eleve a rendszer rsze,Win9x alatt pedig a Personal WEB Servert hasznlhatjuk alaprtelmezetten.

    Ennek ellenre mi az Apache WEB szervert ajnljuk, annak egyszer teleptse, egyszer belltsamiatt. Megjegyezzk, hogy az Apache belltsa majdnem ugyanaz LINUX alatt s Win32 alatt is, tehtennek a rendszernek a hasznlatakor nagyon kis klnbsgek kellenek a LINUX-os verzira valtllshoz.

    A ksbbiek sorn bemutatunk egy olyan sszelltst is, amellyel egyszerbb PHP programokat tudunkfuttatni WEB szerver nlkl is, Win9x, ME, NT, W2000, XP rendszeren!

    n Windows 2000 s Apache 1.3.xx valamint Windows XP s Apache 2.0.xx rendszerrel is hasznlom.

    Hol tallok szolgltatt, aki futtat PHP scripteket, esetleg adatbzist?

    Az utbbi idben tbben is vllalkoznak erre a szolgltatsra. Jelenleg tudomsom szerint a kvetkezszolgltatk hajlandk futtatni ingyen php-t:

    http://www.f2s.com ingyen PHP, MySQL, PostGres SQL

    http://www.swi.hu pnzes szolgltat

    http://www.f2s.com/http://www.swi.hu/http://www.swi.hu/http://www.f2s.com/
  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    9/149

    9

    3 A PHP4 teleptse (Win32 vltozat)A PHP teleptse opercis rendszerenknt s WEB szerverenknt ms s ms. A teleptsrl tovbbiinformci a http://hu.php.net s a http://www.php4win.de oldalakon tallhat.

    A PHP csomagot letltve kapunk egy tmrtett llomnyt, amelyet kibontva az albbiknyvtrstruktrt kapjuk.

    3.1 Knyvtrakbrowscap: A browscap.ini file-t tartalmazza. Ez a file az egyes bngsztpusok adatait, tulajdonsgait

    tartalmazza.

    dlls: Itt olyan dll-ek vannak, amelyekre a php-nek s nhny kiterjesztsnek van szksge. Ezeketmsold be a windows/system (Win9.x) vagy a winnt/system32 (Windows NT, Win2000)knyvtrba. Ha ezek lteznek mr az adott helyen, csak akkor rd fell a rgieket, ha a rendszernem mkdik.

    extensions: A php kiterjesztseit tartalmaz knyvtr.

    keys: Az mcrypt-hez kulcsok. Az mcrypt mg nem mkdik.licenses: Tbb licence-et tartalmaz.

    mibs: Az SNMP hasznlata esetn szksges.

    pdf-related:Az itt lv fontok a PDF kiterjeszts hasznlathoz kellenek. Olvasd el az ezzel kapcsolatoslicence-t.

    pear: The pear archive captured at the build date.

    readme: Readme file-ok klnbz tmkban

    sapi: Natv server api-kat tartalmaz. Az ajnlott a CGI verzi. Ezen kvl vlaszthatod mgezeket:- php4-module a win32 Apache szerver sapi-ja,- ISAPI - az IIS4/5 sapi-ja,- NAPI - a netscape enterprise server s a php4 servlet verzija

    tests: A PHP mkdsnek tesztelshez hasznlhat program van itt.

    A PHP rtelmez ltalban a C:\PHP\PHP.EXE program, amelynek manapsg Windows NT/W2000/XPkrnyezetben a \WINNT\SYSTEM32\PHP\PHP.EXE helyet ajnljk, de n nem ide teszem. Szerintem

    az utlagos frisstsek miatt clszer valamelyik meghajt gykerbl nyl knyvtrba tenni, pldulC:\PHP.

    A PHP konfigurlshoz szksg van egy PHP.INI nev file-ra, amelynek a Windows knyvtrba kellkerlnie. Ennek a file-nak a mintja php.ini-dist nven a PHP knyvtrban tallhat teleptskor. Amegfelel sorokat trva van egy mkd konfigurcink.

    A ksbbiek sorn megnzzk, hogy milyen vltoztatsok szksgesek a PHP.INI-ben, a gyorsabbmkds rdekben.

    http://hu.php.net/http://www.php4win.de/http://www.php4win.de/http://hu.php.net/
  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    10/149

    10

    3.2 TeleptsMindenekeltt csomagold ki a PHP-t a C:\PHP knyvtrba, majd msold a php4ts.dll-t aC:\WINDOWS\SYSTEM vagy a C:\WINNT\SYSTEM32 knyvtrba!

    Msold a php.ini-dist file-t a rendszer gykrknyvtrba, ahol a Windows van, majd nevezd t PHP.INI-re. Szerkeszd t a PHP.INI-t, szksg szerint (a ksbbiekben bemutatjuk, hogy mit rdemestszerkeszteni).

    3.2.1 Apache WEB szerver 1.3.xx vagy 2.0.xx1. Teleptsd az Apache szervert. Ez a teleptt tartalmaz MSI file vagy az .EXE kiterjeszts file

    esetn az nkicsomagol file futtatst jelenti.

    2. lltsd le az Apache Webszervert.

    3. Az Apache szerver konfigurcis llomnya pldul az C:\Apache\conf\httpd.conf file.Szerkeszd meg ezt a file-t, az albbi mdon:

    Apache modul esetn:

    # Apache modul esetnLoadModule php4_module c:/php/sapi/php4apache.dllAddType application/x-httpd-php .php4

    Msold be a \Winnt\system32 vagy a \windows\system knyvtrba a php4ts.dll file-t

    CGI modul esetn:

    #for the cgi binris esetben ScriptAlias /php4/ "C:/php/"Action application/x-httpd-php4 "/php4/php.exe"AddType application/x-httpd-php4 .php

    Sajnos jelenleg az Apache modul nem fut a 2.0.xx-es verziban.

    4. Keresd meg a DirectoryIndex parancsot a konfigurcis llomnyban s egsztsd ki azalbbi mdon

    DirectoryIndex index.html index.php index.php3 index.php4

    5. Indtsd jra az Apache szervert,

    6. rd meg a kedvenc ASCII editorod segtsgvel az albbi tartalm scriptet, mentsd el a szerveredgykrknyvtrba, majd hvd meg a bngszben az albbi mdon:

    7. Prbld ki az albbi programocskt a Bngszddel a szervered root knyvtrbl:

    http://localhost/proba.php

    Ennek hatsra lefut a script s kirja a bngszdbe az ppen hasznlt php rendszer rengetegparamtert.

    3.2.2 Internet Information Server 4 vagy 5Indtsd el a Microsoft Management Console-t vagy az Internet Services Manager-t, a Control Panelrl.

    Kattints a Webszerverre s vlaszd a properties-t.

    Ha nem akarsz HTTP Authentication-t hasznlni a PHP-vel, akkor tlpheted ezt a lpst. Az ISAPIFilters (ISAPI szrk) alatt add hozz az j ISAPI szrt. Hasznld a PHP nevet a szr nevnek, majdkeresd meg az php4isapi.dll-t, a C:\PHP\sapi\php4isapi.dll tvonalon.

    http://localhost/proba.phphttp://localhost/proba.php
  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    11/149

    11

    A Home Directory alatt, kattints a Configuration (Konfigurci) gombra. j bejegyzst kell felvenni,az Application Mapping-be (Alkalmazsok Hozzrendelse). Hasznld a C:\php\sapi\php4isapi.dll-t slltsd Executable-re (Futtathat), .php legyen a kiterjeszts, Method exclusions-nl lltsd be az enginecheckbox-ot.

    lltsd le az IIS-t.

    Indtsd jra. az IIS-t

    rd meg a kedvenc ASCII editorod segtsgvel az albbi tartalm scriptet, mentsd el a szerveredgykrknyvtrba, majd hvd meg a bngszben az albbi mdon:

    localhost/s prbld ki az albbi programocskt a Bngszddel a szervered root knyvtrbl:

    http://localhost/proba.php

    Ennek hatsra lefut a script s kirja a bngszdbe az ppen hasznlt php rendszer rengetegparamtert.

    3.2.3 Personal Web Server 4 vagy jabb (Win98)Szerkeszd meg a csomagban lv PWS-php4isapi.reg (ISAPI interface) file-t vagy a PWS-php4cgi.reg (CGI interface) file-t, hogy arra knyvtrra mutasson, ahol a php4isapi.dll / php.exetallhat. Pl.

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters\ScriptMap]".php"="C:\\PHP\\php4isapi.dll"

    A PWS Manager-ben jobb egrrel kattintva, a megfelel knyvtrhoz add hozz a PHP support-ot(tmogats), vlaszd a Properties-t (Tulajdonsgok). lltsd be az 'Execute' vgrehajthat

    tulajdonsgot.3.2.4 Szerver nlkli hasznlat:Bontsd ki a C:\PHP knyvtrba a csomagot.

    Az albbi batch file-t ksztsd el, a megfelel tvonalakkal

    C:\php\php.exe %1 >%Temp%\phptemp.htmC:\Progra~1\Intern~1\iexplore %Temp%\phptemp.htm

    A batch file-t paramtere a php file legyen.A msodik sorba az ltalad hasznlt bngsz elrst kell berni

    rd meg a kedvenc ASCII editorod segtsgvel az albbi tartalm scriptet, mentsd el a szervered

    gykrknyvtrba, majd hvd meg a bngszben az albbi mdon:

    Hvd meg a megrt batch file-t az albbi mdon:

    Test.bat proba.php

    Ennek hatsra lefut a script s kirja a bngszdbe az ppen hasznlt php rendszer rengetegparamtert.

    A CGI verzi stabilabb a Windows rendszerekben, az ISAPI verzik alkalmanknt sszednthetik arendszert.

    http://localhost/proba.phphttp://localhost/proba.php
  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    12/149

    12

    4 Eszkzk a PHP hasznlathozFelmerl a krds, hogy mi kellhet a PHP hasznlathoz a fentieken kvl. A vrakozssal ellenttbennem sok, de azrt itt sszefoglalom a lehetsgeket:

    Kell egy ASCII szvegszerkeszt, kezdetben j a NOTEPAD.EXE a Windowsbl is. Ha ennlkomolyabbra vgysz, akkor vlaszd mondjuk az EditPlus nev editort, amely a http://www.editplus.comcmrl tlthet le. Szmozza az oldalakat, s mg a szintaktikt is sznezi. Ezen kvl sok ms hasonleditor van forgalomban. A nagyok kzl tudnm ajnlani a Macromedia Dreamweaver Ultradev 4 vagya Dreamweaver MX csomagot is.

    Nem rt, ha van egy j HTML editorod, mert a php oldalak jelents rszben azrt HTML kdbl isllnak. A freeware vagy shareware programok kztt jelents vlasztk van, pl. CoffeCup.

    Kell egy bngsz, ami adott az jabb Windows-okban Internet Explorer 4/5/6. Hasznlhatod aNetscape Navigator-t (www.netscape.com), illetve az Opera legjabb vltozatt is. Taln ez utols alegkisebb s leggyorsabb. Az opera letlthet a www.opera.com -rl.

    Szksged lesz egy j Help-re. n a http://hu.php.net/docs.php oldalrl a CHM (Windows-os Help file)vltozatot javaslom, de hasznlhatod a HTML verzikat is, s ha gyors Internet kapcsolatod van, akkor a

    Internetrl is lehet online mdon hasznlni ket.Nem rt, ha a HTTP-rl is van egy j Help-ed. A http://www.htmlhelp.com/ -rl letlthet tbbfleformban, kztk Windows-os Help formjban a HTML nyelv szintaktikja.

    Nem ide tartozik, de gyakori, hogy a php scripteket vegytjk Javascriptekkel is. Erre a clra tbb forrsltezik, de sajnos magyar nyelven s Windows-os Help formjban nem tudok rla: Taln clszer akvetkezt Web oldalt hasznlni http://weblabor.hu/leiras/javascr/ vagy megnzni az albbi oldalt:http://www.szily.sulinet.hu/jegyzetek

    Letlthet llapot vltozat az ftp://ftp.szily.sulinet.hu/jegyzetek/Javascript/knyvtrban tallhat.

    Szksg lehet egy j HTML/ Javascript knyvre, pldul

    Bcz Pter Szsz Pter: A vilghl lehetsgei

    http://www.editplus.com/http://www.netscape.com/http://www.opera.com/http://hu.php.net/docs.phphttp://www.htmlhelp.com/http://weblabor.hu/leiras/javascr/http://www.szily.sulinet.hu/jegyzetekftp://ftp.szily.sulinet.hu/jegyzetek/Javascript/ftp://ftp.szily.sulinet.hu/jegyzetek/Javascript/http://www.szily.sulinet.hu/jegyzetekhttp://weblabor.hu/leiras/javascr/http://www.htmlhelp.com/http://hu.php.net/docs.phphttp://www.opera.com/http://www.netscape.com/http://www.editplus.com/
  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    13/149

    13

    5 Egy HTML s egy PHP oldal szerkezeteMieltt tovbbmennnk nzzk, mit akarunk programozni? Hogyan is nz ki egy HTML oldal:

    Proba web oldal

    Hello World!!!

    Na ez nagy durrans volt. A bekezdses rsmdot az ttekinthetsgrt hasznlok, de mint ltjukksbb, ez rendkvl fontos! A bngszk a sor vge jelet, a szkzket s a tabultor jeleket kihagyjk,ezrt akr az egszet egy sorba is rhatnnk. A fenti HTML oldalt az albbi php scripttel tudjukelllttatni:

    Proba web oldal

    Tisztn ltszik, hogy a program szerkezete nagy vonalakban ugyanaz, de azrt vannak klnbsgek. APHP rtelmez a kd els sorait vltozatlanul tovbbtja a Web szervernek, de amikor a tag jelzi az rtelmeznek a PHP script vgt.

    Egy oldalon tbbszr is megnyithatjuk a scriptet s bezrhatjuk, azaz keverhetjk a php s a HTMLkdot, st ha van mersznk, akkor beiktathatunk javascriptes rszeket is.

    Az albbi lehetsgeink vannak arra, hogy php scriptet helyezznk el egy oldalon:

    ..... php kd ...

    Ha berjuk a PHP.INI-ben, a short_open_tag= on sort, akkor ez a megolds is lehetsges:

    Ha berjuk a PHP.INI-be az asp_tags = on sort, akkor hasznlhat az albbi szintaktika is:

    Specilis lehetsg. Ha egy vltoz rtkt szeretnnk csak kiiratni s a short_open_tag = on sor be vanrva, akkor egy vltoz rtkt gy adhatjuk t a web oldalnak legegyszerbben:

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    14/149

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    15/149

    15

    7 Vltozk, adattpusokA PHP-ben hasznlhatunk vltozkat is. A vltoz neve eltt mindig $ jel tallhat.

    7.1 A vltoz neveA vltoz neve betvel vagy alhzs jellel kezddik s brmilyen alfanumerikus karakterrel, illetve127...255 ASCII kd karakterrel folytatdhat. A kis s nagybetk klnbznek!

    7.2 A vltoz rtkeAmikor elszr adunk rtket egy vltoznak, akkor jn ltre a vltoz.

    $a = 5;$todo = szveg;

    Ha egy vltoz rtkt azeltt vizsgljuk meg, mieltt rtket adunk neki, az rtke NULL lesz.

    Egy vltoz tpust tbbflekppen lehet meghatrozni.

    - rtket adunk neki, az rtk alapjn ltrejtt vltoznak a tpusa is egyrtelmv vlik.

    Belltjuk a tpust a settype (vltoznv, tpus) paranccsal, ahol a tpus az albbiak kzlvlaszthat: "integer", "double", "string", "array", "object"

    - Tpuskonverzit alkalmazunk. Az alkalmazhat tpusok ugyanazok, mint a fenti pldban,hozzvve, hogy az integer lehet int is, a double lehet float s real is.

    $a = (int) $b$c = (string) $d

    A vltozk rtkadsakor hasznlhatunk hasonl trkkket, mint a C-ben:

    $a = $b = 5

    A fenti kifejezst gy kell rtelmezni, mintha az albbiakat rtuk volna le:$b = 5;$a = b;

    A ksbbiekben foglalkozunk rszletesen az opertorokkal, amelyek egy vltoz rtkt meghatrozzk.

    A vltoznak brmilyen mdon rtket adtunk, akkor a tpust is meghatroztuk.

    7.3 A vltozk s kifejezsek tpusaiA klnbz programozsi nyelveken megszokott tpusok a PHP-ban is megtallhatk:

    Numerikus tpusok:

    int, integer - egsz tpus rtke 32768-32767-ig tartFloat, double, real Lebegpontos

    String A C-ben hasznlt string fogalomhoz hasonl, ... vagy .... jelek kz rt ASCIIkaraktersorozat.

    Array Tmb tpus. A tmb elemi tetszlegesen vegyesek lehetnek

    Egy tmb lehet egy, kt s tbb dimenzis tmb is. A tmb indexelse trtnhet hagyomnyosan 0-tlkezdd indexelssel, vagy lehet gynevezett asszociatv tmbt is ltrehozni, amikor a tmbindexvalamifle string, vagy egyb rtk.

    Ebben a pldban egy dimenzis tmbt hozunk ltre.$array = array (1, "hello", 1, "world", "hello");

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    16/149

    16

    Az albbi pldban ktdimenzis asszociatv hozunk ltre.

    $fruits = array ("fruits" => array ("a"=>"orange", "b"=>"banana", "c"=>"apple"),"numbers" => array (1, 2, 3, 4, 5, 6),"holes" => array ("first", 5 => "second", "third")

    );

    Object - Objektum. A tpus hasonlt a C++ objektumaira, de vannak lnyeges klnbsgek is.

    Egy objektum tpus vltoz ltrehozshoz elszr definilni kell magt az osztlyt a classkulcsszval, hasonlkppen, mint C++ -ban, majd a definci utn a new() opertorral ltre lehet hoznia megfelel vltozt. A class rszt kpezik vltozk s a classhoz tartoz fggvnyek is. Aksbbiekben rszletesen is szlunk az objektumokrl. Az albbiakban egy pldt ltunk.

    boolean Logikai rtkek. Kt rtk elre definilt, a TRUE s a FALSE

    null - Olyan vltozk, amelyeknek nincsen belltott rtkk

    Resource Erforrsok, mint pldul file vagy adatbziskezel mutatja. Valjban ezek a memriaegyes helyre mutat pointerek!

    Unknown type - Ismeretlen tpusok

    Vltozk s kifejezsek visszatrsi rtknek tpust le lehet krdezni az albbi fggvnyekkel:

    int empty ($a) Megadja, hogy a vltoz res volt-e vagy nem.string gettype ($a) Visszaadja a vltoz tpust. A lehetsges tpusok az albbiak:

    "integer", "double", "string", "array", "object", "unknown type"

    void settype($var,$type) Belltja egy vltoz tpust. A lehetsges tpusok ($type) lehet:"integer", "double", "string", "array", "object"

    int intval($a,[$alap]) Visszaadja a vltoz rtkt egssz konvertlva a megadott alapszmrendszerben. Az alap default rtke 10.

    int is_array($a) Megadja, hogy a vltoz tmb vagy sem

    int is_bool($a) Megadja, hogy a vltoz logikai tpus vagy sem

    int is_float ($a)int is_double ($a)

    Megadja, hogy a vltoz lebegpontos-e, vagy sem.

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    17/149

    17

    int is_real ($a)

    int is_long ($a)int is_integer ($a)int is_int ($a)

    Megadja, hogy a vltoz egsz vagy sem.

    int is_numeric ($a) Megadja, hogy a vltoz numerikus, numerikus szveg vagy sem.

    int is_object ($a) Megadja, hogy a vltoz objektum vagy sem

    int is_resource ($a) Megadja, hogy a vltoz erforrs azonost vagy sem (pl. file handler)

    int is_string ($a) Megadja, hogy a vltoz string vagy sem.

    int isset (vltoz) Megadja, hogy be van-e lltva a vltoz. A visszatrsi rtke hamis,ha nem s Igaz, ha van rtke a vltoznak

    void print_r(kifejezs) Ember szmra olvashat informcit ad egy vltozrl.

    7.4 Elre definilt vltozkA vltozk kztt vannak olyanok, amelyek a rendszerben elre definiltak. Ezeknek a vltozknak anevt s pillanatnyi rtkt a phpinfo() fggvny segtsgvel lehet kiratni. A vltozkra hivatkozvatermszetesen az rtkeket fel tudjuk hasznlni, s azt tudjuk manipullni.

    Ezen vltozknak az rtkt a PHP.INI file-ban lehet belltani, nhny rtk a hasznlt WEB szervertlfgg, tovbbi rtkek pedig a futtat opercis rendszertl fggnek.

    A vltozk msik nagy csoportjai a rendszerben alkalmazott modulok rtkei. Nhny fontosabb vltozcsoport

    7.4.1 PHP Core A PHP rendszer alapvet vltozinak a listjaA rendszer belltsait, s alaprtelmezett paramtereit tartalmaz vltozlista.

    7.4.2 EnvironmentAz opercis rendszerrl, a krnyezeti belltsokrl, a WEB szerverrl, a bngszrl, az aktulisanmeghvott laprl s a kliensrl minden lnyeges adatot felsorol, belertve az IP cmeket is.

    7.4.3 PHP Variables - A PHP vltozk listjaTovbbi gyakran hasznlt vltozk tmbjei

    a szerver ltal szolgltatott tmb s a

    $_SERVER[PATH]

    A krnyezeti vltozk

    $HTTP_ENV_VARS

    vagy

    $_ENV[valtnev]

    Formok kezelsnl hasznlhat vltozk listja

    a GET metdussal elkldtt vltozk listja s rtkei

    $_GET[valtnev]

    Post metdussal elkldtt vltozk listja s rtkei

    $_POST[valtnev]

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    18/149

    18

    Sessionokben hasznlt vltozk listja s rtkei

    $_SESSION[valtnev]$GLOBALS[valtnev ]

    a szupergloblis vltozk. Brhol elrhetk az rtkei

    $_COOKIE[valtnev]

    A PHP 4.1.0-tl ez a szupergloblis tmb is ltezik

    A HTTP protokollban definilt tovbbi vltozk. Ezek kzl a vltozk kzl nhny megtallhat akrnyezeti vltozk kztt is.

    A szerver IP cme

    Echo $REMOTE_ADDR

    a szerver neve

    $REMOTE_HOST

    a lekrt oldal azonostja

    $HTTP_REFERER

    a szerverhez kapcsold bngsz fajtja, az opercis rendszer fajtja

    $HTTP_USER_AGENT

    a WEB oldalnak tadott paramtersztring (a.php?A=proba)

    $QUERY_STRING

    Az aktulisan futtatott PHP oldal azonostja:

    $_SERVER["PATH_TRANSLATED"]

    A szerveren lv WEB szerver gykrknyvtra$_SERVER["DOCUMENT_ROOT"]

    Az albbiakban egy pldt mutatok be a fenti vltozk hasznlatbl:

    A pr sort beszrva egy script elejre ellltja konstans formban az aktulisan fut script elrsitvonalt, tovbb a WEB szerver dokumentumainak elrsi tvonalt.

    $path=dirname($_SERVER["PATH_TRANSLATED"]);DEFINE("PATH",$path);DEFINE("DOCROOT", $_SERVER["DOCUMENT_ROOT"]);

    7.5 KonstansokA PHP-ben vannak elre definilt konstansok, tovbb mi is definilhatunk a

    define(nev, rtk) parancs segtsgvel.

    Az elre definilt konstansok kzl nhny:

    _FILE_ az ppen futtatott file neve

    _LINE_ az ppen fut programsor

    PHP_VERSION a futtatott rendszer verziszma

    PHP_OS a futtat opercis rendszer

    TRUE, FALSE logikai rtkek

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    19/149

    19

    8 Alapvet utastsokAki a Pascal nyelven nevelkedett megszokta, hogy a definicis s a vgrehajthat utastsoknak ktttsorrendje van. A C nyelv s tbbek kztt a PHP tartalmaz elrsokat az utastsok sorrendjre, de azoknem annyira ktttek, ezrt aztn nagyon knny ttekinthetetlen s rosszul mkd programot rnibennk. Ahhoz, hogy gyorsan tudjunk egy programot rni, ismertetnk nhny utastst.

    8.1 EchoA PHP egyik leggyakrabban hasznlt utastsa az echo. Segtsgvel a bngszbe ki lehet rni aprogram futsnak eredmnyt. A kirats sorn gondolnunk kell arra, hogy az eredmny egy HTMLkd mindig, amit majd a bngsz tovbb rtelmez.

    Az egyms utn r echo parancsok az eredmnyt egyms utn rjk ki a kimenetre, pozicionls,visszalps a szvegben nem lehetsges. Ha a kirs utn j sorban szeretnnk kezdeni a kirst, akkor aHTML szerint egy
    tag-et (soremels) vagy kell kirni. Az albbiakban tbb soros kirstalkalmazunk:

    A numerikus eredmnyek kirsra is hasznlhatjuk ezt az utastst, azonban formtumozni nem tudjuk akimenetet gy.

    Tovbbi problma, hogy mi van akkor, ha numerikus informcit s string-et akarunk egy szvegbenkirni. A feladat megoldshoz ugyanazt kell hasznlnunk, mint amikor kt string-et akarunk sszefzvekirni.

    A fenti pldban az echo parancs az sszeads mvelett string-g konvertlta s gy ratta ki. Akonverzi teljesen automatikus.

    Tovbbi rdekes lehetsg, amikor egy string-ben szeretnnk kiratni egy vltoz rtkt:

    Amint ltjuk, a korbbi megfontolsok alapjn a soremelst a HTML szerint kell hasznlnunk. Azalbbiakban nhny gyakran hasznlt tag-et runk le. A hasznlhat tag-ek trt egy HTML kdolssalfoglalkoz knyvbl, jegyzetbl vagy Internet helyrl meg lehet tudni.

    A kpernyn val soremelsre a
    tag szolgl.

    Vzszintes vonal rsra

    Paragrafus eleje, vge:

    ....

    Vastag bet ....

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    20/149

    20

    Dlt bet ....

    Tblzat ltrehozsraLaz albbi plda egy soros, kt oszlopos tblzatot hoz ltre)

    els oszlop

    masodik oszlop

    Stb....

    Mivel a fenti TAG-ek sztringek, ezrt clszeren az echo paranccsal kell kiiratnunk ket.

    Az echo egy nyelvi elem s nem fggvny, azaz valami olyasmi, mintha C-ben egy fggvnymakrthoznnk ltre. ppen ezrt bonyolultabb kifejezsek kiiratshoz alkalmatlan!

    Ha az adatokat formzottan szeretnnk kirni, akkor a printf parancsot kell hasznlni

    8.2 Formzott kirs

    print() Ugyanaz, mint az Echo, csak a szintaktika kiss ms.printf() kiirats formzottan

    sprintf() formzott sztringet ad vissza az albbi szintaktika szerint:

    string sprintf (string formtum [, mixed paramterek...])

    A fromtum szerint megadott karaktersorozattal tr vissza. A formtumkarakterek lnyegben a C-benmegszokott formtumkarakterek.

    A formtumstring tbb direktvt tartalmazhat. A % string vezeti be a direktvkat, majd utnakvetkeznek a formz karakterek. Ezeken kvl minden karakter megjelenik a kimeneten. A kimenetkonverzis parancsait a printf() s az sprintf() parancsban ugyangy lehet hasznlni.

    A konverzis parancssorozat az albbi parancsokat tartalmazza:

    Opcionlis kitlt karakter. Ezzel lehet a stringet megfelel mretre kitlteni. Default rtke a szkz.Ezen kvl lehet a 0, vagy egyb karakter.

    Igazts karakter. Az eredmny balra vagy jobbra igaztott lesz. A default a jobbraigazts; a karakterigaztja balra.

    Szlessg meghatroz. Megmondja, hogy minimum hny karakter legyen az eredmnyben.

    A tizedes jegyek szma. Csak a double formtum esetn hatsos. (A szmformtumokatnumber_format() fggvnnyel tudjuk mg jl kezelni.)

    A tpusmeghatroz megmondja, hogy milyen tpus adatokat kell kezelnie. Lehetsgek:

    % - a % jel.

    b az argmentum integer, s binris szmknt jelentjk meg

    c az argumentum integer, ASCII kdknt jelentjk meg.

    d az argumentum integer, decimlis szmknt jelentjk meg.

    f - the argumentum double s lebegpontos szmknt jelentjk meg.

    o - az argumentum integer, s oktlis szmknt jelentjk meg.

    s az argumentum string s gy is jelentjk meg.

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    21/149

    21

    x - az argumentum integer s hexadecimlis szmknt jelentjk meg (kisbetvel)

    X - az argumentum integer s hexadecimlis szmknt jelentjk meg (nagybetvel)

    $isodate = sprintf ("%04d-%02d-%02d", $ev, $ho, $nap);$money1 = 68.75;$money2 = 54.35;

    $money = $money1 + $money2; // Az echo $money kimenete "123.1" lesz$formatted = sprintf ("%01.2f", $money); // Az echo $formatted kimenete "123.10"echo $money;echo $formatted;

    8.3 A kiirats gyakorlsa1. rasd ki PHP programmal egy ltalad ismert tetszleges vers els ngy sort, soronknt!

    2. rasd ki egy tetszleges dalszveget egy tblzatba, versszakonknt egy- egy oszlopba!

    3. rasd ki egyms utn a 1-tl 20-ig a ngyzetszmokat jobbra igaztval!

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    22/149

    22

    9 Opertorok (mveletek)A kvetkezkben megismerjk, hogy milyen mveleteket vgezhetnk a klnbz adattpusokkal.

    9.1 Stringek kztti mveletekStringek sszefzse: .

    $a = alma.krte ;echo $a; //eredmnye almakrte lesz

    Stringek hozzadsa meglv sztringhez: .=

    $a = meleg;$a .= vz;$echo $a; // eredmny: melegvz

    9.2 Aritmetikai mveletekA numerikus rtkek sszeadsra ugyanolyan opertorokat hasznlunk, mint ms nyelvekben.

    echo $a + $b; //$a s $b sszegeecho $a - $b; //$a s $b klnbsgeecho $a * $b; //$a s $b szorzataecho $a / $b; //$a s $b hnyadosa (egsz, ha $a s $b egszek s a hnyados egsz)echo $a % $b; //Modulus $a / $b maradka

    9.3 Hozzrendels, rtkadsAz opertor az "=". Ez ugyanazt jelenti, mint Pascalban a := vagy C-ben az =. A bal oldal rtke legyenaz, ami a jobb oldal. A hozzrendel kifejezsnek az rtke a bal oldalhoz rendelt rtk.

    $a = ($b = 4) + 5; // $a most 9, s $b 4

    9.4 Nvel/cskkentopertorokA PHP tmogatja a C-ben megismert inkrementl s dekrementl opertorokat. Az albbiakbanmegismerjk azokat, majd pldt ltunk rjuk: Amikor az opertor a vltoz eltt van, akkor akirtkels sorn elszr nvekszik a vltoz rtke, majd rtkeli ki a rendszer, mg a vltoz mgttiopertor esetn elszr kirtkeli a vltozt a rendszer, majd nveli vagy cskkenti az rtkt!

    Itt egy msik pldaprogram:

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    23/149

    23

    echo "Predekrementls";$a = 5;echo "4-nek kell lennie: " . --$a . "
    \n";echo "4-nek kell lennie: " . $a . "
    \n";?>

    9.5 Logikai opertorokA logikai mveletek minden programozsi nyelvben hasonlan nznek ki. Az albbi lehetsgekvannak. A PHP-ben az igaz rtket mindig az 1 s a hamis rtket a 0 hordozza. Ennek a tudsnak abirtokban ugyanakkor nem clszer a 0 s 1 rtkeket numerikusan hasznlni.

    9.6 sszehasonlt opertorokAz sszehasonlt opertorok, mint nevk is sugallja, kt rtk sszehasonltsra szolglnak. Azeredmny igaz, vagy hamis lehet!

    Echo $a == $b; //Egyenl Igaz, ha $a s $b rtke egyenl

    Van egy feltteles opertor is, a "?:" (ternlis) opertor, ami gy mukdik, mint a C-ben s sok msnyelvben.

    (kif1) ? (kif2) : (kif3);

    A kifejezs kif2-t rtkeli ki, ha kif1 igaznak bizonyul, s kif3-at, ha kif1 hamis.

    9.7 Bitorientlt opertorokA bitorientlt opertorok teszik lehetv, hogy egy egsz rtk bizonyos bitjeit belltsuk, vagykimaszkoljuk.

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    24/149

    24

    // [egsz!]osztst jelent. Mivel a legfels bit az eljelbit, negatv szm// jobbra tolsa fura eredmnyre vezet!)

    ?>

    9.8 HibakezelopertorokA PHP egy hibakezel opertort tmogat, az at (kukac) jelet (@). Ha egy PHP kifejezs el rod, akifejezs ltal esetlegesen generlt hibazenete(ke)t figyelmen kvl hagyja a rendszer.

    Ha a track_errors szolgltats be van kapcsolva, brmilyen a kifejezs ltal generlt hibazenet a$php_errormsg globlis vltozba kerl trolsra. Ez a vltoz minden hiba esetn fellrdik, ezrtellenrizd minl hamarabb a kifejezst kveten ha hasznlhat informcit szeretnl kapni.

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    25/149

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    26/149

    26

    }elseif( kifejezs2 ){utasts3;utasitas4;.....

    }else {utasts5;utasts6;......

    }

    Switch(kifejezs)

    A fenti esetben az if s az elseif utastsnl lv kifejezsek tetszlegesek lehetnek, s az gy felrtvezrlsi szerkezettel meglehetsen bonyolult elgazsokat lehet ltrehozni. Ezzel szemben ltalnosabbeset, amikor egy vltoz rtktl fggen akarunk tbb fle mveletet is vgrehajtani. Erre a clraalkalmas a C-bl jl ismert switch() fggvny, amely tbb irny elgazst hajt vgre. Az gakmeghatrozsakor csak konstansokat hasznlhatunk, s az gra akkor addik t a vezrls, ha a switchfggvnyben lv vltoz rtke pontosan a konstans rtkvel egyezik meg. Amennyiben egy graradtuk vezrlst, majd vgrehajtottuk az ott definilt utastsokat, a switch szerkezet vgre kellugranunk a break utasts segtsgvel, mivel klnben rcsorognnk a kvetkez case

    felttelvizsglatokra.Nzzk a szintaktikjt:

    switch ($i) {case 0:

    print "i most 0";break;

    case 1:print "i most 1";break;

    case 2:print "i most 2";break;

    default:

    print "i se nem 0, se nem 1, se nem 2";

    }

    A fenti pldban az $i vltoz rtktl fggen lptnk valamelyik irnyba. Ha a vltoz rtke nemvette fel sem a 0, 1 vagy 2 rtkeket, akkor a default utni parancs hajtdik vgre.

    Gyakori eset, hogy amikor tbb klnbz esemnyt egyetlen vltoz klnbz rtkei alapjn akarszvgrehajtatni, akkor hasznlod a switch utastst. Elfordulhat, hogy ugyanazt az esemnyt tbb rtk is

    jellheti, illetve tbb klnbz esemny van. Az albbi pldban a $jelz vltoz 0, 1, 2 rtke esetnaz fv1() fggvny fut le, a 3-as rtkre az fv2() fggvny, egyb esetekben az fv3().

    switch ($i) {

    case 0:case 1:case 2:

    fv1($jelzo);break;

    case 3:fv2($jelzo);break;

    default:fv3($jelzo);

    }

    A fenti pldban az fv1, fv2, fv3 fggvnyek lehetnek akrmik!

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    27/149

    27

    10.2 CiklusokMint a C-ben, itt is hasonl ciklusszerkezetek lteznek.

    While (kifejezs)

    Itt a kifejezs a ciklus eltt rtkeldik ki, azaz a ciklus magja nem biztos, hogy vgrehajtdik.

    While (kifejezs) utasts; While (kifejezs) {Utasts1;Utasts2;...

    }Plda:

    Do ..... While(kifejezs)

    A kifejezs a ciklus vgn rtkeldik ki, azaz a ciklus magja egyszer mindenkppen lefut.

    Doutasts

    while(kifejezs);

    Do{Utasts1;Utasts2;...

    }while(kifejezs);Plda:

    For(inicializl kifejezs; Benntmarads kifejezse; iterl kifejezs)

    A ciklus elejn egyszer fut le az inicializl kifejezs. ltalban ez egy vltoznak ad egykezdrtket. Az ilyen vltozt ciklusvltoznak hvjuk.

    A Benntmarads kifejezse mindannyiszor a ciklus magjnak lefutsa eltt rtkeli ki a rendszer.Ha a kifejezs igaz rtket ad vissza, akkor lefut a ciklus magja, ha hamis rtket, akkor a ciklus utniels utastson folytatdik a futs. Ha a kifejezs helyre res rtket runk, akkor vgtelen ciklusbakerlhetnk, hacsak a ciklus belsejbl nem ugrunk ki a break utastssal.

    Az Iterl kifejezs felels azrt, hogy a ciklus valamikor befejezdjn. ltalban a ciklusvltozrtkt nveljk vagy cskkentjk eggyel.

    For (init;bentmarads;itercio)utasts;

    For (init;bentmarads;itercio){Utasts1;Utasts2......

    }Plda:

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    28/149

    28

    Foreach ( tmb_kifejezs as $rtk) vagy Foreach ( tmb_kifejezs as $kulcs => $rtk)

    Ez a fajta ciklus a Perl nyelvbl kerlt t a PHP-be.

    Ezt a ciklust arra hasznlhatjuk, hogy egy ciklussal vgigmenjnk egy tmb minden egyes elemn.Rendkvl jl hasznlhat adatbzis lekrdezsek vagy egyb tmbben visszaadott adatok feldolgozsa

    sorn. KtfleForeach ($tmbvltoz as $ertek)utasts;

    Foreach ($tmbvltoz as $ertek){Utasts1;Utasts2...

    }Plda:

    $tomb = array (1, 2, 3, 17);

    foreach ($tomb as $ertek) {print "Az aktulis rtke \$tomb-nek: $ertek.\n";

    }

    A msodik formban a $kulcs vltoz megkapja a tmb ppen aktulis indext, ezltal egyes esetekbenknnyebb a feldolgozsa

    Foreach($tmbvltoz as $kulcs =>$ertek) utasts;

    Foreach ($tmbvltoz as $kulcs => $ertek){Utasts1;Utasts2...

    }Plda:

    * harmadik foreach plda: kulcs s rtk */

    $tomb = array ( "egy" => 1, "kett" => 2, "hrom" => 3, "tizenht" => 17 );

    foreach ($tomb as $kulcs => $ertek) {

    print "\$tomb[$kulcs] => $ertek.\n";}

    break vagy break n

    A break utasts arra szolgl, hogy segtsgvel egy struktrbl az adott helyen ki tudjunk ugrani. Hautna runk egy szmot, akkor annak alapjn tbb egymsba gyazott struktrbl is ki tud ugrani:

    Pldnak okrt korbban a switch utastsnl mutattunk egy pldt a break hasznlatra, az opcionlismdra pedig itt van egy plda:

    $i = 0;

    while ($i++) {switch ($i) {case 5:

    echo "5 esetn
    \n";

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    29/149

    29

    break 1; /* csak a switch-bl lp ki */case 10:

    echo "10 esetn kilps
    \n";break 2; /* a switch s a while befejezse */

    default:break;

    }}

    continue vagy continue n

    Br programozsi mdszertanok kerlik a ciklusokbl val kiugrlst s a ciklusmagon belli itercit,azrt minden ltalnos nyelvben benne van a lehetsg, belertve a Pascalt s a C-t is. Ez az utastsakkor hasznlhat, ha a ciklus belsejben mr eldlnek a tovbbi itercira vonatkoz felttelek s nemakarjuk, hogy a ciklus magjnak tbbi rszt feleslegesen futtassuk. Ha a continue n formt hasznljuk,akkor tbb egymsba gyazott struktrt tudunk folytatni. Az albbi pldban 100 db vletlenszmothozunk ltre a 0..4 egsz tartomnybl s az eloszlsukat vizsgljuk. A continue utastsok hatsra hamegvan az rtk, tovbbi feltteleket nem rtkel ki a program, hanem rgtn iterlja a for ciklust.

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    30/149

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    31/149

    31

    10.5 Tvoli file-ok hvsaA fenti kt utasts include s require alkalmas arra, hogy a PHP megfelel konfigurlsa esetntvoli file-okat is elrjnk, akr msik Web szerveren is. Ehhez az "URL fopen wrapper"-eket kellbekapcsolni, a PHP4.0.3-tl kezdden az allow_url_fopen php.ini belltsval. Ez a lehetsgWindows rendszereken nem mkdik.

    Ennek a tulajdonsgnak persze vannak veszlyei is. Ha egy ilyen tvoli hvs sorn olyan lapot hvunk

    meg, aminek a tartalmra nincsen hatsunk, akkor az include-olt file tartalma lehet olyan, hogy a mirendszernkre veszlyeket hordoz. A tvoli helyen megfelelen elksztett lap email-ben elkldheti azazonostkat s egyb olyan adatokat, amelyeket nem szeretnnk nyilvnossgra hozni, ezrt ezzel alehetsggel vatosan kell bnni.

    10.6 Pldaprogramok felttelekkel, ciklusokkal1. rj programot, amely kirja az ttel s a httel oszthat szmokat s ezen szmok sszegt!

    2. rj egy programot, amely az eraszthotenszi szita vagy ms mdszer segtsgvel kirja aprmszmokat 1-tl n-ig!

    3.

    Kszts programot, amely sszefsli $a, $b rendezett tmbk tartalmt, majd az tetszet

    sformban kirja a kpernyre!

    4. rj programokat, az include s require parancsok segtsgvel, amely teszteli egy rendezsialgoritmus sebessgt, mivel ugyanazokat az include-olt tmbket rendezi sorba.

    Az albbi feladatok a Programozsi ttelek s Adatszerkezetek cm jegyzetembl szrmaznak

    Feladatok:

    Egy repl indul az egyik kontinensrl a msikra, s repls kzben rendszeresen mri az alatta lvfelszn tengerszint feletti magassgt. A mrt rtk nulla ekkor tenger felett repl vagy pozitv ekkor szrazfld felett repl. Ksztsnk olyan programot, amelyik a kvetkezkre kpes:

    Szimullja a mrseket vletlenszeren, figyelve arra, hogy az els s az utols mrs szrazfld feletttrtnt. Az eredmnyeket fjlba menti.

    Kirja a kpernyre az albbi krdsekre a vlaszokat:

    1. Milyen tvol van egymstl a kt kontinens?2. Hol vannak a szigetek partjai (eltte tenger, utna szrazfld vagy fordtva)?3. Hny sziget van a kt kontinens kztt?4. Hny hegycscsot tallt (A hegycscs az a hely, ami eltt s mgtt kisebb a tengerszint feletti magassg)?5. t tud-e menni a kt kontinens kztt egy kajakos, ha egyszerre csak egy adott tvolsgot tud evezni, mert ha

    tbbet evez, akkor elpusztul?6. Mekkora a szigetek tlagos tvolsga?7. Van-e leszllplya valamelyik szigeten (olyan rsz, amely vzszintes legalbb kt mrs tvolsgig)8. Hny darab apr sziget van (maximum 3 mrshosszsg)?9. Szeretnk alfldn lni. Van-e olyan rsz, amely sk vidk, elg nagy s alfld? Keressk meg ezt a helyet!10.Hol tallhat a leghosszabb sziget kezdpontja?

    - A fenti krdsekre vlaszt ad gyis, hogy vletlen-szl gtolja, vagy segti a replgp tjt- Tltsnk fel adatokkal egy kt-dimenzis tmbt! rjunk programot, amely kirja a legnagyobb elemet

    tartalmaz sor szmt!

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    32/149

    32

    11 Sajt fggvnyek, vltozk lettartama s lthatsgaEddig sok sz esett a vltozkrl s esetenknt a fggvnyekrl is, azonban az eddigiek alapjn aztgondoln az ember, hogy csak ilyen egyszer programok rhatk PHP-ben. Az igazsg az, hogy PHP-ben csak a futsi id s a futtat rendszer memrija szab hatrt az alkalmazott programbonyolultsgnak.

    11.1 FggvnyekA PHP-ban is hasznlhatunk programstruktrkat, programszegmenseket. Mr Pascal-bl vagy C-bl is

    jl ismerhetjk az alapvet kt eljrstpust, amit Pascalban Procedure illetve Function nvvel illetnk,C-ben pedig tpus nlkli illetve tpusos function-nak mondunk. Mind a kt nyelven a klnbsg az,hogy ad-e vissza a krdses eljrstpus rtket, vagy nem.

    A PHP-ben csakgy, mint a C-ben ktfle eljrstpust hasznlhatunk. A szintaktika a kvetkez:

    Ez az eljrstpus nem ad vissza rtket.

    function fggvny_nv(paramterlista) {A fggvny trzse;

    }

    Ez az eljrstpus a definiltnak megfelel tpus rtket ad vissza:function fggvny_nv(paramterlista) {

    A fggvny trzse;return rtk;

    }

    Lthat, hogy a visszatrsi rtk lte vagy nem lte a programoztl fgg, ezrt egyes esetekbenclszer a visszatrsi rtk tpust megllaptani ahhoz, hogy van-e egyltaln visszatrsi rtk.

    PHP3-ban a definilt fggvnynek mindig a fggvny hvsa eltti ponton kell lennie, vagyis azokat afggvnyeket, amelyeket hasznlni akarunk a PHP program elejre kell tennnk. A PHP4ben ez amegszorts megsznt, ugyanakkor clszer magadat ehhez a szokshoz tartani.

    A PHP nem tmogatja a fggvnyek polimorfizmust, a fggvnyeket nem tudod undefinilni vagyjradefinilni a mr definilt fggvnyeket. Az objektum orientltsg ennek megfelelen nem teljes aPHP-ben.

    A fggvny meghvsa esetn paramtereket adhatunk t a hvott fggvnynek. Ennek rszleteit akvetkez szakaszban fogjuk trgyalni.

    Rekurzi lehetsges a fggvnyhvsoknl, de termszetesen arra kell vigyzni, hogy a rekurzi vgetrjen. Az albbi kis plda az N faktorilis kiszmtst vgzi rekurzv mdon.

    11.2 ParamtertadsEgy fggvny definilsakor meg kell hatrozni, hogy milyen paramtereket vegyen t. Ezt aparamterlistval tudjuk megtenni, amelyben az tvev vltozk neveit vesszvel elvlasztva fel kellsorolni.

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    33/149

    33

    A hvskor nem kell minden paramtert tadni. Ebben az esetben a krdses paramtereknek afggvnyen bell nem lesz rtke. Az empty() fggvnnyel lehet megvizsglni, hogy egy paramterkapott-e rtket vagy sem.

    A PHP-ben ktfle paramtertads, ltezik

    rtk szerinti

    A hv kifejezs rtke behelyettestdik a meghvott fggvny paramterlistjban szerepl vltozba

    s a fggvnyen bell a paramter hasznlhat. Ez az alaprtelmezs.Cm szerinti

    Ez azt jelenti, hogy a vltoz memriacmt adjuk t a fggvnynek, amely a cm ismeretben tudja aztmdostani s a fggvnybl val visszatrskor a vltozsok megmaradnak.

    Ez utbbi esetben, ha cm szerint akarunk tvenni rtket egy fggvnnyel, akkor hasznlnunk kell a &opertort.

    Mg akkor is tadhatjuk cm szerint a vltozt, ha a fogad fggvnyt nem ksztettk fel a cm szerintiparamtertvtelre, az tadsnl hasznljuk a & opertort. Ez utbbi nem tlsgosan szp md, mivelegy fggvnyt valsznleg nem azrt hasznlunk rtk szerinti paramter tvtelre, hogy majd msholmdostsunk a dolgon.

    A fggvnyek paramtereinek tvtele mg egy mdon megtrtnhet. A PHP tmogatja a paramterekkezdrtkadst. Ennek akkor van rtelme, ha a fggvny hvsakor nem adtunk t rtket afggvnynek. Ilyenkor alaprtelmezett rtket kap az a paramter, amelyet a hv nem adott t.Termszetesen az t nem adott paramtereknek a helye az tadottak utn helyezkedjen el!

    Ha azt szeretnnk, hogy egy fggvny vltoz szm paramtert vegyen t s a fggvnyben megakarjuk llaptani, hogy ppen most hny paramter van, akkor a kvetkez fggvnyeket hasznlni:

    func_get_args()

    Egy tmbben visszaadja az tadott paramterek listjt.

    Func_num_arg()Megadja a kapott fggvnyek szmt

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    34/149

    34

    func_get_arg(sorszm)

    Visszaadja a sorszm paramterrel megadott paramtert. Ha a sorszm nagyobb, mint a paramterlistautols elemnek indexe, akkor hibazenet jn (warning). A paramterlista indexe 0-val kezddik.

    Az albbi plda ezeket pldzza.

    11.3 Fggvnyek visszatrsi rtke

    Egy fggvny tetszleges tpust, mg tmbt, vagy vltozreferencit is vissza tud adni. Tbb rtkvisszaadsra a tmbt hasznlhatjuk. Ha nem hasznljuk a return utastst, akkor az utols vgrehajtottkifejezs lesz a visszatrsi rtk.

    11.4 Vltozk lettartalma s lthatsgaA PHP-ban nagyon egyszer szablyok vannak a vltozk lthatsgra s lettartamra vonatkozlag.

    lettartam

    A vltoz akkor jn ltre, amikor ltrehozzuk, rtket adunk neki.

    Egy vltoz megsemmisl, ha az unset(vltoznv) paranccsal felszabadtjuk a vltoz nevt(memriaterlett is), vagy vget r az adott PHP script oldal. Ez all kivtel, ha a vltozkat tadjukegy msik PHP oldalnak a POST, GET metdussal, a cookie-k vagy sessionok hasznlatval.

    Egy PHP oldal elejn hasznlhatk a HTTP_ s az Environment vltozk, amikrl korbban esett sz.

    Hasznlhatk azok a vltozk, amelyeket egy msik php oldal, vagy ms HTML oldal kldtt, POSTvagy GET metdussal.

    Hasznlhatk a Cookie-k s a Sessionok segtsgvel tvitt vltozk is.

    Ltezik az gynevezett a $GLOBALS tmb, amelynek tartalma a PHP oldal minden helyrl lthat.

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    35/149

    35

    Ltezik-e a vltoz

    Azt, hogy egy vltoz ltezik-e az isset() fggvnnyel krdezhetjk le. Igazat ad vissza, ha a vltozltezik, az empty() fggvny pedig igazat ad vissza, ha a vltoz rtke 0, res, vagy nem ltezik!

    Lthatsg

    A PHP oldalon ltrejtt s a klnbz mdokon tvett vltozk globlisak, azaz attl a helytl kezdvelthatk mindenhonnan, azonban ha meghvunk egy fggvnyt, akkor abban a fggvnyben csak azok avltozk lthatk, amelyeket a fggvnyben hoztunk ltre, vagy paramterknt adtunk t. Ha afggvnybl kilpnk, akkor ezek a vltozk megsemmislnek kivve, ha nem cm szerintiparamtertads sorn jttek ltre. Azaz ezek a vltozk loklisak lesznek a fggvnyre nzve.

    Ha egy fggvnybl j fggvnyt hvunk, akkor abban nem lehet ltni a hv fggvny vltozit.

    A fentiek all az egyetlen kivtel, ha a fggvnyben hasznljuk a global parancsot, aminek segtsgvelimportlhatjuk a script globlis vltozit a fggvnybe.

    A msik lehetsg az, hogy hasznljuk a $GLOBALS[] asszociatv tmb rtkeit, amelyben mindenbejegyzett globlis vltoz megtallhat.

    Ltrehozhatunk statikus vltozkat is, amelyek a Clipperben s ms hasonl nyelveken lteznek.Statikus vltoz egy fggvnyben jhet ltre. Amikor kilpnk a fggvnybl mr nem hasznlhatjukennek a vltoznak az rtkt, de ha jra meghvjuk a fggvnyt, nini mg megvan az elz rtke. Jott folytathatjuk, ahol abbahagytuk. Ennek nha van rtelme. Mindenesetre a hasznlathoz afggvnyben a static kulcsszt kell hasznlni. Az albbi kis szsszenet egy ciklusbl meghvja jra megjra a Test() fggvnyt s ennek sorn az $a vltoz tartalma folyamatosan n, noha mindig kilpnk afggvnybl. Na ja, statikusnak deklarltuk! A statikus vltoznak kezdrtket adva, az csak egyszerfut le, amikor elszr meghvjuk a fggvnyt.

    Function Test () {static $a = 0;echo $a;

    $a++;}

    for ($i =0; $i< 10;$i++) {

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    36/149

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    37/149

    37

    fggvnybe irnytom t, ahol a header segtsgvel tirnytom egy msik oldalra, tadva neki amegfelel vltozkat.

    function sorry($msg,$from=1,$glob=""){

    header("Location: sorryuser.php?from=$from&msg=$msg&glob=$glob");}

    if(empty($name)) sorry("Hinyzik a nv adat! Ktelez kitlteni",1);if(empty($loginname)) sorry("Hinyz login nv! Ktelez kitlteni",1);if(empty($email)) sorry("Hiny E-mail cm! Ktelez kitlteni. Itt kapod meg a jelszt!",1);

    A fenti hrom lehetsg kzs hibja az, hogy az tirnytott lapok URL-je megjelenik a bngszben,azaz titkos informcit nem tudunk tadni, tovbb azok a bngszk, amelyek nem trik az tirnytst,nem fognak tovbbmenni.

    11.5.3 POST metdusA POST adattviteli metdust az rlapokkal kapcsolatban hasznlhatjuk legtermszetesebben. Ittegyelre csak annyit mondunk, hogy az rlapok olyan HTML kdok, amelyen keresztl a bngsz eltt

    l felhasznl berhat adatokat a HTML oldalon, az rlap SUBMIT gombjnak megnyomsra pedigaz rlapon definilt mezk tartalmt, mint vltozneveket s vltoz tartalmakat elkldi a cl oldalnak abngsz. Az rlap fejlcben meg kell adni a cl oldalt (kinek kldjk) s a megfdelel oldal, ha azolyan oldal, amit a szerver meg tud jelenteni betltdik a bngszbe.

    A PHP esetn a mdszer az, hogy az rlap kitltse utn a submit gomb megnyomsval elkldjk azeredmnyeket egy PHP oldalnak, amely betltdskor megkapja az elkldtt vltozkat, esetleg elvgziazokat a ferladatokat, amelyekre rendeltetett, majd megjelent valami vlaszt.

    Ennl a mdszernl, az elkldtt rtkek nem lthat mdon kerlnek el a meghvott oldalhoz, tehtezzel a mdszerrel viszonylag knny vltozrtkeket tadni.

    Vigyzni kell azonban arra, hogy az adatbevitel alapveten string s ha nem gy hasznljuk fel azokat abevitt stringeket, hogy eltte kiszrjk a ../../etc/ ... stb jelleg adatrokats nem figyelnk arra, hogy azeredmnyeket a lehet legtbb szempont szerint ellenrizzk, akkor a web site-unk feltrhet lehet.

    Az albbi pldban egy olyan HTML oldalt mutatok be, amely egy rlapot tartalmaz, a submit gombmegnyomsnak hatsra az oldal nmagnak (!) kldi el a vltozkat, majd a submit vltoz rtkealapjn egy elgazsra kerl a vgrehajts s az eredmnyt elkldi e-mailben egy megadott cmre. Alapon van egy kis Javascript bett is, amely az aktulis idpont beszrsra szolgl. Az rlapon tallhatolyan mez is, amelynek a tartalma hidden, azaz az rlapon nem jelenik meg.

    Munkalap

    function Kitolt(){var x=0;for (x=0;x

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    38/149

    38

    $mikor= date ('Y.M.d'); //if (!empty($pswd)) // egyszer (primitiv) password ellenrzs

    $jls = "_".$pswd."_"; // Lehetne biztonsgosabban is, de itt most ez nem szempontelse $jls = "__";

    // A munkalap elkldshez ki kell tlteni a partnercg nevt is.if(!empty($ceg)){

    $jel= (strpos($jls, "xxxx") == 0) | empty($munkavegzo);if(!$jel)

    {// Itt lltjuk ssze az Email-t az tkldtt vltozk rtkbl.$uze ="";$uze= $uze ."Cg $ceg\n";$uze= $uze ."Bejelent $bejelento\n";$uze= $uze ."Bejelents idpontja $mikor\n";$uze= $uze ."Hibajelensg $hibajelensg\n";$uze= $uze ."A hiba oka $hibaok\n";$uze= $uze ."Az elvgzett munka $elvegzett_munka\n";$uze= $uze ."A munkavgzs alapja\n";$uze= $uze ."- Garancilis $grancilis\n";$uze= $uze ."- Rendszergazdai $rendszergazda\n";$uze= $uze ."- Fizets $fizetos\n";$uze= $uze ."- Kiszlls $kiszallas\n";$uze= $uze ."- Mhelyben $muhely\n";

    $uze= $uze ."- Rendszergazdai $rendszergazda\n\n";$uze= $uze ."A szksges munkaid $munkaido\n";if (!empty($munkadij)) {

    $uze= $uze ."Szmlzott munkadj $munkadij Ft + 25% FA\n\n";}if (!empty($alkatreszek)) {

    $uze= $uze ."Beptett alkatrszek $alkatreszek\n";$uze= $uze ."Alkatrszek ra $alkatreszar Ft + 25% FA\n\n";

    }$uze= $uze ."\n";$uze= $uze ."Munkavgz $munkavegzo\n";$uze= $uze ."Dtum $datum\n";$uze= $uze ."Igazols $igazolas\n\n";$uze= $uze ."A munkalapot kld gp adatai\n";$uze= $uze ."A gp IP cme ".$HTTP_ENV_VARS['HTTP_HOST']."\n";$uze= $uze ."A gp neve ".$HTTP_ENV_VARS['REMOTE_HOST']."\n";

    $uze= $uze ."A gpen fut bngsz ".$HTTP_USER_AGENT."\n";

    mail("[email protected]","munkalap",$uze);

    if( Die("Az munkalapot elkldtk!"));}if ($jel)

    Alert ("Hinyosan tlttte ki a munkalapot");

    }

    Jzsi Cgnek munkalapja

    A partnercg:

    EKFTGKFTMUBNTMTAIABTBA..KI

    mailto:[email protected]:[email protected]
  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    39/149

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    40/149

    40

    Beptett alkatrszek

    Alkatrszek ra (nett)

    +25% FA


    A munkt vgz(k):

    Munkark


    Munkadj (netto) +25% FA

    Dtum:

    Digitlis alrs:

    Igazols:

    Utols mdosts: 2011. mrcius 12.

    11.5.4 $_SESSION vltozkA session vltozk olyan vltozk, amelyek megtartjk rtkeiket mikzben a felhasznl egyik oldalrltlp a msikra anlkl, hogy a korbban ismertetett mdszerek valamelyikvel direkt t kellene adnunk

    az rtkeket a lapok kztt. Ez a lehetsg igazi globlis vltozkat enged meg s sokkal sszetettebbWEB-es programok ksztst teszi lehetv. Tbb lapbl ll site fejlesztse gyakorlatilag sessionvltozk nlkl nem megy.

    Amikor egy felhasznl belp egy WEB oldalra, akkor egy egyedi azonost keletkezik, az gynevezettsession id (SID), amelyet vagy a bngszben trolunk gynevezett cookie (sti) formjban, vagy aszerver oldalon tartunk nyilvn. A sessionok tmogatjk korltlan mennyisg vltoz regisztrlst s atartalmuk megtartst. Amikor a felhasznl elri a web oldalt, akkor a PHP automatikusan leellenrzi,hogy a megfelel session id vajon mr ltezik-e a szerveren. Ha ltezik a session id, akkor a session-hztartoz elmentett rtkeket hozzrendeli a lekrt oldalhoz.

    A session id-t kt mdon lehet aktivizlni.

    1. Vagy a PHP.INI-ben belltjuk a session.auto_start =1 rtket

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    41/149

    41

    2. Minden oldal elejn hasznljuk a session_start() fggvnyt, vagy implicit mdon a session_register()fggvnyt.

    Amikor a ltogat elindt egy PHP-s lekrst, a PHP motor megnzi, hogy a fenti esetekben van-e akrshez hozzrendelve egy session id. Ha van, akkor a korbban elmentett krnyezetet hozzrendeliehhez a krshez, azaz visszalltja a megfelel vltozkat. Minden regisztrlt vltozt elment arendszer a krs befejezdsekor. Azok a regisztrlt vltozk, amelyek nem kaptak rtket, azaz nemdefiniltuk ket, a nem definiltak kz kerlnek. Ezek a vltozk csak akkor kerlnek a definiltakkz ksbb is, ha a user rtket ad neki.

    A track_vars s a register_globals konfigurcis paramterek (PHP.INI-ben) befolysoljk asession vltozk trolsnak s visszalltsnak mdjt.

    Ha a track_vars engedlyezve van s a register_globals tiltva, akkor csak a$HTTP_SESSION_VARS globlis asszociatv tmbt lehet session vltozknak belltani. Avisszalltott vltozk is csak ebben a tmbben lesznek elrhetk. (Ebben az esetben egy visszaltottvltoz rtkt az albbi mdon tudjuk elrni:

    Ha a register_globals engedlyezett, akkor minden globlis vltozt session vltoznak tudunkelmenteni, s a session vltozk a kvetkez krs sorn automatikusan globlis vltozkk vlnak.

    Ha a track_vars s a register_globals is engedlyezettek a PHP.INI-ben, akkor mind a kt fentimdszert hasznlhatjuk, azaz a $HTTP_SESSION_VARS elemei s a globlis vltozk ugyanazokat azrtkeket tartalmazzk majd.

    Hogyan kezelhetjk a session id-ket?Cookie - stikkel

    URL parameterekkel

    A session modul mind a kt vltozatot tmogatja. A cooki-k az optimlisak, viszont vannak olyankliensek, akik nem tmogatjk a cooki-k elhelyezst a gpkn biztonsgi okokbl, radsul ilyenkor abngsz s a szerver kztt vndorolnak adatok is. Ez biztonsgi problmkat vet fel. A msodikmdszer esetn a session id az URL rsze.

    A PHP kpes hajlkonyan kezelni a krdst, ha megfelelen fordtottuk (--enable-trans-sidkapcsolval) Ebben az esetben a relatv URI-k megvltoznak automatikusan s tartalmazni fogjk a

    session ID-t (=SID). Ms esetben hasznlhatjuk a SID konstanst, amely a session_name=session_IDvagy egy res stringet tartalmaz

    (pl. PHPSESSID=8e1f5ff69434aea7ecab51da33314b53&PHPSESSID=8e1f5ff69434aea7ecab51da33314b53 )

    Az albbi pldban bemutatjuk, hogyan lehet regisztrlni egy vltozt s egy URI-hoz hozzrendelni asession ID-t, felhasznlva a SID-et.

    Plda 3. Egy user bejelentkezseit szmolja le ez a plda

    Hello visitor, you have seen this page times.

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    42/149

    42

    # the is necessary to preserve the session id# in the case that the user has disabled cookies?>

    To continue,

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    43/149

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    44/149

    44

    vgignzzk a file-ok neveit. A sess_ kezdet filenevek session file-okat takarnak, azoknakmegnzzk s a jelenlegi idt s az utols hozzfrsnek idejt kivonva egymsbl megnzzk, hogylejrt-e az lete.

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    45/149

    45

    Egy session kezel mkdse - pldaA tovbbiakban megnzzk egy MySQL-es sessionkezel mkdst. A mkdshez szksg van azalbbi adatbzis szerkezetre:

    CREATE TABLE sessions (sesskey char(32) not null,exp int(11) unsigned not null,value text not null,PRIMARY KEY (sesskey)

    );

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    46/149

    46

    $qry = "DELETE FROM sessions WHERE sesskey = '$key'";$qid = mysql_query($qry, $SESS_DBH);

    return $qid;}

    function sess_gc($maxlifetime) {global $SESS_DBH;

    $qry = "DELETE FROM sessions WHERE exp < " . time();

    $qid = mysql_query($qry, $SESS_DBH);

    return mysql_affected_rows($SESS_DBH);}

    session_set_save_handler( "ss_open", "ss_close", "ss_read","ss_write","ss_destroy","ss_gc");?>

    A fenti kt esetben mindannyiszor hasonl paramterekkel kell meghvni a fggvnyeket:

    Ss_open(C:\TEMP,PHPSESSID) ezeket adja t a vltozknak

    The is not necessary, if--enable-trans-sidwas used to compile PHP.

    A sessionkezelsi rendszer tbb olyan belltst figyelembe vesz, amelyek a PHP.INI-jben tallhatk.

    session.save_handler a session kezeljt lltja be. Default files.

    session.save_path meghatrozza a session file-ok trolsnak helyt. Ha a default filekezelthasznlod, akkor a /tmp. Knyvtr lesz az. Windowsos rendszeren clszer a TEMP krnyezeti vltoztmegadni, pldul c:\TEMP.

    session.name a session ltal hasznlt cookie nevet hatrozza meg. Default PHPSESSID.

    session.auto_start meghatrozza, hogy a session automatikusan induljon-e el, ha a PHP krslefutott. Default 0 (nem indul el).

    session.cookie_lifetime meghatrozza, hogy a cookie hny msodpercig ljen a bngsz indulsautn. A 0 azt jelenti, hogy, amg a bngsz fut. Default 0.

    session.serialize_handler defines the name of the handler which is used to serialize/deserializedata. Currently, a PHP internal format (name php) and WDDX is supported (name wddx). WDDX isonly available, if PHP is compiled with WDDX support. Defaults to php.

    session.gc_probability meghatrozza, hogy a gc (garbage collection) szemtgyjt rutin milyenszzalkkal induljon el. Az elmlt sessionok file-jai a temp knyvtrban ott maradnak s ha egy j PHPkrst kap a rendszer, akkor ennek a vltoznak az rtktl fggen statisztikai valsznsggel elindula rgi session file-ok kitrlse. Ha az rtk kicsi, akkor sok session fle is felgylhet, hiszen ritkn fut le aszemtszeds, ha nagy, akkor gyakran fut az algoritmus, teht lassab lesz a kiszolgls. Default rtk 1,tesz krnyezetben 5 10.

    session.gc_maxlifetime specifies the number of seconds after which data will be seen as 'garbage'and cleaned up.

    session.referer_check determines whether session ids referred to by external sites will beeliminated. If session ids are propagated using the URL method, users not knowing about the impactmight publish session ids. This can lead to security problems which this check tries to defeat. Defaults to0.

    session.entropy_file gives a path to an external resource (file) which will be used as an additionalentropy source in the session id creation process. Examples are /dev/random or /dev/urandom which

    are available on many Unix systems.

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    47/149

    47

    session.entropy_length specifies the number of bytes which will be read from the file specifiedabove. Defaults to 0 (disabled).

    session.use_cookies specifies whether the module will use cookies to store the session id on theclient side. Defaults to 1 (enabled).

    session.cookie_path specifies path to set in session_cookie. Defaults to /.

    session.cookie_domain specifies domain to set in session_cookie. Default is none at all.

    session.cache_limiter specifies cache control method to use for session pages(nocache/private/public). Defaults to nocache.

    session.cache_expire specifies time-to-live for cached session pages in minutes, this has no effectfor nocache limiter. Defaults to 180.

    A PHP4 sessionkezelje

    session_start Session adatok inicializlsa

    session_destroy Session adatok megszntetse

    session_name Session nv lekrdezse, belltsa

    session_module_name Session kezel modul nevnek lekrdezse/belltsa

    session_save_path Session mentsi knyvtr lekrdezse belltsa

    session_id Sessin ID (SID) lekrdezse/belltsa

    session_register Register one or more variables with the current session

    session_unregister Unregister a variable from the current session

    session_unset Session vltozk felszabadtsa

    session_is_registered Megmondja, hogy egy vltoz regisztrlva van-e a sessionben

    session_get_cookie_params Beolvassa a session cookie parametereketsession_set_cookie_params Belltja a session cookie parametereket

    session_decode Dekdolja a session adatokat egy stringbl

    session_encode Stringbe trolja le a session adatokat

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    48/149

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    49/149

    49

    A kvetkez oldalt betltve a bngszbe a stik automatikusan megjelennek a $_COOKIE tmbben, sazokat az rtkeket lehet hasznlni. Ha a register_globals paramtert bekapcsoljuk a php.ini-ben, akkorautomatikusan ltrejnnek a megfelel vltozk, de korbban emltettk, hogy ennek a paramternek abekapcsolsa nem javallott.

    Ha a $_COOKIE tmb rtkeit debuggols cljbl ki akarjuk iratni, akkor hasznljuk a kvetkezutastst:

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    50/149

    50

    12 Konverzi Adattpusok kzttA PHP automatikusan, s meglehetsen szabadon kezeli a tpusokat. Nha szksg lehet egy bizonyosadattpus alkalmazsra. Ekkor hasznlhatjuk az albbi mdszereket:

    Elrjuk a tpust, mint a C-ben:

    $a = (float) $b;

    $c = (int) $c;

    Hasznlhatjuk a boolsettype ( $valtozo, tipus) fggvnyt. Ekkor a tetszleges tpus $vltoz-ttkonvertljuk az adott tpusra. A konverzi sikeressgrl bool eredmnyt ad vissza a fggvny.

    Lehetsges tipus rtkek:

    "boolean" (vagy a PHP 4.2.0 ta "bool") "integer" (vagy a PHP 4.2.0 ta "int") "float" (csak a PHP 4.2.0 ta, korbban "double") "string"

    "array" "object" "null" (a PHP 4.0.8 ta)

    TRUE rtket ad siker esetn, FALSE rtket egybknt.

    $ize = "5valami"; // string$valami = true; // boolean

    settype($ize, "integer"); // $ize most 5 (integer)settype($valami, "string"); // $valami most "1" (string)

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    51/149

    51

    13 TmbkA tmbk, azok klnbz lehetsgei, s az azok kr felsorakoztatott fggvnyek a PHP programozsegyik legerteljesebb eszkzrendszert alkotjk, ugyanakkor rendkvl egyszeren s knnyednhasznlhatk. A tmb vltozk halmaza, melyeket a tmbn bell sorban trolhatunk s a teljesadathalmazt egyszerre is kezelhetjk, ugyanakkor a tmb elemeihez kln-kln is hozzfrhetnk.Fontos tulajdonsga a tmbknek, hogy egy tmbn bell az elemek tpusa klnbz lehet. Egy tmb

    elemeit legegyszerbben explicit mdon, elemenknt tlthetjk fel:$tomb[1] = "dBase";$tomb[2] = "FoxPro";$tomb[4] = "Clipper";$tomb[5] = 42;

    Lthat, hogy a tmb elemeinek megadsakor nem szksges a sorrendisget szigoran betartani. Egytmb elemeihez a fentieknl egyszerbben is, a tmbindex hasznlata nlkl is lehet elemeket adni:

    $tomb[] = "Basic";$tomb[] = "FoxPro";

    Ily mdon a tmb vghez kapcsoldnak az j elemek, az index rtke pedig az legutols indexelemnl

    eggyel magasabb lesz. Hasonlan m

    kdik az array_push() fggvny, azzal a klnbsggel, hogy egyutastson bell tbb rtket is hozzfzhetnk a tmbhz:

    array_push($tomb, "Cobol", "Fortran");

    Szp lassan dagad tmbnk a fenti utastsokat kveten mr gy nz ki:

    Array(

    [1] => dBase[2] => FoxPro[4] => Clipper[5] => 42[6] => Basic[7] => FoxPro

    [8] => Cobol[9] => Fortran)

    Termszetesen a tmbk rtkeinek megadshoz hasonlan frhetnk hozz a tmbelemekhez,azonban a fent emltett array_push() fggvny prja, az array_pop() fggvny is rendelkezsnkre ll,mely azonban nemcsak egyszeren a tmb utols elemt adja vissza rtkl, hanem a tmb elemeinekszmt is cskkenti az utols elemmel:

    $nyelv1 = $tomb[1]; // $nyelv1 rtke "dBase"$nyelv2 = $tomb[4]; // $nyelv2 rtke "FoxPro"$nyelv9 = array_pop($tomb);// $nyelv9 rtke "Fortran" s a tmb nyolc elem lesz

    Bonyoltsuk egy kicsit a dolgokat. Ezidig a tmbnk egy dimenzis volt, azonban a PHP nyelvben a

    tmbk kett vagy akr tbb dimenzisak is lehetnek. Az rtkads legegyszerbb mdja ilyen esetbenis az explicit rtkads:

    $auto[1][1] = "Maserati";$auto[1][2] = "olasz";$auto[2][1] = "Renault";$auto[2][2] = "francia";$auto[3][1] = "Mercedes";$auto[3][2] = "nmet";

    a tmb valahogyan gy fog kinzni:

    Array(

    [1] => Array

    ([1] => Maserati[2] => olasz

  • 8/14/2019 Fbin Zoltn - Tanuljunk PHP-l (2005, 149 oldal)

    52/149

    52

    )[2] => Array

    ([1] => Renault[2] => francia

    )[3] => Array

    ([1] => Mercedes[2] => nmet

    ))

    Ilyen s ehhez hasonl tmbk ltrehozsra, azonban sokkal tmrebb s olvashatbb mdszer azarray() fggvny hasznlata. Ez a fggvny a paramterknt megadott rtkeket tmb formban adjavissza. gy a fenti rtkadssal pontosan megegyez eredmnyt ad a kvetkez:

    $auto[1] = array( "Maserati" , "olasz" );$auto[2] = array( "Renault" , "francia" );$auto[3] = array( "Mercedes" , "nmet" );

    Ahogyan azonban a tmbelemek tpusaira vonatkozan nincsenek tl szigor megktsei a PHPnyelvnek, ugyangy nem kezeli szigoran a tbbdimenzis tmbk elemszmait sem a PHP. Az albbirtkads teljesen helyes eredmnyt ad:

    $auto[1] = array( "Maserati" , "olasz" );$auto[2] = array( "Renault" , "francia" , "406", "206" );$auto[3] = array( "Mercedes" , "nmet" , "E320",

    "Vito" , "Sprinter kisteheraut" );

    Termszetesen az array_pop() s az array_push() fggvnyek az array() fggvnnyel tvzve tbbdimenzis tmbk esetn is hasznlhatk.

    array_push( $auto, array("Citroen" , "francia" , "ZX" , "Xsara");

    A fenti esetekben a tmb elemei azok sorszmaival voltak azonostva. A PHP ismeri az asszociatv

    tmbk fogalmt is. Az asszociatv tmbk rendkvl hasznos s sokoldal elemei a PHP nyelvnek. APERL nyelvben hasznlt hash tpus tmbkhz hasonlan mkdnek. A tmbelemekre val hivatkozsilyen esetben nem sorszmmal, hanem egy indexelem (kulcs) segtsgvel trtnik, egyszeren gy,hogy a sorszm helyre, az indexelemet helyezzk.

    $tomb["els"] = "Kis Gedeon";$tomb["msodik"] = "Nagy Elemr";

    Fggetlenl attl, hogy a tmb elemeinek milyen sorrendben adtunk rtket, az elemeket az indexkulcssegtsgvel rhetjk el, s ez nem fgg attl, ha a tmbhz hozzfznk, vagy attl elvesznk egyelemet. j elem brmikor hozzfzhet a tmbhz:

    $tomb["harmadik"] = "Kukonya Berk";

    Az asszociatv tmbk lehetnek egydimenzisak, mint a fenti pldban, de l