php programozás kezdoknek

Upload: adrianfenyvesy

Post on 12-Oct-2015

67 views

Category:

Documents


4 download

TRANSCRIPT

  • 5/21/2018 PHP Programoz s Kezdoknek

    1/95

    1

    Tanuljunk PHP-l kezdknek

    Fbin Zoltn2005

    v0.81

  • 5/21/2018 PHP Programoz s Kezdoknek

    2/95

    2

    Tartalomjegyzk1 BEVEZETS....................................................................................................................................................................4

    1.1 MIRE J EZ A JEGYZET?.............................................................................................................................................4 1.2 1.2APHPRVID TRTNETE ..................................................................................................................................4 1.3 MI A PHP?................................................................................................................................................................5

    2 MILYEN RENDSZEREN HASZNLHAT A PHP?................................................................................................7

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

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

    3.1.1 Konfigurls Apache WEB szerver 1.3.xx vagy 2.0.xx esetn.............................................................................8

    4 ESZKZK A PHP HASZNLATHOZ...................................................................................................................9

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

    6 A PHP NYELVI SZABLYAI.....................................................................................................................................11

    7 VLTOZK, ADATTPUSOK...................................................................................................................................12

    7.1 AVLTOZ NEVE....................................................................................................................................................12

    7.2 AVLTOZ RTKE ................................................................................................................................................12 7.3 AVLTOZK S KIFEJEZSEK TPUSAI ....................................................................................................................12 7.4 ELRE DEFINILT VLTOZK..................................................................................................................................14

    7.4.1 PHP Core A PHP rendszer alapvetvltozinak a listja............................. Hiba! A knyvjelznem ltezik.7.4.2 Environment......................................................................................................................................................14 7.4.3 PHP Variables - A PHP vltozk listja...........................................................................................................14

    7.5 KONSTANSOK..........................................................................................................................................................15

    8 ALAPVET#UTASTSOK........................................................................................................................................16

    8.1 ECHO.......................................................................................................................................................................16 8.2 FORMZOTT KIRS ................................................................................................................................................17 8.3 AKIIRATS GYAKORLSA.............................................................................. HIBA!AKNYVJELZ#NEM LTEZIK.

    9

    OPERTOROK (M%VELETEK)...............................................................................................................................199.1 STRINGEK KZTTI M#VELETEK.............................................................................................................................19

    9.2 ARITMETIKAI M#VELETEK......................................................................................................................................19 9.3 HOZZRENDELS,RTKADS ...............................................................................................................................19 9.4 NVEL/CSKKENTOPERTOROK........................................................................................................................19 9.5 LOGIKAI OPERTOROK............................................................................................................................................20 9.6 SSZEHASONLT OPERTOROK.............................................................................................................................20 9.7 BITORIENTLT OPERTOROK..................................................................................................................................20 9.8 HIBAKEZELOPERTOROK.....................................................................................................................................21 9.9 VGREHAJT OPERTOROK....................................................................................................................................21

    10 VEZRLSI SZERKEZETEK....................................................................................................................................22

    10.1 ELGAZSOK..........................................................................................................................................................22 10.2 CIKLUSOK...............................................................................................................................................................24 10.3 ELGAZSOK S CIKLUSOK HASZNLATA HTMLKDDAL KEVERVE.....................................................................26 10.4 PHPLAPOK BESZRSA,MAKRO-K HASZNLATA...............................................................................................26 10.5 TVOLI FILE-OK HVSA .........................................................................................................................................27

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

    11.1 FGGVNYEK..........................................................................................................................................................28 11.2 PARAMTERTADS ...............................................................................................................................................28 11.3 FGGVNYEK VISSZATRSI RTKE......................................................................................................................29 11.4 VLTOZK LETTARTALMA S LTHATSGA.......................................................................................................29 11.5 VLTOZK TADSA LAPOK KZTT .....................................................................................................................30

    11.5.1 Header utasts.............................................................................................................................................31 11.5.2 GET metdus................................................................................................................................................31 11.5.3 POST metdus..............................................................................................................................................32 11.5.4 $_SESSION vltozk.....................................................................................................................................35 11.5.5 COOKIE-k (stik).........................................................................................................................................36

  • 5/21/2018 PHP Programoz s Kezdoknek

    3/95

    3

    12 KONVERZI ADATTPUSOK KZTT................................................................................................................38

    13 TMBK.......................................................................................................................................................................39

    14 SZTRINGEK, SZVEGEK MANIPULCIJA......................................................................................................42

    15 FORMOK /%RLAPOK INTERAKTV PROGRAMOK RSA..........................................................................46

    15.1.1 nmagukat meghv #rlapok........................................................................................................................46

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

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

    18 ADATBZISOK............................................................................................................................................................52

    18.1 MYSQL..................................................................................................................................................................52 18.2 POSTGRES SQL.......................................................................................................................................................52 18.3 ADATBZIS-KEZELS NATV MDON.......................................................................................................................53 18.4 TIPIKUS FELADATOK ADATBZIS-KEZELSNL .......................................................................................................55 18.5 HIBAKEZELS..........................................................................................................................................................58 18.6 ADATBZISKEZELS MSKPPENABSZTRAKCIS RTEGEK,ADODB,ODBC....................................................58

    18.6.1 Az absztrakcis rteg....................................................................................................................................58 18.6.2 ODBC programcsomag................................................................................................................................58 18.6.3 Az ADODB rteg...........................................................................................................................................59

    18.7 TOVBBI ABSZTRAKCI ..........................................................................................................................................62 18.8 IDKEZELSE PHPMYSQLESETN....................................................................................................................63 18.9 SOKIG FUT PROGRAMOK.....................................................................................................................................64

    19 FILE-OK, KNYVTRAK KEZELSE A SZERVEREN S TVOLI URL-EKEN..........................................65

    LTOGATK SZMA:

  • 5/21/2018 PHP Programoz s Kezdoknek

    4/95

    4

    1 Bevezets

    1.1 Mire j ez a jegyzet?A jegyzetnek az a clja, hogy bevezesse az olvast a ma robbansszer%en terjed'PHP nyelv vilgba, megtantsaaz alapvet'eljrsokat, fogalmakat s kpess tegye az olvast sajt PHP scriptek rsra. Hasznljuk tovbb aSzily Klmn M%szaki Kzpiskolban.

    Ez nem teljes PHP dokumentci! Teljes dokumentcit az Internetr'l lehet beszerezni, rszben magyar nyelvenaz albbi cmekr'l:

    http://www.php.netdokumentci angolul

    http://hu.php.net/docs.phpoldal magyarul.

    A jegyzetben tallhat pldaprogramokat, tleteket, rszben az albbi forrsokbl szemezgettem s eztonksznetet mondok nekik :

    http://hu.php.netA PHP site magyar oldalai

    [email protected] PHP lista

    http://php4.x3.hu, Korss Istvn (KI),

    [email protected] cikksorozata a PC-World-b'l, resource-ok PHP s egyb tmkban

    http://phpbuilder.com/columns/ying20000602.php3?page=1sessionok, Ying Zhang cikke

    http://phpmailer.sourceforge.netEmailklds

    http://php.weblogs.com/ADODBADODB adatbziskezels

    http://adodb.sourceforge.net

    http://pear.php.net Pear programcsomag letltse

    http://smarty.php.net Smarty template rendszer

    http://www.phpclass.orgPHP alkalmazsok s class-ok feltallsi helye

    1.2 A PHP rvid trtneteA PHP trtnete 1994 'szre nylik vissza, amikor a munkt keres 'Rasmus Lerdorf egy Perl CGI szkriptethasznlt a Web odalt felkeres 'k regisztrlsra. A ltogatkat naplz kdot "PHP-tools for Personal HomePage"-nek nevezte el. Az els 'nyilvnos vltozat gy 1995 tjn ltott napvilgot. Ez mg csak nhnyegyszer%bb feladatra volt hasznlhat, tbbek kztt szmllt, vendgknyvet tartalmazott.

    A PHP fejlesztse a Toronti Egyetemen folytatdott, ahol Rasmus Lerdorf olyan interfszt fejlesztett ki, amineksegtsgvel a HTML kdba gyazott specilis utastsok kzvetlenl rtk el az egyetemi adatbzisokat. Arendszert Rasmus "Form Interpreter"-nek, FI-nek nevezte el. Az FI-ben hasznlt elv mr megegyezett a PHPalapelvvel, miszerint a HTML kdba begyazott utastsokat rtelmezte s hajtotta vgre az FI rtelmez 'je.

    Ks'bb a PHP s az FI sszehzastsbl szletett meg az els 'szles krben hasznlt parancsrtelmez 'aPHP/FI. Ez tartalmazta a PHP s az FI addigi szolgltatsait, s 't az mSQL adatbzisok elrst is tmogatta.Rasmus eleinte eljtszadozott a gondolattal, hogy a PHP-t kereskedelmi termkk teszi, de olyan komolymennyisg%visszajelzst kapott ms programozktl, klnbz 'kiegsztseket s hibajavtsokat kldve aPHP-hez, hogy letett ebbli szndkrl. A PHP fejl'dshez s sokrt%sghez nagymrtkben hozzjrult kls'programozk szabad s ingyenes rszvtele a rendszer fejlesztsben. A PHP a mai napig is ingyenes termk, sez valban nagyon j dolog.

    Az els'verzi megjelenst'l kezdve a PHP felhasznli tbora tretlenl nvekedett. 1996-ban kzel 15.000Web oldalon hasznltk a PHP/FI-t, 1997-ben mr tbb mint 50.000 Web oldalon. Ebben az vben kezd 'dtt el aPHP sokkal jobban szervezett tovbbfejlesztse. A PHP/FI-t rtelmez 'jt szinte az alapoktl kezdve jrartk,temelve a PHP/FI-ben alkalmazott technikkat s kdot, de szmos jat is hozztve. gy alakult ki a PHP 3-asvltozata, ami gyakorlatilag rendelkezett mindazokkal a kpessgekkel, amik a PHP npszer%sgt megalapoztk.A PHP fejl'dse azonban nem ll meg. Jelenleg az 5.1.x vltozatnl tart a fejleszts, de ksznhet 'en a "szabadszoftver" filozfinak nem valszn%, hogy itt megreked.

    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://adodb.sourceforge.net/http://pear.php.net/http://smarty.php.net/http://www.phpclass.org/http://www.phpclass.org/http://smarty.php.net/http://pear.php.net/http://adodb.sourceforge.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/
  • 5/21/2018 PHP Programoz s Kezdoknek

    5/95

    5

    1.3 Mi a PHP?Egy majdnem ltalnos cl programozsi nyelv, amely mra sokfle terleten alkalmazhat, amit a Webenkeresztl meg lehet oldani. Dinamikus oldalak, adatbzis-kezels, akr gyviteli alkalmazsok, levelezs,portlok, grafikai alkalmazsok, file-kezels, tvoli adminisztrci, stb.

    Miel'tt a PHP m %kdst rszleteznnk, meg kell ismerkedni egy kicsit a Web-en lv 'alkalmazsoklelkivilgval.

    Amikor a bngsz'ben berjuk egy olyan oldal nevt, s letltjk azt, akkor az Interneten lv'WEB szerver kldiel a bngsz'nknek a kvnt oldalt. Ez az oldal egy HTML oldal, egy ASCII szveg llomny, amely megrkezvea bngsz'nkre azt a bngsz'rtelmezi, s a tartalmt megjelenti.

    Ezek statikus oldalak, mivel a kvetkez 's az utna kvetkez'krsekkor mindig pontosan ugyanazt az oldaltfogjuk jra meg jra megkapni, hiszen a szerveren ez egy file. Abban az esetben, ha azt szeretnnk, hogy az oldaltartalma vltozzon, azaz dinamikus oldalt szeretnnk, valamilyen mdon az oldalt a szerveren ltre kell hozni,mdostani kell. Ennek rdekben ki kell egszteni a WEB-szervert olyan alkalmazsokkal, amelyek az oldalkrsekor futs kzben lltjk el'az oldal tartalmt, majd odaadjk a szervernek, amely az eredmnyt tovbbtjaa bngsz'fel. Az ilyen programokat sszefoglal nven CGIprogramoknak hvjuk, ami a Common GatewayInterface kifejezs rvidtse. Ezek a programok teht j funkcionalitssal b 'vtik ki a WEB szervereket. Alegfontosabb ebben az, hogy ez ltal a bngsz 'k interaktv mdon tudnak kapcsolatot teremteni a WEB

    szerverrel, adatokat tudnak bevinni neki, a bevitt informci alapjn vltozik a visszaadott rtk. Az ilyenrendszer m%kdse olyan, hogy a bngsz 'ben bert informcit megkapja a WEB szerver, tadja a CGIprogramnak, ami az informci birtokban feldolgozza s visszakldi a WEB szervernek, amely tovbbtja abngsz'fel HTML kd formjban. A CGI programok vagy a szerver opercis rendszern futni kpesprogramok, amelyeket valamilyen nyelven, pl. C-ben rtak meg s fordtottak le, vagy gynevezett scriptek,amelyek egy rtelmez'program kzrem%kdsvel futnak.

    A PHP programokat egy ilyen rtelmez futtatja a szerveren akkor, ha a bngsz 'PHP, PHP3, PHP4 , vagyhasonl kiterjeszts %file-okra hivatkozik. Ekkor a WEB szerver meghvja a PHP rtelmez 'programot(interpretert), amely rtelmezi a krdses oldalt, majd az eredmnyt Web oldal formjban visszaadja a WEBszervernek, amely tovbbtja a bngsz'nek.

    Teht a PHP program egy WEB szerveren fut script, amelynek az eredmnye egy WEB bngsz 'n keresztl

    jelenik meg.A Javascriptek, a Vbscriptek JAVA appletek illetve Flash movie-k a bngsz'n hajtdnak vgre, a PHP scriptek aszerveren. A PHP script a bngsz'n soha nem jelenik meg (ha megjelenik, akkor baj J ), csak az a HTML vagyegyb kd, amelyet el'llt.

    A bngsz's a szerver kztti kommunikci folyamata:

    A bngsz'be a felhasznl ber egy URL-t, rkattint egy linkre, ekkor ugynevezett GET metdus krstkld el a bngsz'a szervernek, vagy egy %rlapon rkattint az elklds gombra, ekkor POST metduskrst kld a szervernek a bngsz'. A krs tulajdonkppen egy adatcsomag. A krs rszei:

    o A krsben elmegy az URL, a metdus fajtja (POST vagy GET), a hasznland protokol (HTTP1.0 vagy HTTP 1.1)

    o

    POST metdus esetn a krsben elmennek az %rlapban kitlttt adatmez'k adatai

    o A bngsz'neve, s specilis tulajdonsgai

    o A bngsz'ltal lekezelni kpes specilis adatfajtk szabvnyos nevei

    o A bngsz'ben trolt s az adott domainhez tartoz cookie-k adatai

    Ha az URL a szerveren .html, .htm ,.gif, .jpg, .AVI, .mpg, stb file-t jell meg, akkor a WEBszerverkikeresi a sajt httrtrn a megfelel 'fjlt s elkldi a bngsz 'nek klnbz 'plusz, gynevezettfejlcadatok (header)ksretben. A headerben lv'adatok az albbiak lehetnek:

    o A kdols nyelve, a cache-ek m%kdsre vonatkoz parancsok,

    o

    Az esetlegesen elkldend'cookie-ko A SESSION-khz tartoz un. session cookie-k.

  • 5/21/2018 PHP Programoz s Kezdoknek

    6/95

    6

    Ha az URL .php kiterjeszts%file-t jell, akkor a webszerver tadja az URL-t a PHP motornak.

    o A PHP motor megkeresi a httrtron a megadott file-t

    o Betlti szintaktikailag ellen 'rzi a betlttt php file tartalmt, majd elkezdi rtelmezni svgrehajtani azt.

    o Ha szksges a PHP-hez konfigurlt egyb modulokat elindt, kommunikl velk, mint pl. egySQL szerver

    o

    A PHP kd segtsgvel a kimenetre lehet kldeni header parancsokat, cookie-k s session-kadatait, miel'tt brmi HTML kdot kikldene a PHP motor.

    o A vgrehajts sorn a PHP oldalakon keverni lehet a HTML s a PHP kdot. Ha az rtelmez 'HTML kd rszt tall, akkor azt a kdot kikldi a kimenetre vltozatlanul.

    o A program futsa sorn kir utastsokkal el'lltja a HTML kimenetet s kikldi a kimenetre.

    o A PHP motor ltal el'lltott HTML kimenetet a webszerver kapja meg.

    o A WEbszerver a tartalmat kikldi a bngsz'nek.

    A bngsz'a megkapott informcit betlti s rtelmezi.

    o Ha a kdban javascript, flash, java vagy egyb nem kifejezetten HTMl kd tallhat, akkor a

    bngsz'elindtja a kliens szmtgpre teleptett megfelel'feldolgoz modult.

  • 5/21/2018 PHP Programoz s Kezdoknek

    7/95

    7

    2 Milyen rendszeren hasznlhat a PHP?

    2.1.1 Milyen opercis rendszer?Ltezik az sszes elterjedt opercis rendszeren, Win32, Linux, Solaris, BSD, Netware. A PHP hazsnlathozltalban szksg van egy WEB szerverre is. Gondolva a tanulsra s az ltalban meglv 'szmtstechnikaikrnyezetre n Linux, W2000 vagy Windows XP rendszert javaslok.

    2.1.2 Milyen WEB szervert?A PHP teleptse el'tt mindenkppen szksgnk lesz egy m %kd'WEB szerverre. Ehhez a Windows 2000 sWindows XP alatt hasznlhatjuk a Microsoft Internet Information Server nev %szoftvert, amely a rendszer rsze,vagy az internetr'l letlttt Apache WEB szervert.

    Mi az Apache WEB szervert ajnljuk, annak egyszer%teleptse, egyszer%belltsa miatt. Megjegyezzk, hogyaz Apache belltsa majdnem ugyanaz LINUX alatt s Win32 alatt is, teht ennek a rendszernek a hasznlatakornagyon kis klnbsgek kellenek a LINUX-os verzira val tllshoz.

    n Windows XP-t Apache 2.0.xx rendszert hasznlok. Lteznek el 're sszelltott s nagyon egyszer %entelepthet'csomagok windows-ra. Ilyen pl. a BigApache ( http://www.bigapache.org), illetve a tovbbiakbanfelsorolok mg ilyen rendszert.

    PHPTriad: http://Sourceforge.net/phptriadUniform WEB server http://www.uniform.server.com

    Ms WEB szerverek. Amelyek tudnak futtatni PHP-t:

    AbysWS Personal WEB szerver: http://www.aprelium.com

    http://www.bigapache.org/http://sourceforge.net/phptriadhttp://www.uniform.server.com/http://www.aprelium.com/http://www.aprelium.com/http://www.uniform.server.com/http://sourceforge.net/phptriadhttp://www.bigapache.org/
  • 5/21/2018 PHP Programoz s Kezdoknek

    8/95

    8

    3 A PHP4 teleptse (Win32 vltozat)A PHP teleptse opercis rendszerenknt s WEB szerverenknt ms s ms. A teleptsr'l tovbbi informcia http://hu.php.nets a http://www.php4win.deoldalakon tallhat.

    Ha a korbban lert rendszert akarunk telepteni, akkor ltalban egy egyszer %windowsos program telweptsnkell vgigmennnk. A telepts utn lesz valahol egy PHP nev%knyvtrunk.

    Ha az Apache s a PHP tovbbi konfigurlsra van szksg, akkor egy PHP.INI nev %file-ban kell ezt megtenni,amelynek a Windows knyvtrban a helye.

    Az Apache konfigurlshoz az apache/conf knyvtrban a httpd.conf file-t kell lltani. Minden llts utn azApache szervert jra kell indtani.

    A PHP4 esetn a php4ts.dll-t a C:\WINDOWS\SYSTEM32 vagy a C:\WINNT\SYSTEM32 knyvtrba kelltenni.

    3.1.1 Konfigurls Apache WEB szerver 1.3.xx vagy 2.0.xx esetn1. 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.

    2.

    Keresd meg a DirectoryIndex parancsot a konfigurcis llomnyban s egsztsd ki az albbimdon

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

    3. Indtsd jra az Apache szervert,

    4. rd meg a kedvenc ASCII editorod segtsgvel az albbi tartalm scriptet, mentsd el a szerveredgykrknyvtrba, majd hvd meg a bngsz'ben az albbi mdon:

    5. Prbld ki az albbi programocskt a Bngsz'ddel a szervered root knyvtrbl:

    http://localhost/proba.php

    Ennek hatsra lefut a script s kirja a bngsz'dbe az ppen hasznlt php rendszer rengeteg paramtert.

    http://hu.php.net/http://www.php4win.de/http://localhost/proba.phphttp://localhost/proba.phphttp://www.php4win.de/http://hu.php.net/
  • 5/21/2018 PHP Programoz s Kezdoknek

    9/95

    9

    4 Eszkzk a PHP hasznlathozFelmerl a krds, hogy mi kellhet a PHP hasznlathoz a fentieken kvl. A vrakozssal ellenttben nem sok,de azrt itt sszefoglalom a lehet'sgeket:

    Kell egy ASCII szvegszerkeszt , kezdetben j a NOTEPAD.EXE a Windowsbl is. Ha ennl komolyabbravgysz, akkor vlaszd mondjuk az EditPlus nev %editort, amely a http://www.editplus.comcmr'l tlthet 'le.Szmozza az oldalakat, s mg a szintaktikt is sznezi.

    Ha az oldalak bonyolultak, akkor tudom ajnlani a ZEND alkalmazscsomagot, amely fizet 's, de nagyon j(http://ww.zend.com) vagy a phpEdit nev%fejleszt'eszkzt (http://www.phpedit.com).

    Ezen kvl sok ms hasonl editor van forgalomban. A nagyok kzl tudnm ajnlani a MacromediaDreamweaver Ultradev 4 vagy a Dreamweaver MX csomagot is.

    Nem rt, ha van egy j HTML editorod, mert a php oldalak jelent 's rszben azrt HTML kdbl is llnak. Afreeware vagy shareware programok kztt nagy a vlasztk van, pl. CoffeCup.

    Kell egy bngsz ', ami adott a Windows-okban Internet Explorer 4/5/6-ot. Az IE azonban nem teljesenszabvnyos, ezrt alternatvaknt hasznlhat a Firefox-ot ( www.mozilla.org), a Mozilla ( www.mozilla.org)illetve az Opera, illetve brmilyen kedvenc bngsz'. Az opera letlthet'a www.opera.com-rl.

    Szksged lesz egy j Help-re. n a http://hu.php.net/docs.phpoldalrl a CHM (Windows-os Help file)vltozatot javaslom, de hasznlhatod a HTML verzikat is, s ha gyors Internet kapcsolatod van, akkor aInternetr'l is lehet online mdon hasznlni 'ket. A HTML verzi sokkal tbb pldt tartalmaz a hozzszlk nagyszma miatt.

    Nem rt, ha a HTTP-r 'l is van egy j Help-ed. A http://www.htmlhelp.com/-rl letlthet'tbbfle formban,kztk Windows-os Help formjban a HTML nyelv szintaktikja.

    Elkerlhetetlen, hogy a PHP fejleszt 'k megismerkedjenek a Javascript szintaktikjval is. A Javascriptekhasznlathoz Javascript helpre is szksg van. Erre a clra tbb forrs ltezik, de sajnos magyar nyelven sWindows-os Help formjban nem tudok rla: Taln clszer %a kvetkez 't Web oldalt hasznlnihttp://weblabor.hu/leiras/javascr/vagy megnzni az albbi oldalt:

    Szksg lehet egy j HTML / Javascript knyvre, pldul

    Bcz Pter Szsz Pter: A vilghl lehet'sgei

    s a CSS szabvnyok ismeretre, mert a formzs manapsg korszer %s elterjedt mdja CSS-en alapul. Ahttp://www.weblabor.huwebsiterl kiindulva tallunkmegfelel'CSS lerst is.

    Ha adatbzisokat akarsz hasznlni a PHP oldalaidon, akkor windowsos krnyezetben ajnlom a Microsoft Accesshasznlatt un. ODBC drivereken keresztl, vagy az SQLite ( www.sqlite.org) adatbziskezel't, amely kicsi,gyors, ingyenes, s a PHP5 rsze, illetve a MySQL-t, ha ( www.mysql.org) ha PHP4-et vagy a MySQLi-t, haPHP5-t hasznlsz.

    A hatkony fejlesztshez a ks 'bbiekben clszer%megismerkedni a Pear ( http://pear.php.net) oldalon tallhatrutinknyvtrral, az ADODB adatbzis absztrakcis rteggel ( http://adodb.sourceforge.net), a Smarty

    sablonrendszerrel (http://smarty.php.net).

    http://www.editplus.com/http://ww.zend.com/http://www.phpedit.com/http://www.mozilla.org/http://www.mozilla.org/http://www.opera.com/http://hu.php.net/docs.phphttp://www.htmlhelp.com/http://weblabor.hu/leiras/javascr/http://www.weblabor.hu/http://www.sqlite.org/http://www.mysql.org/http://pear.php.net/http://adodb.sourceforge.net/http://smarty.php.net/http://smarty.php.net/http://adodb.sourceforge.net/http://pear.php.net/http://www.mysql.org/http://www.sqlite.org/http://www.weblabor.hu/http://weblabor.hu/leiras/javascr/http://www.htmlhelp.com/http://hu.php.net/docs.phphttp://www.opera.com/http://www.mozilla.org/http://www.mozilla.org/http://www.phpedit.com/http://ww.zend.com/http://www.editplus.com/
  • 5/21/2018 PHP Programoz s Kezdoknek

    10/95

    10

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

    Prba web oldal

    Hello World!!!

    Na ez nagy durrans volt. A kisbet%-nagybet%krds nem szmt. A bekezdses rsmdot az ttekinthet 'sgrthasznlok, de mint ltjuk ks 'bb, ez rendkvl fontos! A bngsz'k a sor vge jelet, a szkzket s a tabultorjeleket kihagyjk, ezrt akr az egszet egy sorba is rhatnnk. A fenti HTML oldalt az albbi php scripttel tudjukel'llttatni:

    Proba web oldal

    Tisztn ltszik, hogy a program szerkezete nagy vonalakban ugyanaz, de azrt vannak klnbsgek. A PHPrtelmez'a kd els'sorait vltozatlanul tovbbtja a Web szervernek, de amikor a ..... 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 lehet'sg. Ha egy vltoz rtkt szeretnnk csak kiiratni s a short_open_tag = on sor be van rva,akkor egy vltoz rtkt gy adhatjuk t a web oldalnak legegyszer%bben:

  • 5/21/2018 PHP Programoz s Kezdoknek

    11/95

    11

    6 A PHP nyelvi szablyaiA PHP nyelv szintaktikja nagyon hasonlt a C nyelvre.

    A php scriptben lv'utastsok mindegyike utn ktelez'en ki kell tenni a ;elvlasztjelet.

    Megjegyzs:

    Br a dokumentci azt mondja, hogy egy PHP blokk zr tagja el'tt nem kell kitenni, azrt azt tancsolom, hogymegszoks cljbl mindenhol alkalmazzuk

    A Megjegyzseinket szintn C jelleg%szintaktikval ktflekppen tehetjk ki:

    // Az egysoros kommentek, a sor vgig tarthatnak, mint a C-ben

    # jellel, mint a Unixos shell programoknl

    /*...................................*/ A tbb soros kommentek

    Amint ltjuk a fentiek alapjn a kirand szveget jelek kz tehetjk, de a jel pr lehet ...is. Atovbbiakban nzzk meg, hogy milyen tpus rtkekkel dolgozhatunk.

  • 5/21/2018 PHP Programoz s Kezdoknek

    12/95

    12

    7 Vltozk, adattpusokA PHP-ben hasznlhatunk vltozkat is. A vltozkban rtkeket trolhatunk. A vltoz neve el 'tt mindig $ jeltallhat. A PHP flig tpusos nyelv.

    7.1 A vltoz neveA vltoz neve bet %vel vagy alhzs jellel kezd 'dik s brmilyen alfanumerikus karakterrel, illetve 127...255

    ASCII kd karakterrel folytatdhat. A kis s nagybet%k klnbznek!

    7.2 A vltoz rtkeAmikor el'szr adunk rtket egy vltoznak, akkor jn ltre a vltoz.

    $a = 5;$todo = szveg;

    Ha egy vltoz rtkt azel 'tt vizsgljuk meg, miel 'tt rtket adunk neki, az rtke NULL lesz s a PHP egyNOTICE zenetet kld neknk.

    Egy vltoz tpust tbbflekppen lehet meghatrozni.

    - rtket adunk neki, az rtk alapjn ltrejtt vltoznak a tpusa is egyrtelm%v vlik.

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

    - Tpuskonverzit alkalmazunk. Az alkalmazhat tpusok ugyanazok, mint a fenti pldban, hozzvve, hogyaz 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 ks'bbiekben 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 tart

    Float, double, real Lebeg'pontos

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

    ArrayTmb tpus. A tmb elemi tetsz 'legesen vegyesek lehetnek

    Egy tmb lehet egy, kt s tbb dimenzis tmb is. A tmb indexelse trtnhet hagyomnyosan 0-tl kezd 'd'indexelssel, vagy lehet gynevezett asszociatv tmbt is ltrehozni, amikor a tmbindex valamifle string,vagy egyb rtk.

    Ebben a pldban egy dimenzis tmbt hozunk ltre.

    $array = array (1, "hello", 1, "world", "hello");

  • 5/21/2018 PHP Programoz s Kezdoknek

    13/95

    13

    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")

    );

    A hagyomnyos tmbk feldolgozshoz for vagy pedig while cklust hazsnlunk, az asszociattv tmbkhezforeach ciklust. A ciklusokrl ks'bb b'vebben szlunk.

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

    Egy objektum tpus vltoz ltrehozshoz el 'szr definilni kell magt az osztlyt a class kulcsszval,hasonlkppen, mint C++ -ban, majd a definci utn a new() opertorral ltre lehet hozni a megfelel'vltozt.A class rszt kpezik vltozk s a classhoz tartoz fggvnyek is. A ks 'bbiekben rszletesen is szlunk azobjektumokrl. Az albbiakban egy pldt ltunk.

    boolean Logikai rtkek. Kt rtk el're definilt, a TRUE s a FALSE

    null- Olyan vltozk, amelyeknek nincsen belltott rtkk

    Resource Er'forrsok, mint pldul file vagy adatbziskezel 'mutatja. Valjban ezek a memria egyeshelyre 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)int is_real ($a)

    Megadja, hogy a vltoz lebeg'pontos-e, vagy sem.

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

    Megadja, hogy a vltoz egsz vagy sem.

  • 5/21/2018 PHP Programoz s Kezdoknek

    14/95

    14

    int is_int ($a)

    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 er'forrs 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 nems Igaz, ha van rtke a vltoznak

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

    7.4 El're definilt vltozkA vltozk kztt vannak olyanok, amelyek a rendszerben el 're definiltak. Ezeknek a vltozknak a nevt s

    pillanatnyi rtkt a phpinfo() fggvny segtsgvel lehet kiratni. A vltozkra hivatkozva termszetesen azrtkeket fel tudjuk hasznlni, s azt tudjuk manipullni.

    Ezen vltozknak az rtkt a PHP.INI file-ban lehet belltani, nhny rtk a hasznlt WEB szervert 'l fgg,tovbbi rtkek pedig a futtat opercis rendszert'l fggnek.

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

    7.4.1 EnvironmentAz opercis rendszerr'l, a krnyezeti belltsokrl, a WEB szerverr'l, a bngsz'r'l, az aktulisan meghvottlaprl s a kliensr'l minden lnyeges adatot felsorol, belertve az IP cmeket is.

    7.4.2 PHP Variables - A PHP vltozk listja

    Tovbbi gyakran hasznlt vltozk tmbjeia szerver ltal szolgltatott tmb s a

    $_SERVER[PATH]

    A krnyezeti vltozk

    $_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]

    Sessionokben hasznlt vltozk listja s rtkei

    $_SESSION[valtnev]

    A cookiek adatait tartalmaz vltozk.

    $_COOKIE[valtnev]

  • 5/21/2018 PHP Programoz s Kezdoknek

    15/95

    15

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

    A szerver IP cme

    $_SERVER[REMOTE_ADDR]

    a szerver neve

    $_SERVER[REMOTE_HOST]

    a lekrt oldal azonostja

    $_SERVER[HTTP_REFERER]

    a szerverhez kapcsold bngsz'fajtja, az opercis rendszer fajtja

    $_SERVER[HTTP_USER_AGENT]

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

    $_SERVER[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 el '%lltja konstans formban az aktulisan fut script elrsi tvonalt,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 el're definilt konstansok, tovbb mi is definilhatunk a

    define(nev, rtk)parancs segtsgvel.

    Az el're 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 rendszerTRUE, FALSElogikai rtkek

  • 5/21/2018 PHP Programoz s Kezdoknek

    16/95

    16

    8 Alapvet utastsokAki a Pascal nyelven nevelkedett megszokta, hogy a definicis s a vgrehajthat utastsoknak kttt sorrendjevan. A C nyelv s tbbek kztt a PHP tartalmaz el 'rsokat az utastsok sorrendjre, de azok nem annyiraktttek, ezrt aztn nagyon knny %ttekinthetetlen s rosszul m %kd'programot rni bennk. Ahhoz, hogygyorsan tudjunk egy programot rni, ismertetnk nhny utastst.

    8.1

    EchoA PHP egyik leggyakrabban hasznlt utastsa az echo. Segtsgvel a bngsz 'be ki lehet rni a programfutsnak eredmnyt. A kirats sorn gondolnunk kell arra, hogy az eredmny egy HTML kd mindig, amitmajd a bngsz'tovbb rtelmez.

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

    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 szvegben kirni. Afeladat megoldshoz ugyanazt kell hasznlnunk, mint amikor kt string-et akarunk sszef%zve kirni.

    A fenti pldban az echo parancs az sszeads m %velett string-g konvertlta s gy ratta ki. A konverziteljesen automatikus.

    Tovbbi rdekes lehet'sg, amikor egy string-ben szeretnnk kiratni egy vltoz rtkt:

    Amint ltjuk, a korbbi megfontolsok alapjn a soremelst a HTML szerint kell hasznlnunk. Az albbiakbannhny gyakran hasznlt tag-et runk le. A hasznlhat tag-ek trt egy HTML kdolssal foglalkoz knyvb 'l,jegyzetb'l vagy Internet helyr'l meg lehet tudni.

    A kperny'n val soremelsre a
    tag szolgl.

    Vzszintes vonal rsra

    Paragrafus eleje, vge:

    ....

    Vastag bet% ....

    D'lt bet% ....

  • 5/21/2018 PHP Programoz s Kezdoknek

    17/95

    17

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

    els#oszlop

    masodik oszlop

    Mivel a fenti TAG-ek sztringek, ezrt clszer%en az echo paranccsal kell kiiratnunk 'ket.Az echo egy nyelvi elem s nem fggvny, azaz valami olyasmi, mintha C-ben egy fggvnymakrt hoznnkltre. ppen ezrt bonyolultabb kifejezsek kiiratshoz alkalmatlan!

    Ha az adatokat formzottan szeretnnk kirni, akkor a printf()fggvnyt kell hasznlni

    8.2 Formzott kirsprint() 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 formtum szerint megadott karaktersorozattal tr vissza. A formtumkarakterek lnyegben a C-benmegszokott formtumkarakterek.

    A formtumstring tbb direktvt tartalmazhat. A % string vezeti be a direktvkat, majd utna kvetkeznek aformz karakterek. Ezeken kvl minden karakter megjelenik a kimeneten. A kimenet konverzis parancsait aprintf() 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 kvllehet a 0, vagy egyb karakter.

    Igazts karakter. Az eredmny balra vagy jobbra igaztott lesz. default jobbraigazts; akarakter igaztja balra.Szlessg meghatroz. Megmondja, hogy minimum hny karakter legyen az eredmnyben.

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

    A tpusmeghatroz megmondja, hogy milyen tpus adatokat kell kezelnie. Lehet'sgek:

    %- 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 lebeg'pontos szmknt jelentjk meg.

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

    s az argumentum string s gy is jelentjk meg.

    x- az argumentum integer s hexadecimlis szmknt jelentjk meg (kisbet%vel)

    X- az argumentum integer s hexadecimlis szmknt jelentjk meg (nagybet%vel)

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

  • 5/21/2018 PHP Programoz s Kezdoknek

    18/95

    18

    $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;

  • 5/21/2018 PHP Programoz s Kezdoknek

    19/95

    19

    9 Opertorok (m #veletek)A kvetkez'kben megismerjk, hogy milyen m%veleteket vgezhetnk a klnbz'adattpusokkal.

    9.1 Stringek kztti m%veletekStringek sszef%zse: .

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

    Stringek hozzadsa meglv'sztringhez: .=

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

    9.2 Aritmetikai m%veletekA 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 legyen az, ami ajobb oldal. A hozzrendel'kifejezsnek az rtke a bal oldalhoz rendelt rtk.

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

    9.4

    Nvel'/cskkent'opertorokA PHP tmogatja a C-ben megismert inkrementl s dekrementl opertorokat. Az albbiakban megismerjkazokat, majd pldt ltunk rjuk: Amikor az opertor a vltoz el 'tt van, akkor a kirtkels sorn el 'szrnvekszik a vltoz rtke, majd rtkeli ki a rendszer, mg a vltoz mgtti opertor esetn el 'szr kirtkeli avltozt a rendszer, majd nveli vagy cskkenti az rtkt!

    Itt egy msik pldaprogram:

  • 5/21/2018 PHP Programoz s Kezdoknek

    20/95

    20

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

    9.5 Logikai opertorokA logikai m%veletek minden programozsi nyelvben hasonlan nznek ki. Az albbi lehet'sgek vannak. A PHP-ben az igaz rtket mindig az 1 s a hamis rtket a 0 hordozza. Ennek a tudsnak a birtokban ugyanakkor nemclszer%a 0 s 1 rtkeket numerikusan hasznlni.

    9.6

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

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

    Feltteles opertor a "?:", ami gy m%kdik, mint a C-ben s sok ms nyelvben.

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

    A kifejezs kif2-t rtkeli ki, ha kif1igaznak bizonyul, s kif3-at, ha kif1hamis.

    9.7 Bitorientlt opertorokA bitorientlt opertorok teszik lehet'v, hogy egy egsz rtk bizonyos bitjeit belltsuk, vagy kimaszkoljuk.

  • 5/21/2018 PHP Programoz s Kezdoknek

    21/95

    21

    9.8 Hibakezel'opertorokA PHP egy hibakezel'opertort tmogat, az at (kukac) jelet (@). Ha egy PHP kifejezs el rod, a kifejezs ltalesetlegesen generlt hibazenete(ke)t figyelmen kvl hagyja a rendszer.

    Ha a track_errorsszolgltats be van kapcsolva, brmilyen a kifejezs ltal generlt hibazenet a $php_errormsggloblis vltozba kerl trolsra. Ez a vltoz minden hiba esetn fellrdik, ezrt ellen'rizd minl hamarabb akifejezst kvet'en ha hasznlhat informcit szeretnl kapni.

  • 5/21/2018 PHP Programoz s Kezdoknek

    22/95

    22

    10 Vezrlsi szerkezetekA PHP-ben ugyangy, mint ms programozsi nyelvekben az utastsok vgrehajtsnak sorrendje alapvet 'enfentr'l lefel. Ily mdon csak szekvencilis programokat lehet rni, azonban rvid tanuks utn szksgess vlikelgazsokat s ciklusokat tartalmaz programok rsa is. A vezrlsi szerkezetek, mint mindig itt is a C-hezhasonlak.

    A program a klnbz 'irnyokba val tovbbhaladst ltalban egy kifejezs hatrozza meg. Ennek a

    kifejezsnek az rtke logikai alapvet'en, azonban a PHP hasonlkppen, mint a C nem klnbztet meg klnlogikai rtkeket, hanem a 0 s a nem 0 rtkek jelentik azt. Ily mdon, ha egy numerikus kifejezs 0, akkorhamis, s ha nem 0, akkor igaznak tekinthet'. Ha egy string kifejezs res, akkor hamis, ha van rtke, akkor igaz.Az olyan vltozk, amelyeket mg azel 'tt rtkelnk ki, hogy rtket kaptak volna (ez nem helyes), a NULLrtkkel brnak.

    10.1 ElgazsokAz els'fontos lehet'sg a felttelhez kttt vgrehajts. Ha brmelyik gon tbb utastst akarunk vgrehajtatni,akkor szintn a C szintaktika szerint { ...} jelprost kell hasznlnunk

    If( utasts) ...

    if(kifejezs) utasts;

    if(kifejezs) {utasts1;utasitas2;.....}

    If .... else....

    Ha a kifejezs igaz, akkor az utasts1 klnben az utsts2 hajtdik vgre.

    if( kifejezs ) utasts1;else utasts2;

    Ha a kifejezs igaz, akkor az utasts1 g hajtdik vgre, klnben a msik

    if( kifejezs ) {utasts1;utasitas2;.....}else{utasts3;utasitas4;.....}

    If ... elseif ... else ...

    Ha kett'nl tbb elgazst szeretnnk, akkor az albbi szintaktikval tudjuk a krdst megoldani:

    if( kifejezs1 ) utasts1;elseif(kifejezs2) utasts2;else utasts3;

    vagy

    if( kifejezs1 ) {utasts1;

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

  • 5/21/2018 PHP Programoz s Kezdoknek

    23/95

    23

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

    Switch(kifejezs)A fenti esetben az if s az elseif utastsnl lv 'kifejezsek tetsz'legesek lehetnek, s az gy felrt vezrlsiszerkezettel meglehet'sen bonyolult elgazsokat lehet ltrehozni. Ezzel szemben ltalnosabb eset, amikor egyvltoz rtkt'l fgg'en akarunk tbb fle m %veletet is vgrehajtani. Erre a clra alkalmas a C-b 'l jl ismertswitch() fggvny, amely tbb irny elgazst hajt vgre. Az gak meghatrozsakor csak konstansokathasznlhatunk, s az gra akkor addik t a vezrls, ha a switch fggvnyben lv 'vltoz rtke pontosan akonstans rtkvel egyezik meg. Amennyiben egy gra radtuk vezrlst, majd vgrehajtottuk az ott definiltutastsokat, a switch szerkezet vgre kell ugranunk a break utasts segtsgvel, mivel klnbenrcsorognnk 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 rtkt 'l fgg'en lptnk valamelyik irnyba. Ha a vltoz rtke nem vette felsem 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. El 'fordulhat, hogy ugyanazt az esemnyt tbb rtk is jellheti,illetve tbb klnbz'esemny van. Az albbi pldban a $jelz'vltoz 0, 1, 2 rtke esetn az fv1() fggvnyfut 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!

  • 5/21/2018 PHP Programoz s Kezdoknek

    24/95

    24

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

    While (kifejezs)

    Itt a kifejezs a ciklus el'tt rtkel'dik 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 rtkel'dik ki, azaz a ciklus magja egyszer mindenkppen lefut.

    Doutastswhile(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 egy kezd'rtket.Az ilyen vltozt ciklusvltoznak hvjuk.

    A Benntmarads kifejezse mindannyiszor a ciklus magjnak lefutsa el 'tt rtkeli ki a rendszer. Ha akifejezs igaz rtket ad vissza, akkor lefut a ciklus magja, ha hamis rtket, akkor a ciklus utni els 'utastsonfolytatdik a futs. Ha a kifejezs helyre res rtket runk, akkor vgtelen ciklusba kerlhetnk, hacsak a ciklusbelsejb'l nem ugrunk ki a break utastssal.

    Az Iterl kifejezs felel's azrt, hogy a ciklus valamikor befejez 'djn. ltalban a ciklusvltoz rtktnveljk vagy cskkentjk eggyel.

    For (init;bentmarads;itercio)utasts;

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

    }Plda:

  • 5/21/2018 PHP Programoz s Kezdoknek

    25/95

    25

    for ($i = 100; $i >0; $i--) {print $i;

    }

    //rassuk ki egy kt dimenzis tmb elemit soronknt$a= array( array(3,5,4,6),array(12,234,12,12),array(3,6,5,77));for ($i =1; $i $rtk)

    Ez a fajta ciklus a Perl nyelvb'l kerlt t a PHP-be.

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

    Foreach ($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 esetekben knnyebba 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. Ha utna runkegy 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 opcionlis mdrapedig itt van egy plda:

    $i = 0;while ($i++) {

    switch ($i) {case 5:

    echo "5 esetn
    \n";break 1; /* csak a switch-b#l lp ki */

    case 10:

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

    default:break;

  • 5/21/2018 PHP Programoz s Kezdoknek

    26/95

    26

    }}

    continue vagy continue n

    Br programozsi mdszertanok kerlik a ciklusokbl val kiugrlst s a ciklusmagon belli itercit, azrtminden ltalnos nyelvben benne van a lehet'sg, belertve a Pascalt s a C-t is. Ez az utasts akkor hasznlhat,

    ha a ciklus belsejben mr eld 'lnek a tovbbi itercira vonatkoz felttelek s nem akarjuk, hogy a ciklusmagjnak tbbi rszt feleslegesen futtassuk. Ha a continue n formt hasznljuk, akkor tbb egymsba gyazottstruktrt tudunk folytatni. Az albbi pldban 100 db vletlenszmot hozunk ltre a 0..4 egsz tartomnybl saz eloszlsukat vizsgljuk. A continue utastsok hatsra ha megvan az rtk, tovbbi feltteleket nem rtkel kia program, hanem rgtn iterlja a for ciklust.

  • 5/21/2018 PHP Programoz s Kezdoknek

    27/95

    27

    Erre a clra kt parancs ll rendelkezsre, amelyeknek a m %kdse nem pontosan ugyanaz, de nagyon hasonl.Mind a kt esetben arrl van sz, hogy a PHP script egy adott pontjn behvunk egy file-t, amelynek a kdjafutsid'ben bekerl a PHP scriptbe, a szerver kirtkeli, s annak megfelel'en jr el. A file tartalma teht a futsidejre gy vlik a PHP script rszv, mintha eleve abba bertuk volna.

    Mivel a Webszerver kezdi a krdses include file-t feldolgozni, ezrt ilyenkor HTML mdba kerl a szerver, gya PHP kd feldolgozshoz az include file elejn PHP nyit tag-et kell elhelyezni s a vgn zrtag-et. ()

    Include ()

    Az include hasznlata esetn a megadott file mindannyiszor kirtkel 'dik, ahnyszor a vezrls az include-rakerl. Ennek eredmnyeknt, ha egy ciklus belsejben megfelel 'en helyezzk el a file-t, akkor a ciklus rtkt 'lfgg'en mindig ms s ms file-t szerkesztnk be, mint az albbi pldban lthatjuk:

    $fileok = array ('elso.php', 'masodik.php', 'harmadik.php');for ($i = 0; $i < count($fileok); $i++) {

    include ($files[$i]);}

    require()

    A require parancs akkor is beolvassa a clfile-t, ha soha nem hajtdik vgre, s ha hinyzik a file, akkor aprogram futsa megszakad.

    A fentiek miatt require parancsot csak konstans file-nevekkel szabad hasznlni.

    include_once()

    Az utasts hasonlt az include() utastsra, azzal a klnbsggel, hogy csak egyszer kerl bele a futskor akrdses file. Ez azrt fontos, mert ha az include() utastssal tbbszr is meghvjuk futs kzben ugyanazt a file-t, akkor a benne lv 'globlis vltozk s fggvnyek tbbszr kerlnek a kdba, ami miatt a futs hibazenettellell, hiszen ugyanaz az azonost ms s mst jell. Az include_once() segtsgvel ezt a hibaforrstkikszblhetjk.

    require_once()

    Az utasts hasonlan az include_once() utastshoz csak egyszer hvja be a krdses file-t futs kzben, gy afggvnyek s globlisvltozk jradefinilsa krli problmk kikszblhet 'k. Egybknt a require()utastssal megegyez'a szerepe s m%kdse.

    10.5 Tvoli file-ok hvsaA fenti kt utasts include s require alkalmas arra, hogy a PHP megfelel 'konfigurlsa esetn, akr msikWeb szerveren is elrjnk tvoli file-okat. Ehhez az "URL fopen wrapper"-eket kell bekapcsolni, a PHP4.0.3-tlkezd'd'en az allow_url_fopen php.ini belltsval. Ez a lehet'sg Windows rendszereken nem m%kdik.

    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 mi rendszernkreveszlyeket hordoz. A tvoli helyen megfelel 'en elksztett lap email-ben elkldheti az azonostkat s egybolyan adatokat, amelyeket nem szeretnnk nyilvnossgra hozni, ezrt ezzel a lehet'sggel vatosan kell bnni.

  • 5/21/2018 PHP Programoz s Kezdoknek

    28/95

    28

    11 Sajt fggvnyek, vltozk lettartama s lthatsgaEddig sok sz esett a vltozkrl s esetenknt a fggvnyekr 'l is, azonban az eddigiek alapjn azt gondoln azember, hogy csak ilyen egyszer%programok rhatk PHP-ben. Az igazsg az, hogy PHP-ben csak a futsi id's afuttat rendszer memrija szab hatrt az alkalmazott program bonyolultsgnak.

    11.1 Fggvnyek

    A PHP-ban is hasznlhatunk programstruktrkat, programszegmenseket. Mr Pascal-bl vagy C-b 'l is jlismerhetjk az alapvet'kt eljrstpust, amit Pascalban Procedure illetve Function nvvel illetnk, C-ben pedigtpus nlkli illetve tpusos function-nak mondunk. Mind a kt nyelven a klnbsg az, hogy ad-e vissza akrdses 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 esetekben clszer %avisszatrsi rtk tpust megllaptani ahhoz, hogy van-e egyltaln visszatrsi rtk.

    Rekurzi lehetsges a fggvnyhvsoknl, de termszetesen arra kell vigyzni, hogy a rekurzi vget rjen. Azalbbi kis plda az N faktorilis kiszmtst vgzi rekurzv mdon.

    11.2 ParamtertadsEgy fggvny definilsakor meg kell hatrozni, hogy milyen paramtereket vegyen t. Ezt a formlisparamterlistval tudjuk megtenni, amelyben az tvev'vltozk neveit vessz'vel elvlasztva fel kell sorolni.

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

    a fggvny formlis paramterlistjban default rtket kell adni a paramternek.

    A PHP-ben ktfle paramtertads, ltezik

    rtk szerinti

    A hv kifejezs rtke behelyettest 'dik a meghvott fggvny paramterlistjban szerepl 'vltozba s afggvnyen 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 fggvnyb'l val visszatrskor a vltozsok megmaradnak.

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

  • 5/21/2018 PHP Programoz s Kezdoknek

    29/95

    29

    }

    $n=100;echo $n
    ;fgv($n);echo $n
    ;?>

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

    Ha azt szeretnnk, hogy egy fggvny vltoz szm paramtert vegyen t s a fggvnyben meg akarjukllaptani, 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

    func_get_arg(sorszm) - Visszaadja a sorszm paramterrel megadott paramtert. Ha a sorszm nagyobb, mint aparamterlista utols elemnek indexe, akkor hibazenet jn (warning). A paramterlista indexe 0-val kezd'dik.

    Az albbi plda ezeket pldzza.

    11.3 Fggvnyek visszatrsi rtkeEgy fggvny tetsz 'leges tpust, mg tmbt, vagy vltozreferencit is vissza tud adni. Tbb rtkvisszaadsra a tmbt hasznlhatjuk.

    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 (memriaterlettis), vagy vget r az adott PHP script oldal. Ez all kivtel, ha a vltozkat tadjuk egy msik PHP oldalnak aPOST, GET metdussal, a cookie-k vagy sessionok hasznlatval.

    Egy PHP minden rszn hasznlhatk a $_POST, $_GET, $_SESSION, $_COOKIE, $_ENV, $_SERVER,

    $GLOBALS tmb elemei. Ezek a szupergloblis vltozk.

    Ltezik-e a vltoz

  • 5/21/2018 PHP Programoz s Kezdoknek

    30/95

    30

    Azt, hogy egy vltoz ltezik-e az isset() fggvnnyel krdezhetjk le. Igazat ad vissza, ha a vltoz ltezik, azempty() 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 helyt 'l kezdve lthatkmindenhonnan, azonban ha meghvunk egy fggvnyt, akkor abban a fggvnyben csak azok a vltozk lthatk,amelyeket a fggvnyben hoztunk ltre, vagy paramterknt adtunk t. Ha a fggvnyb 'l kilpnk, akkor ezek avltozk megsemmislnek kivve, ha nem cm szerinti paramtertads sorn jttek ltre. Azaz ezek a vltozkloklisak lesznek a fggvnyre nzve.

    Ha egy fggvnyb'l 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 lehet'sg az, hogy hasznljuk a $GLOBALS[] asszociatv tmb rtkeit, amelyben minden bejegyzettgloblis vltoz megtallhat.

    Ltrehozhatunk statikus vltozkat is.

    Statikus vltoz egy fggvnyben jhet ltre. Amikor kilpnk a fggvnyb 'l mr nem hasznlhatjuk ennek avltoznak az rtkt, de ha jra meghvjuk a fggvnyt, nini mg megvan az el 'z'rtke. J ott folytathatjuk,ahol abbahagytuk. Ennek nha van rtelme. Mindenesetre a hasznlathoz a fggvnyben a statickulcsszt kell

    hasznlni. Az albbi kis szsszenet egy ciklusbl meghvja jra meg jra a Test() fggvnyt s ennek sorn az $avltoz tartalma folyamatosan n', noha mindig kilpnk a fggvnyb'l. Na ja, statikusnak deklarltuk! A statikusvltoznak kezd'rtket adva, az csak egyszer fut le, amikor el'szr meghvjuk a fggvnyt.

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

    }for ($i =0; $i< 10;$i++) {Test();Echo blablabla}

    11.5

    Vltozk tadsa lapok kzttGyakori krds a PHP-ben programozk kztt, hogyan tudnak rtkeket tadni a PHP lapok kztt, hiszen haegy lap lefut, akkor eddig gy tudtuk, hogy a lapon keletkezet vltozk is megsz %nnek. Amikor el 'szr

  • 5/21/2018 PHP Programoz s Kezdoknek

    31/95

    31

    szembekerltem a problmval, akkor azt hittem, hogy a globlis vltozk oldjk meg a problmt. Sajnos adolog nem ennyire egyszer%, de nem is tlsgosan bonyolult. tadhatunk egyedi vltozkat s egy dimenzistmbket is. Ngy lehet'sgnk van erre.

    11.5.1 Header utastsA Header utastst csak akkor hasznlhatjuk, ha az adott oldalon mg semmifle kperny're rs nem volt, azaz akeletkez'HTML oldal tartalmi rszt mg nem kezdtk rni. A header segtsgvel brmilyen header-telkldhetnk. Az albbi pldban egy teljes header sorozatot runk ki a HTML oldalra

    header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the pastheader ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modifiedheader ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1header ("Pragma: no-cache"); // HTTP/1.0

    header ("HTTP/1.0 404 Not Found");

    Itt egy hibakezelst runk ki, az URL nem tallhat. Akkor lehet ilyet tenni, ha pldul az Apache szervernkhibazeneteit tirnytjuk a sajt oldalainkra.

    header ("HTTP/1.0 404 Not Found");

    Bngsz'tirnytsa. Itt adhatjuk meg az j oldalt. Ez a parancs nem csak a bngsz 't vgja t az j oldalra,

    hanem a szervernek is visszakld egy tirnyts sttusz zenetet is.header ("Location: http://www.php.net"); /* tirnytja a bngsz#t a PHP web oldalra */exit; /* Ha nem megy az tirnyts, akkor az exit parancs biztosan kilp */

    11.5.2 GET metdusA GET metdust gy hasznlhatjuk, hogy meghvunk egy lapot az oldalunkrl egy msik lapot s az URL vgreparamterknt tadjuk a vltozkat, valahogy gy, ahogy a kvetkez'pldkban ltjuk:

    Az els'pldban igazbl nem is PHP a megolds, egyszer %en a TAG-ben megadjuk, hogy melyikoldalt s menyi id 'mlva hvja meg az oldal. Ennek a megoldsnak hibja, hogy tulajdonkppen itt egyJavascriptet hasznlunk. A pldban 3 msodpercig vr a betlt'ds utn a bngsz', majd a szerver tdobja az j

    oldallal s meghvja a lapot a user, pwd s a level vltozkkal.

    A kvetkez'pldban hasonlt tesznk, de itt a HTML oldal fejlcben dolgozunk. Felhasznljuk a HTML metatag-jt. Itt is 3 msodperc mlve hvja be a kvetkez'oldalt s az el'z'oldalrl tadjuk az el'z'pldban ltott 3vltoz pillanatnyi rtkt.

  • 5/21/2018 PHP Programoz s Kezdoknek

    32/95

    32

    11.5.3 POST metdusA POST adattviteli metdust az %rlapokkal kapcsolatban hasznlhatjuk legtermszetesebben. Itt egyel 're csakannyit mondunk, hogy az rlapok olyan HTML kdok, amelyen keresztl a bngsz'el'tt l'felhasznl berhatadatokat a HTML oldalon, az %rlap SUBMIT gombjnak megnyomsra pedig az %rlapon definilt mez 'ktartalmt, mint vltozneveket s vltoz tartalmakat elkldi a cl oldalnak a bngsz '. Az %rlap fejlcben megkell adni a cl oldalt (kinek kldjk) s a megfdelel 'oldal, ha az olyan oldal, amit a szerver meg tud jelentenibetlt'dik a bngsz'be.

    A PHP esetn a mdszer az, hogy az %rlap kitltse utn a submit gomb megnyomsval elkldjk azeredmnyeket egy PHP oldalnak, amely betlt 'dskor megkapja az elkldtt vltozkat, esetleg elvgzi azokat aferladatokat, amelyekre rendeltetett, majd megjelent valami vlaszt.

    Ennl a mdszernl, az elkldtt rtkek nem lthat mdon kerlnek el a meghvott oldalhoz, teht ezzel amdszerrel viszonylag knny%vltozrtkeket tadni.

    Vigyzni kell azonban arra, hogy az adatbevitel alapvet 'en string s ha nem gy hasznljuk fel azokat a bevittstringeket, hogy el'tte kisz%rjk a ../../etc/ ... stb jelleg %adatrokats nem figyelnk arra, hogy az eredmnyeket alehet'legtbb szempont szerint ellen'rizzk, 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 rtke alapjn egy

    elgazsra kerl a vgrehajts s az eredmnyt elkldi e-mailben egy megadott cmre. A lapon van egy kisJavascript bett is, amely az aktulis id'pont beszrsra szolgl. Az %rlapon tallhat olyan mez'is, amelynek atartalma hidden, azaz az %rlapon nem jelenik meg.

    Munkalap

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

  • 5/21/2018 PHP Programoz s Kezdoknek

    33/95

    33

    $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..KIKPIM

    A bejelent#neve:

    A bejelents id #pontja:

  • 5/21/2018 PHP Programoz s Kezdoknek

    34/95

    34

    A megllaptotthiba

    Az elvgzettmunka lersa

    Garancilis?

    Rendszergazdai?

    Fizet#s?

    Kiszlls

    Mhely

    Beptett alkatrszek

    Alkatrszek ra (nett)+25% FA


    A munkt vgz#(k):

    Munkark


    Munkadj (netto) +25% FA

    Dtum:

  • 5/21/2018 PHP Programoz s Kezdoknek

    35/95

    35

    Digitlis alrs:

    Igazols:

    Utols mdosts: 2011. mrcius 12.

    11.5.4 $_SESSION vltozkA session vltozk olyan vltozk, amelyek megtartjk rtkeiket mikzben a felhasznl egyik oldalrl tlp amsikra anlkl, hogy a korbban ismertetett mdszerek valamelyikvel direkt t kellene adnunk az rtkeket alapok kztt. Ez a lehet 'sg igazi globlis vltozkat enged meg s sokkal sszetettebb WEB-es programokksztst teszi lehet'v. Tbb lapbl ll site fejlesztse gyakorlatilag session vltozk nlkl nem megy.

    Amikor egy felhasznl belp egy WEB oldalra, akkor egy egyedi azonost keletkezik, az gynevezett session id(SID), amelyet vagy a bngsz'ben trolunk gynevezett cookie (sti) formjban, vagy a szerver oldalon tartunknyilvn. A sessionok tmogatjk korltlan mennyisg%vltoz regisztrlst s a tartalmuk megtartst. Amikor afelhasznl elri a web oldalt, akkor a PHP automatikusan leellen 'rzi, hogy a megfelel 'session id vajon mrltezik-e a szerveren. Ha ltezik a session id, akkor a session-hz tartoz elmentett rtkeket hozzrendeli a lekrt

    oldalhoz.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 a krshezhozzrendelve egy session id. Ha van, akkor a korbban elmentett krnyezetet hozzrendeli ehhez a krshez,azaz visszalltja a megfelel'vltozkat. Minden regisztrlt vltozt elment a rendszer a krs befejez 'dsekor.Azok a regisztrlt vltozk, amelyek nem kaptak rtket, azaz nem definiltuk 'ket, a nem definiltak kzkerlnek. Ezek a vltozk csak akkor kerlnek a definiltak kz ks'bb is, ha a user rtket ad neki.

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

    Hogyan kezelhetjk a session id-ket?

    Cookie - stikkel

    URL parameterekkel

    A session modul mind a kt vltozatot tmogatja. A cookie-k az optimlisak, viszont vannak olyan kliensek, akiknem tmogatjk a cookie-k elhelyezst a gpkn biztonsgi okokbl, radsul ilyenkor a bngsz 's a szerverkztt vndorolnak adatok is. Ez biztonsgi problmkat vet fel. A msodik mdszer esetn a session id az URLrsze.

    A PHP kpes hajlkonyan kezelni a krdst, ha megfelel 'en fordtottuk. Ebben az esetben a relatv URI-kmegvltoznak automatikusan s tartalmazni fogjk a session ID-t (=SID). Ms esetben hasznlhatjuk a SIDkonstanst, amely a session_name=session_ID vagy egy res stringet tartalmaz

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

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

  • 5/21/2018 PHP Programoz s Kezdoknek

    36/95

    36

    Plda 3. Egy user bejelentkezseit szmolja le ez a plda

    Hello visitor, you have seen this page times.

    To continue,

  • 5/21/2018 PHP Programoz s Kezdoknek

    37/95

    37

    Param Lers Plda

    Titkos Ha az rtk 1, akkor c sak HTTPSesetn kldi stit.

    0vagy 1, alaprterlmezs 0

    Tmbket is trolhatunk stikben.

    A kvetkez'oldalt betltve a bngsz'be a stik automatikusan megjelennek a $_COOKIE tmbben, s azokataz rtkeket lehet hasznlni. Ha a register_globals paramtert bekapcsoljuk a php.ini-ben, akkor automatikusanltrejnnek a megfelel 'vltozk, de korbban emltettk, hogy ennek a paramternek a bekapcsolsa nem

    javallott.Ha a $_COOKIE tmb rtkeit debuggols cljbl ki akarjuk iratni, akkor hasznljuk a kvetkez'utastst:

    http://www.fz.ini.hu/http://www.fz.ini.hu/
  • 5/21/2018 PHP Programoz s Kezdoknek

    38/95

    38

    12 Konverzi Adattpusok kzttA PHP automatikusan, s meglehet'sen szabadon kezeli a tpusokat. Nha szksg lehet egy bizonyos adattpusalkalmazsra. Ekkor hasznlhatjuk az albbi mdszereket:

    El'rjuk a tpust, mint a C-ben:

    $a = (float) $b;

    $c = (int) $c;

    Hasznlhatjuk a boolsettype( $valtozo, tipus) fggvnyt. Ekkor a tetsz'leges tpus $vltoz-t tkonvertljukaz adott tpusra. A konverzi sikeressgr'l bool eredmnyt ad vissza a fggvny.

    Lehetsges tipusrtkek:

    "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)

    TRUErtket ad siker esetn, FALSErtket egybknt.

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

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

  • 5/21/2018 PHP Programoz s Kezdoknek

    39/95

    39

    13 TmbkA tmbk, azok klnbz'lehet'sgei, s az azok kr felsorakoztatott fggvnyek a PHP programozs egyikleger'teljesebb eszkzrendszert alkotjk, ugyanakkor rendkvl egyszer%en s knnyedn hasznlhatk. A tmbvltozk halmaza, melyeket a tmbn bell sorban trolhatunk s a teljes adathalmazt egyszerre is kezelhetjk,ugyanakkor a tmb elemeihez kln-kln is hozzfrhetnk. Fontos tulajdonsga a tmbknek, hogy egytmbn bell az elemek tpusa klnbz 'lehet. Egy tmb elemeit legegyszer%bben 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. Egy tmbelemeihez a fentieknl egyszer%bben 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 eggyelmagasabb lesz. Hasonlan m %kdik az array_push()fggvny, azzal a klnbsggel, hogy egy utastson bell

    tbb rtket is hozzf%zhetnk a tmbhz:array_push($tomb, "Cobol", "Fortran");

    Szp lassan dagad tmbnk a fenti utastsokat kvet'en 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 fentemltett array_push()fggvny prja, az array_pop()fggvny is rendelkezsnkre ll, mely azonban nemcsakegyszer%en a tmb utols elemt adja vissza rtkl, hanem a tmb elemeinek szmt is cskkenti az utolselemmel:

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

    Bonyoltsuk egy kicsit a dolgokat. Ezidig a tmbnk egy dimenzis volt, azonban a PHP nyelvben a tmbkkett'vagy akr tbb dimenzisak is lehetnek. Az rtkads legegyszer %bb mdja ilyen esetben is az explicitrtkads:

    $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)

    [2] => Array(

  • 5/21/2018 PHP Programoz s Kezdoknek

    40/95

    40

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

    )[3] => Array

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

    ))

    Ilyen s ehhez hasonl tmbk ltrehozsra, azonban sokkal tmrebb s olvashatbb mdszer az array()fggvny hasznlata. Ez a fggvny a paramterknt megadott rtkeket tmb formban adja vissza. gy a fentirtkadssal 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 PHP nyelvnek,ugyangy nem kezeli szigoran a tbbdimenzis tmbk elemszmait sem a PHP. Az albbi rtkads teljesenhelyes 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 tbb dimenzistmbk 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 tmbkfogalmtis. Az asszociatv tmbk rendkvl hasznos s sokoldal elemei a PHP nyelvnek. A PERL nyelvbenhasznlt hash tpus tmbkhz hasonlan m %kdnek. A tmbelemekre val hivatkozs ilyen esetben nemsorszmmal, hanem egy indexelem (kulcs) segtsgvel trtnik, egyszer %en gy, hogy a sorszm helyre, azindexelemet 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 hozzf %znk, vagy attl elvesznk egy elemet. jelem brmikor hozzf%zhet'a tmbhz:

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

    Az asszociatv tmbk lehetnek egydimenzisak, mint a fenti pldban, de lehetnek tbb dimenzisak is. A fentipldt kib'vthetjk tbb dimenziss:

    $tomb["els#"]["neve"] = "Kis Gedeon";$tomb["els#"]["kora"] = 27;$tomb["msodik"]["neve"] = "Nagy Elemr";$tomb["msodik"]["kora"] = 22;

    Ha a "Nagy Elemr" rtk%elemet a $tomb["msodik"]["neve"]hivatkozssal tudjuk elrni, de ha $sorszamrtke "msodik" akkor akr $tomb[$sorszam]["neve"]hivatkozssal is elrhetjk a keresett elemet.A norml s az asszociatv tmbk ltrehozsra egyarnt hasznlhat az array()fggvny, amit leginkbbtmbk kezd'rtkfeltltse sorn hasznlhatunk, egy rtkadssal kikszblve tbbet. A fenti pldkkalmegegyez'ek az albbi rtkadsok:

    $tomb = array ( "els#

    " => "Kis Gedeon","msodik" => "Nagy Elemr");

    $tomb = array ("els#" => array ("neve" => "Kis Gedeon","kora" => 27),

  • 5/21/2018 PHP Programoz s Kezdoknek

    41/95

    41

    "msodik" => array ("neve" => "Nagy Elemr","kora" => 22) );

    Mint az albbi plda is mutatja, az rtkads esetn az index rtkt nemcsak konkrtan, hanem vltozval ismegadhatjuk, gy mr meglehet 'sen rugalmasan tthetjk fel tmbjeinket adatainkkal. A kvetkez 'pldamegmutatja a print_r()fggvny hasznlatt is, amit tetsz'leges vltoz rtknek kiratshoz hasznlhatunk, demivel tmbvltoz esetben a komplett tmbstruktrt is megjelenti leginkbb tesztelsi clokra hasznlhat

    nagyon jl.

    A program kimenete a kvetkez#lesz:Array(

    [Tabbi] => Array(

    [nev] => Tabi Imre[email] => [email protected]

    )

    [Chris] => Array(

    [nev] => Nagy Krisztin[email] => [email protected]

    ))

    Asszociatv tmbk esetben azonban figyelemmel kell lenni arra, hogy ilyen tmb elemeit kizrlag ameghatrozott indexrtkkel rhetjk el, a tmb sorszmval nem. Ennek rendkvl egyszer%az oka. Az egyszer%sorszmozott tmb is asszociatv tmb, ahol a tmbindex maga a sorszm. S 't egy tmbn bell keverhetjk is asorszmozott s az indexelt elemeket, de azrt ezt kerljk, csak gondot okozunk magunknak. A norml s azasszociatv tpus tmbk a PHP programozs sorn rendkvl vltozatosan s hatkonyan hasznlhatk, f 'legakkor, ha tudjuk azt, hogy a PHP a tmbk elemeire, az elemszmokra s a tmbelemek tpusaira vonatkozanrendkvl szabad kezet ad neknk:

    - tbbdimenzis tmbn bell az egyik index lehet asszociatv, a msik norml

    - tbbdimenzis tmb esetben a tmbelem tmbknek nem kell felttlenl azonos elemszmaknak lenni,vagyis $tomb[1]lehet t elem%, mg $tomb[2]lehet akr 8 elem%is.

    - egydimenzis tmbk esetben a tmbelemek lehetnek klnbz %tpus adatok, de mg tbbdimenzistmbk esetben sem kell a tmbelem tmbk adatszerkezetnek megegyeznie.

    Vagyis elg nagy szabadsggal hasznlhatjuk a tmbvltozkat, mgis rdemes szem el 'tt tartani, hogy ha lehet,jrjunk el kvetkezetesen a vltozk rtkadsval s azok hasznlatval.

    A PHP nyelvben a tmbvltozkhoz is egy egsz sor fggvny s utasts kapcsoldik. Ezek ahttp://weblabor.hu/php/ref.array.phpcmen tallhatk meg. Ezek a fggvnyek egy egsz sor feladatot lthatnak elkezdve a tmbk defincijtl az rtkfeltltsen s a tmbben val mozgson keresztl a tmbelemeklegvltozatosabb md sorbarendezsig. Mivel a tmbk a PHP programozs sorn igen kiterjedtenhasznlatosak, s a tmbkhz kapcsold fggvnyek fontossga kiemelked ', gy ezen fggvnyekb 'l afontosabbakat a kvetkez'rszekben rszletesebben is trgyaljuk majd.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]://weblabor.hu/php/ref.array.phphttp://weblabor.hu/php/ref.array.phpmailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 5/21/2018 PHP Programoz s Kezdoknek

    42/95

    42

    14 Sztringek, szvegek manipulcijaA tovbbiakban nhny gyakran el 'fordul szvegmanipulcis feladat megoldst tekintjk meg PHP-ban.Termszetesen sok olyan feladat van, amit mshol, mshogy mr vagy mg rintnk, illetve sok egyb, itt nemmegemltett fggvny tallhat a stringkezelsnl. A pldk a php manualbl valk!

    Gyakori, hogy egy string hosszt meg szeretnnk tudni: strlen()

    Ha egy string valahny karaktert ki akarjuk venni a szvegb'l, akkor a hasznland fggvny: substr()

    A 2. s harmadik paramter lehet negatv is. Ekkor a jelentsk a szveg vgr'l rtend'.

  • 5/21/2018 PHP Programoz s Kezdoknek

    43/95

    43

  • 5/21/2018 PHP Programoz s Kezdoknek

    44/95

    44

    Gyakori feladat, hogy szt kell vgni egy stringet valailyen karakter mentn darabokra, pldul szavakra, ahol aszavakat hatrol karakter tbbfle is lehet. Az eredmny egy stringekb'l ll tmb lesz: Explode()

    Az albbi plda egy PHP oldalrl keresztreferencit kszt s kirja a beinclude-olt file-okat.

  • 5/21/2018 PHP Programoz s Kezdoknek

    45/95

    45

    // Variables crossreferencefunction variables($text) {global $terminal,$lines,$vars;//change Terminator characterswhile (list ($key, $val) = each ($text)) {$lines[]=str_replace($terminal," ",$val);}

    $splitted =array();$line=0;while(list($key,$row)= each($lines)) {$splitted = explode(" ",$row); //Sztvgom szavakra a sort. Az eredmny egy tmbfor($i=0; $i

  • 5/21/2018 PHP Programoz s Kezdoknek

    46/95

    46

    15 Formok /#rlapok Interaktv programok rsaA PHP s ltalban a WEB-es programozs egyik sarokkve volt az interaktivits megjelense. Ehhez arra voltszksg, hogy a bngsz'nkn bert adatokat vissza tudjuk kldeni a szervernek, amely azt feldolgozza.

    A HTML-ben lehet %rlapokat ltrehozni az albbi szintaktikval:

    A fenti xxxx= vagy GET vagy POST metdus lehet.

    Az %rlapok belsejben minden html elemet hasznlhatunk, s itt hasznlhatunk olyan beviteli mez 'ket, amelyekvltozknak adnak rtket. A POST s a GET metdus segtsgvel a vltozk neve s rtke eljut az action-nalmegjellt laphoz, amely azt fel tudja dolgozni. Az %rlapon bell az albbi adatbeviteli lheet'sgek vannak:

    Egy soros szveg bevitelre szolgl

    - Egy soros password, bevitelhez kell.

    15.1.1 nmagukat meghv 'rlapokGyakori feladat, hogy egy #rlapot meghvunk, leellen'rizzk s a kvetkez'oldalon csak akkor kldjk tovbb abngsz't, ha az oldal hibtlanul ki van tltve. Ehhez az albbi dolgoknak kell teljeslnie:

    Az %rlapot sajt magnak kldi el a PHP oldal

    Amikor berkezik a krs a szerver oldalon ellen'rizzk a megfelel'rtkek megltt.

    Ha az rtkek megvannak, akkor feldolgozzuk 'ket

    Ha nincsenek meg az rtkek, akkor jra meghvjuk a feldolgozand adatot:

    Az albbi pldban kt rrtket kldnk el egy feldolgozand oldalnak. Ha nincs kitltve mind a kt rtk, akkor

    jrahvjuk a feldolgozand oldalt.A feldolgozs rszen a feldolgozott rtkek valamifle lekrdezsbe torkollnak vagy akrmilyen egyb m%veletetvgezhetnk vele.

    Javasolt egyb m%veletek:

    Az tadott adatok tpus szerinti ellen'rzse. Erre hasznlhatk az albbi fggvnyek:

    is_bool() logikai-?is_int(), is_integer() egsz-e?is_float(), is_real(), lebeg'pontos-e?is_object() Objektum-e?is_array(). Tmb-e?

    Is_string() string-e?Az tadott adatokbl clszer%kivenni a HTML kdokat, mivel biztonsgi problmk merlhetnek fel

    Az tadott rtkekb'l clszer%kiszedni a [{()}] jeleket.

    Ha az gy bevitt rtkek kzvetlenl SQL lekrdezsek sszelltsra hasznlatosak, akkor clszer %mg egybspecilis jelek kivtele is, pldul = OR, AND ! stb...

    $a =array([,{,(,),},],or,and,!);$str = str_ireplace($a, " ", $str);

  • 5/21/2018 PHP Programoz s Kezdoknek

    47/95

    47

    $nev =;$pwd=;$uz =;

    if (isset($_POST[OK]) $OK =$_POST[OK];if (isset($_POST[nev]) $nev =$_POST[nev];if (isset($_POST[pwd]) $pwd =$_POST[pwd];

    if ($OK =OK) {$nev =$_POST[nev];$pwd =$_POST[pwd];

    //HTML tag-ek kiszedse$nev = strip_tags($nev);$pwd = strip_tags($pwd);

    //specilis jelek kivtele$a =array([,{,(,),},],or,and,!);$str = str_ireplace($a, " ", $str);

    if (!isset($nev) or empty($nev)) $uz =Tltsd ki a nv beviteli mez #t;if (!isset($pwd) or empty($pwd)) $uz .=Tltsd ki a jelsz beviteli mez #t;}

    if (!empty($uz)){

    //Form kiiratsaprint(

    .$uz.

    );print();print();print(Nv:print();print();

    print(Jelsz:);print();print( );print();print();print();}else{

    /* Feldolgozs*/}?>

  • 5/21/2018 PHP Programoz s Kezdoknek

    48/95

    48

    16 Formok adatainak feldolgozsa szerver- s kliens oldalonA PHP-ben a HTML %rlapok (FORM-ok) felhasznlsval trtnik meg az interakci a felhasznl s programjakztt. Az %rlapok hasznlatnak gyakori formja, hogy az %rlap a sajt magt tartalmaz oldalt hvja meg s az%rlap kitltttsgt olyan kddal ellen 'rizzk, amely ugyanazon az oldalon van. Ez clszer %en azrt lehet gy,mert a beviteli formtum s az ellen 'rzs is egy helyen tallhat. A pldban egy egysz tpus, 1000-nlnagyobb adatot s egy folyszmla nevet vr a beviteli oldalon a program.

  • 5/21/2018 PHP Programoz s Kezdoknek

    49/95

    49

    A prbeszdek alkalmazsnl fontos, hogy ellen 'rizzk a bevitt adatokat, mivel vletlenl, akarva vagyakaratlanul olyan adatok kerlhetnek a meghvott oldalra, aminek tpusa, formtuma nem felel meg azelvrsoknak ennek rdekben az albbi ellen'rzseket clszer%megtenni:

    Egy oldalon minden mez'ki van-e tltve

    A megfelel'tpus, formtum adat kerlt-e bele

    Nincs-e benne HTML vagy PHP, vagy SQL utasts kd (ezek sanda szndkok esetn szoktak bekerlni)

    Az ellen 'rzst kt lpcs 'ben clszer%megtenni. A kliens oldalon megfelel 'Javascript kd segtsgvel s aszerveroldalon a PHP kd segtsgvel, mint fent is ltszik.

    Br a Javascript ennek a jegyzetnek nem tmja, azrt az ellen 'rzsre adunk pldt itt. A megolds alapja, hogyminden beviteli mez'vagy a Formon lv 'Elkld gomb megnyomsra lefut egy ellen 'rz'script a bngsz'n,ami ellen'rzi, hogy ki vannak-e tltve a megfelel'mez'k.

    A Javascript ellen'rzs ugyanakkor nem helyettesti a PHP oldali ellen 'rzst, mert a bngsz'oldalon megfelel'technikkkal el lehet kerlni az ellen'rzst.

  • 5/21/2018 PHP Programoz s Kezdoknek

    50/95

    50

    17 Levlklds, plain text, html levl, attachementA PHP-ban van lehet 'sg arra, hogy leveleket kldjnk el megadott cmre, megadott tartalomal. Azzenetkldshez el'szr a PHP.INI-ben be kell lenni lltani az albbi szakasz rtkeit. Az albbi sorok a Win32-es rendszeren belltandkat tartalmazza. Be kell lltani annak az SMTP szervernek a cmt kell rni, amelyikelkldi a levelnket s annak a usernek a nevt, akivel defaultban kldnk levelet.

    [mail function]

    SMTP = mail.szily.sulinet.hu ;for win32 onlysendmail_from = [email protected];for win32 only

    A levl elkldse a mail paranccsal trtnik, de miel 'tt elkldennk, ltre kell hozni azokat a stringeket, amelyeksegtsgvel a levl klnbz'szakaszai ltrejnnek.

    $cimzett = [email protected];$tema = drgm;$uzenet = A klykk sszementek. Mind a kett#t hiba keresem. Gza$fejlecek .= "From: T#lem \n";$fejlecek .= "X-Sender: \n";$fejlecek .= "X-Mailer: PHP\n"; // Levelez #program$fejlecek .= "X-Priority: 1\n"; // Srg #s zenet!

    $fejlecek .= "Return-Path: \n"; //Hiba esetn ide jn levl

    mail($cimzett, $tema, $uzenet, $fejlecek);

    A levl szvegt s a fejlcet tovbb cifrzhatjuk. A fenti mez 'kn kvl hasznlhatjuk pldul a cc: bc: Reply-To: s a hasonl fejlc mez'ket is. Hogy milyen mez'ket lehet hasznlni, bmelyik leveled fejlcb'l kinzheted.

    Sajnos az attachmentek kezelse nem tartozik ele a php ltal tmogatott dolgok krbe, ezrt kls 'alkalmazsnlkl nem tudunk attachmentet kldeni php-ben.

    Egy lehet'sg addik komolyabb levelezsi funkcik hasznlatra. Meg kell hvni egy kls ', parancssorilevelez'szoftvert, amelynek a megfelel 'paramterezsvel tetsz'leges levelezsi funkckat el lehet rni. Ilyen

    szoftver pldul a POSTIE.EXE Windows alatt. Ez a program s ms hasonl programok az Internetr 'lletlthet'k.

    A levelezs krdskrben fontos, hogy formzott leveleket is tudjunk kldeni. Erre alkalmasak a HTML levelek.A HTML levelek kldshez elg sokmindent el kell vgezni, alapesetben a PHP nem tmogatja a HTML levelekkldst, de a NET-en tallhatk egyszer %objektumcsomagok, amelyek ebben az esetben segtenek(http://phpmailer.sourceforge.net) Ennek a csomagnak a hasznlatra lljon itt egy plda:

  • 5/21/2018 PHP Programoz s Kezdoknek

    51/95

    51

    echo "A szveg nem ment el.

    ";echo "Levelez#hiba " . $mail->ErrorInfo;exit;

    }

    echo "A levl elment";?>

    A fenti csomag teleptsekor gondoskodni kell arrl, hogy a PHP.INI-ben be legyen lltva az include_path aclass.phpmailer.php file-ra, amit az albbi mdon tehetnk meg futs kzben:

    $incl_path = ini_get("include_path");$incl_path .= ;./phpmailer;ini_set("include_path", $incl_path);

  • 5/21/2018 PHP Programoz s Kezdoknek

    52/95

    52

    18 AdatbzisokA PHP programozsi nyelv gy kezeli az adatbzisokat, hogy a nyelvbe beptettk az elterjedt s tmogatottadatbzis-kezel'k tmogatst. Az adatbziskezel 'k ltalban SQL rendszerek, s kliens-szerver minta szerintm%kdnek egytt a PHP-val.

    Egy PHP-val meghajtott adatbzis-kezel'rendszernek az albbiakban lehet felrajzolni a m%kdsi smjt:

    Szerver szmtgp /szerver oldal Kliensszmtgp

    HDD/adat-

    bzis

    Adatbzis-kezel'

    program