DIPLOMAMUNKA. Webes aktív oldalak készítése adatbázis eléréssel, HTML és programkód elkülönítésének lehetősége.

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "DIPLOMAMUNKA. Webes aktív oldalak készítése adatbázis eléréssel, HTML és programkód elkülönítésének lehetősége."

Átírás

1 DIPLOMAMUNKA Webes aktív oldalak készítése adatbázis eléréssel, HTML és programkód elkülönítésének lehetősége. Eötvös Loránd Tudományegyetem Természettudományi Kar Programtervező matematikus szak Nappali tagozat Budapest, 2003 Készítette: Újfalusi Krisztián Témavezető: Nikovits Tibor

2 Tartalomjegyzék 1. Bevezetés Alapfogalmak Windows alatt IIS webkiszolgáló telepítése Linux alatt Apache webkiszolgáló és PHP telepítése Microsoft SQL szerver telepítése Windows alatt MySQL telepítése Linux alatt Webes aktív oldalak készítése adatbázis eléréssel Webkiszolgálók SSI opciója ASP illetve PHP működési modellje ASP illetve PHP oldalak létrehozása Változók és állandók létrehozása, hatókörük ASP-ben Változók és állandók létrehozása, hatókörük PHP-ben Munkamenet változók használata ASP-ben és PHP-ben Megjegyzések, utasítások írása ASP-ben és PHP-ben Operátor, kifejezés, elágazás, ciklus, eljárás ASP-ben Operátor, kifejezés, elágazás, ciklus, eljárás PHP-ben Fájlok beágyazása ASP-ben és PHP-ben Űrlapadatok feldolgozása ASP-ben és PHP-ben Sütik (cookie-k) használata ASP-ben és PHP-ben Adatbáziskapcsolat ASP-ben és PHP-ben HTML és programkód elkülönítésének lehetősége Elkülönítés megvalósítása ASP-ben Elkülönítés megvalósítása PHP-ben Példaprogram Mellékletek Microsoft SQL Server 2000 telepítésének folyamata IIS webszerver előre definiált változói ASP-ben Apache webszerver előre definiált változói PHP-ben PHP előre definiált változói és állandói ASP-ben megvalósított statisztikai rendszer forráskódja PHP-ben megvalósított statisztikai rendszer forráskódja Irodalomjegyzék

3 1. Bevezetés 3 / Bevezetés Napjainkban igen jelentős szerepet tölt be az Internet. Amikor egy oldalt töltünk le a távoli webkiszolgáló szerverről, aközben igen sokféle folyamat zajlik le. A diplomamunkám első részében röviden szólnék ennek a technikai hátteréről, vagyis hogyan történik valójában egy hivatkozás feloldása, az ott található információ letöltése. A komolyabb oldalak elkészítéséhez szükség van dinamikusságra és interaktivitásra. Ezért a HTML kódokba különféle parancsfájlkódok kerülhetnek. Ezek lehetnek kliens oldaliak, de ebben az esetben a böngésző kliens programnak tudnia kell értelmezni és futtatni a parancsfájlkódokat. Ilyen például a Javascript, Java alkalmazások, Flash objektumok. Általában az ilyen oldalakat statikus HTML oldalnak nevezzük. Ezzel szemben a dinamikus HTML oldalak szerver oldali parancsfájlkódokat tartalmaznak, amelyeket a kiszolgáló futtat le és a végeredmény a kliens számára egy statikus HTML oldal lesz. Diplomamunkámban a szerver oldali parancsfájlkódok írásával foglalkozom. Első részben azzal, hogy hogyan is kell telepíteni egy ilyen webkiszolgálót Windows operációs rendszer alatt, valamint Linux operációs rendszer alatt. Windows alatt jellemző webszerver az IIS (Internet Information Server) és a szerveroldali parancsfájl nyelv az ASP (Active Server Pages). Linux alatt a legelterjedtebb és legjobban támogatott nyílt forráskódú Apache webszerver a jellemző, valamint a legszélesebb körben használt PHP (Hypertext Preprocessor). Megjegyezném, mivel az Apache és a PHP is nyílt forráskódú programok, ezért létezik Windows operációs rendszer alá telepíthető változat is. A PHP és ASP parancsfájl nyelvet hasonlítom össze. Kitérnék arra, hogyan lehet adatbáziskiszolgálóval összekapcsolni a dinamikus oldalainkat az egyes parancsfájl nyelvek segítségével. A Windows operációs rendszer alatt a Microsoft SQL 2000 Server a legelterjettebb, a komolyabb aktív weboldalak adatbázisa ilyen szerverhez kapcsolódik. Linux alatt több szintén nyílt forráskódú SQL szerver található, én MySQL szervert használatát mutatom be. Megjegyezném, ennek szintén van Windows alá átültetett verziója. A diplomamunkám második felében bemutatom, hogy miként lehet a HTML kódsorokat a parancsfájl kódsoroktól a lehető legjobban elkülöníteni, ezzel szétválasztva a webprogramozók és a webdesignerek munkáját. Vagyis egy weblap fejlesztése során a következő lépések adódhatnak: - adatbázisok kialakítása; - adatokkal való feltöltése; - adatbázisból történő lekérdezések és módosítások leprogramozása; - tényleges HTML kódok, azaz a design kialakítása. Legvégül egy egyszerű alkalmazást mutatok be, amely a weboldalak látogatottságát méri, oly módon, hogy adatbázisban tárolja a különféle letöltéssel kapcsolatos információkat. Ezek az információk, hogy az adott oldalt mikor töltötték le, milyen IP címről, és a kliens program milyen kliens információt közölt a webkiszolgálóval.

4 1. Bevezetés 4 / Alapfogalmak Az alábbi táblázatban szeretném összefoglalni azokat az alapfogalmakat, amelyekre a diplomamunkám során hivatkozom. Ezeknek jelentősége van a webkiszolgálók beállításánál és böngésző programoknál is. A magyarázatok inkább áttekintő jellegűek, nem a teljes és pontos definíciók, inkább tömör és számomra lényeges tulajdonságaiknak a leírása. Alapfogalom Magyarázat TCP/IP: Az Internet alapprotokollja. Az IP protokoll felelős a két entitás közti kommunikáció lebonyolításáért. Az entitások rendelkeznek egy 32 bites egyedi IP címmel, és csomagkapcsolt hálózaton keresztül kommunikálnak egymással. A TCP (Transport Control Protocol) gondoskodik arról, hogy az adatkommunikáció sorrendtartó és veszteségmentes legyen. Létezik olyan IP protokoll is, amely nem sorrendtartó és nem garantált a csomagok megérkezése sem, ez az UDP. IP cím: Entitás egyedi azonosítója. Jellemzően még az IPv4 használatos, amely 32 bites címeket használ, így 2 32 entitás címzését teszi lehetővé. Pl. egy ilyen lehetséges IP cím Már sok helyen megtalálható a következő generációs IP protokoll, amely IPv6 nevet kapta és 128 bites címeket használ, így már entitás kommunikációját teszi lehetővé. Entitás: Általában egy olyan eszközt értünk alatta, amely önálló IP címmel rendelkezik és kapcsolódik az Internethez. Jellemzően ez valamilyen kiszolgálót takar, amely rendelkezik egy hálózati interfésszel és operációs rendszerrel, amely azt használni tudja. Mivel egy kiszolgálónak lehet több hálózati interfésze is, vagy egy hálózati interfésznek több IP címet is adhatunk, ezért egy kiszolgáló nem feltétlen azonos az entitás fogalmával. DNS: Domain Name System. Mivel az IP címeket nehéz fejben tartani, ezért általában egy entitás IP címére név alapján hivatkozunk. Ennek a feloldását végzi a DNS protokoll. Egy konkrét nevet egy bizonyos úgynevezett TLD (Top Level Domains) alá lehet regisztrálni. Minden országnak a sajátja TLD-je, pl. Magyarországnak.HU, valamint vannak még az úgynevezett gtld (generic Top Level Domains), mint pl..com,.net,.org,.info,.biz, amely alá szinte bárki regisztráltathat nevet, aki az ICANN szabályainak eleget tesz. Új domain nevek létrehozásával kapcsolatos ügyeket általában a NIC.TDL, pl. Magyarország esetén a címen tudhatjuk meg. Legyen pl. egy első szintű domain név: cegnev.hu. Ez alá a tulajdonosa tetszőleges subdomaint állíthat be. Egy-egy ilyen domain név illetve subdomain, pl. mutat egy IP címre. Természetesen egy IP címre több ilyen domain név is mutathat, ezeket alias-oknak nevezzük, más néven host-nak, vagy hostname-nak (magyarul, hoszt, vagy hosztnév). Számunkra ez a fontosabb, ugyanis a névfeloldás során a hosztnév által mutatott IP címet kapjuk meg. Általában le lehet kérdezni egy adott IP címhez tartozó domain nevet is, ebből csak egy létezhet az úgynevezett RDNS (Reverse DNS). Ez egy speciális ága a DNS fának, nevezetesen.in-addr.arpa ágban helyezkedik el, előtte pedig szerepel az IP cím fordított sorrendben leírva. Protokoll: A TCP/IP protokollra igen sok másik protokoll épül. Ezek különféle feladatok ellátásának szabványosítását teszik lehetővé. Ilyen például az SMTP, amely a levelezést ( ) teszi lehetővé; FTP (File Transfer Protocol); HTTP (Hypertext Transfer Protocol), amely a WEB böngészéskor használunk. Ezen kívül persze számos protokoll létezik még, pl.: NEWS, GOPHER, TELNET, SSH.

5 1. Bevezetés 5 / 91 Alapfogalom Magyarázat Port: TCP/IP számunkra két entitás közti sorrendtartó és veszteségmentes kommunikációt biztosítja. De az entitások egymással többféle módon is kapcsolódhatnak. Pl. az adott entitás egy kiszolgálószerver, amelyen levelezés, és web szolgáltatás is fut. Ezért az adott entitáson még 1 port is kapcsolódik az egyes alkalmazásokhoz, protokollokhoz, amely a TCP/IP protokoll része. Ezt a portot az operációs rendszeren keresztül lehet lefoglalni. A port egy 16 bites szám, így közti értékeket vehet fel. A legtöbb protokollnak van alapértelmezett portja. A HTTP alapértelmezett portja a 80-as port. HTTP: A webszerver és a kliens közti kommunikációt biztosító protokoll. Létezik HTTPS protokoll is, ami a HTTP protokollt egy titkosított SSL (Secure Socket Layer) csatornába ágyazza be. Webszerver, Webkiszolgáló: A HTTP protokoll szerver oldali alkalmazása. A szerverprogram, vagyis a webkiszolgáló egy adott entitáson fut, tehát rendelkezik egy IP címmel, valamint alapértelmezés szerint az operációs rendszer TCP/IP alrendszerének a 80-as portját foglalja le, és oda érkező kérelmekre válaszol. A szerverre jellemző, hogy fix IP címmel rendelkezik. Webes ügyfél, A HTTP protokoll kliens oldali alkalmazása. Használata során Webböngésző, hivatkozni kell egy webcímre (URL), amely alapján a megfelelő Webes kliens: webkiszolgálóhoz fordul, ha létezik, és letölti, majd megjeleníti az ott található tartalmat. A hivatkozást egy úgynevezett URL formátumban kell megadni. Windows alatt a beépített webböngésző az Internet Explorer. Linux alatt igen sokféle szabadon elérhető webböngésző létezik, pl.: Opera, Netscape, Mozilla, Konquerer, Lynx, Links. Ezek egy részének Windows-os megfelelője is van. URL: Uniform Resource Locator. Általános címzési formátum. A webböngészők is ezt használják. Felépítése a köveztkező: <protocol>://<hostname>:<port>/urlpath. Az alapértelmezett portok az egyes protokollok esetén elhagyhatók. HTTP esetén pl. a következőképpen néz ki: vagy pl. A kliens a kiszolgáló felé a teljes URL cím szövegét is elküldi a kérelem során. Virtualhost: A webkiszolgálóra jellemző beállítás. Egy adott hosztnévhez lehet megadni a beállításokat, főként a kezdőkönyvtár (DocumentRoot) paramétert sok más mellett. A webkiszolgáló az URL-el való hivatkozás esetén az adott hosztnévhez tartozó kezdőkönyvtárat [/var/www] egészíti ki az UrlPath-el [/dir1/file2.html], és a webkiszolgáló ezen az útvonalon elérhető állományt próbálja beolvasni [/var/www/dir1/file2.html] és küldeni a webes kliens felé. Van egy speciális hosztnév, a localhost, amelyet az operációs rendszerek hoznak létre. Feloldásakor a es IP címet kapjuk, és ezzel saját magunkat címezhetjük meg. Lehetővé teszi, hogy saját szolgáltatásainkat elérjük, így pl. hálózat nélküli gépen olyan környezetet szimulálhatunk, mintha Internetre lennénk kötve. CGI: Common Gateway Interface. Arra a célra fejlesztették ki, hogy a HTML űrlapok által elküldött adatokat bármely program által fogadni tudjuk, amelyet erre felkészítettek, vagy egy program kimenetét szeretnénk a webkiszolgálóval megjeleníttetni. Ezeket a CGI programokat a webkiszolgáló futtatja le, és adja át a programnak a paramétereket. Például: hivatkozás esetén a test.cgi futáskor paraméterként megkapja a data változót, amely értéke a string lesz. SSI: Server Side Include. Kiszolgáló oldali beágyazások, utasítások, amelyeket a webkiszolgáló hajt végre és az eredményt a HTML oldalakban szereplő speciális (SSI) megjegyzések helyére írja ki.

6 1. Bevezetés 6 / Windows alatt IIS webkiszolgáló telepítése A Windows 2000 és Windows XP változatokban már megtalálható az IIS webkiszolgáló. A diplomamunkám során Windows XP Professional magyar nyelvű változatát használtam, ezért az alább leírtak arra érvényesek, de nagyon hasonlóan történik a Windows más verzióin is a telepítés. Telepítését vagy a Windows telepítésekor végezzük el, vagy utólag a következő módon: Start Menü -> Beállítások -> Vezérlőpult -> Programok telepítése és törlése kiválasztása. A bal részen a Windows összetevők hozzáadás vagy eltávolítása ikonra kattintunk. Ekkor a következő ablak jelenik meg: Itt kiválasztjuk az Internet Information Services (IIS) sort és bejelöljük, hogy telepíteni szeretnénk. A Részletek gomb lenyomásával válogathatunk a komponensek közül. Ajánlott mindent komponenst bejelölni. A tényleges telepítést a Tovább gomb lenyomásával végezhetjük el. Ezzel a telepítéssel, ha minden komponenst kiválasztottunk, akkor máris egy működő webszervert kapunk, amely kiszolgálja a kérelmeket, és ASP parancsfájljainkat is futtatja. Ezt a hivatkozással tudjuk tesztelni. Az alapértelmezett oldal a C:\InetPub\WWWRoot könyvtárban található fájlok alapján jelenik meg. De pl. a URL alatt elérhető IIS dokumentáció fájljai a SystemRoot\help\IISHelp könyvtárban találhatók. (Ez egy alapértelmezett virtuális könyvtár, mivel a C:\InetPub\WWWRoot alatt nincs IISHelp könyvtár.) A SystemRoot általában C:\Windows, amelyik könyvtárba a Windows-t telepítettük. Az ASP fájlokat akár a jegyzettömb segítségével szerkeszthetjük. Teszteljük le a webkiszolgálót: Hozzuk létre a következő fájlt: C:\InetPub\WWWRoot\test.asp a következő tartalommal: <html> <head><title>test.asp - date test</title></head> <body> <%Response.Write"<h1>"&Date()&"</h1>"%> </body> </html> Ekkor a URL hivatkozás esetén a webkiszolgálón futtatott webböngészőben megjelenik a gépünkön beállított dátum.

7 1. Bevezetés 7 / 91 Tegyük fel, hogy állandó Internet kapcsolattal és fix IP címmel rendelkezünk. A példák során legyen ez az IP cím és legyenek a hosztnevek, amelyek DNS alapján ezt az IP címet oldják fel: Ekkor a webkiszolgálónk előbb létrehozott oldalát bármely Interneten lévő webes ügyfél a következő URL beírásával érheti el: Ez azért lehetséges, mert az alapértelmezett webhely kezdőkönyvtárába tettük a test.asp állományunkat. A Windows XP alatt futó IIS 5.1-es webszerver nem teszi lehetővé, hogy több webhelyünk is legyen, ehhez egy Windows kiszolgáló termékre van szükségünk Linux alatt Apache webkiszolgáló és PHP telepítése Mivel nagyon sokféle Linux disztribúció létezik, ezért Linux alatt az adott disztribúcióktól függő módon kell telepíteni az egyes programokat. Általában rendelkeznek csomagkezelővel az egyes disztribúciók, ez alapján általában két csoportba lehet sorolni, mivel két nagyon elterjedt csomagkezelő létezik. Az egyik az RPM (RedHat Package Manager) formátumot használó Linux, a RedHat disztribúció alapértelmezett csomagkezelőjét használja. Az RPM csomagokat rpm i csomagneve.rpm paranccsal tudjunk feltelepíteni. A másik a DEB (Debian Package Manager) formátumot használó Linux, ami a Debian disztribúció alapértelmezett csomagkezelője. A DEB csomagokat a dpkg i csomagneve.deb paranccsal lehet feltelepíteni. Másik telepítési mód, hogy letöltjük a kívánt program forráskódját, jelen esetben az Apache webszervert, a PHP parancsfájlértelmezőt, a MySQL adatbázis szervert és lefordítjuk a saját Linux disztribúciónk alá. A a és a címekről tölthetjük le. Az adott oldalakon, illetve a letöltött forrás mellett is találunk a telepítéssel kapcsolatos információkat. Általában a letölthető forráskód csomagok TAR-ral és GZIP-pel vannak becsomagolva. Pl. tar xfz apache_ tar.gz paranccsal kicsomagoljuk, majd a létrejött könyvtárban (./apache_1.3.27) kiadjuk a következő parancsokat:./configure - prefix=prefix; make; make install. PREFIX helyére érdemes a célkönyvtárat megadni, ami általában a /usr/local szokott lenni a forráskódból installált programok esetén. A PREFIX/bin/apachectl start paranccsal indíthatjuk el az Apache webkiszolgálót. Diplomamunkám során a Debian disztribúcióra vonatkozó (Woody 3.0-ás verzió) telepítést mutatom be. A későbbiekben a konfigurációs állományok szerkesztése során ez alapján írom a példákat. Természetesen ezek a példák a többi disztribúció esetén is érvényesek, csak egyes esetekben az említett útvonalak eltérőek lehetnek. Debian alatt általában telepítéskor felkerül az apt-get nevű csomagkezelő program, amely a dpkg csomagkezelőre épül. Ezzel a következőképpen tehetjük fel az Apache programot és a hozzá tartozó dokumentációt: apt-get install apache apache-doc. Az apt-get több csomagot installál majd fel, feloldva a csomagok függőségét. A telepítést a következő paranccsal ellenőrizhetjük le: user@debian:~$ dpkg -l grep apache ii apache woody3 Versatile, high-performance HTTP server ii apache-common woody3 Support files for all Apache webservers ii apache-doc woody3 Apache webserver docs

8 1. Bevezetés 8 / 91 Az apt-get install php4 paranccsal installálhatjuk az Apache webszerverbe integrálható PHP modult. A telepítés ellenőrzése: user@debian:~$ dpkg -l grep php4 ii php A server-side, HTML-embedded scripting langu Ellenőrízzük le, hogy a telepítő beállította-e a webszerver konfigurációs állományában a PHP modul betöltését, és az egyéb szükséges dolgokat. Ha forráskód csomagból telepítenénk, akkor szintén hasonló beállításokat kellene elvégezni jelen esetben az /etc/apache/httpd.conf fájlban: # A #-el kezdődő sorok megjegyzésnek minősülnek. # PHP4 modul betöltése. LoadModule php4_module /usr/lib/apache/1.3/libphp4.so # Állítsuk be, ha csak index.php fájl van egy könyvtárban, akkor az töltődjön be, ne pedig könyvtárlista jelenjen meg. <IfModule mod_dir.c> DirectoryIndex index.html index.php index.htm index.shtml index.cgi </IfModule> # Ez a beállítás szükséges ahhoz, hogy kiértékelje az Apache a PHP kiterjesztésű fájlokat és # így nem tudja letölteni a kliens. A második sor általában nem szükséges, csak ha a PHP forrásfájlokat is # meg szeretnénk jeleníteni. # Megjegyezném, hogy kiterjesztésnek itt bármi mást is meg tudnánk adni. AddType application/x-httpd-php.php AddType application/x-httpd-php-source.phps Ne feledkezzünk meg az Apache újraindításáról, ha a konfigurációs fájlt módosítottuk. Megjegyezném, hogy az alapértelmezett kezdőkönyvtár a /var/www, ha ezt nem módosítjuk, illetve különböző webhelyeknek a következő módon adhatunk meg más kezdőkönyvtárat, az /etc/apache/httpd.conf állományban: <VirtualHost > ServerName DocumentRoot /var/www/sajatnev1.hu ServerAdmin webmaster@sajatnev1.hu </VirtualHost> 1.4. Microsoft SQL szerver telepítése Windows alatt A Microsoft SQL szervernek többféle verziója van. Erről bővebben a következő címen olvashatunk: Windows XP-re például az SQL Server 2000 Personal Edition verziót lehet telepíteni. A telepítés lépései röviden a következők, a képek az 5.1. számú mellékletben láthatóak: 1. A telepítő automatikusan elindul. Itt válasszuk ki: SQL Server 2000 Components. 2. Következő menüben válasszuk ki: Install Database Server. 3. Tényleges telepítés üdvözlő ablaka jelenik meg. Válasszuk: Next. 4. Saját gépünkre szeretnénk telepíteni, ezért a Local Computert jelöljük be, majd Next. 5. Egy gépre több példányban (instance) is telepíthetjük az SQL 2000 szervert. Válasszuk: Create a new instance of SQL Server or install Client Tools, majd Next. 6. Meg kell adni a nevünket és a szervezetünk nevét, ha van. Majd Next. 7. Fogadjuk el a Licence feltételeket: Yes. 8. Adjuk meg a CD-key-t, majd Next. 9. Válasszuk: Server and Client Tools, majd Next. 10. Adjunk meg egy példánynevet, pl.: HOMESQL, majd Next. 11. Válasszuk a tipikus telepítést, majd Next. 12. Állítsuk be az SQL szervernek működéséhez szükséges rendszer azonosítót, használja a helyi rendszer azonosítót. Válasszuk: Use the Local System account és Use the same account for each service. Auto start SQL Server Service, majd Next.

9 1. Bevezetés 9 / Megadhatjuk, hogy milyen felhasználók használhassák az SQL szervert. Ajánlott a Mixed Mode, ilyenkor a Windows felhasználók mellett az SQL szerverben hozzáadott felhasználok is beléphetnek. Ehhez meg kell adni az sa felhasználó jelszavát kétszer. Majd Next. 14. Next gomb megnyomásával elkezdődik a tényleges telepítés, a fájlok másolása. 15. Sikeresen befejeződött a telepítés. Ezután indítsuk újra a gépet, majd keressük meg a Start Menü -> Programok -> Microsoft SQL Server -> Enterprise Manager programot. Itt hozhatunk létre egy új adatbázist, amely a Windows-ba bejelentkezett felhasználó tulajdona lesz. Legyen ez az adatbázis aspdb. Kiválasztjuk a bal részen a Databases ágat, majd Művelet menüben választjuk a New database menüpontot, ekkor az alábbi hasonló ablak jelenik meg. Névnek írjuk be: aspdb, majd OK gomb lenyomásával létrehozzuk az adatbázist. A későbbiekben \\HOMEPC\HOMESQL nevű MS SQL instanciára fogok hivatkozni. A Security/Login ág alatt lehet létrehozni egy SQL felhasználót, legyen a felhasználó neve: msuser, és a jelszava: asp123. Erre a felhasználó névre és jelszóra fogok hivatkozni a MS SQL használata során. Az adatbázis neve a fenti példában szereplő aspdb lesz. Ehhez az adatbázishoz az msuser teljes hozzáférését be kell állítani a Databases\aspdb\Users ág alatt.

10 1. Bevezetés 10 / MySQL telepítése Linux alatt Bemutatnám Debian alatt a MySQL csomagok telepítését, illetve a szükséges beállításokat. Az apt-get install mysql-client mysql-server mysql-doc paranccsal telepíthetjük fel a szervert, a kliens programot, valamint a dokumentációt. Ezután létre kell hoznunk a kezdeti adminisztrátori jelszót, hasonlóan root felhasználónak hívják, mint a Linux rendszerek alatt az adminisztrátor felhasználót, de a kettőnek egymáshoz nincsen semmi köze. Kezdeti jelszó megadása a következő paranccsal lehetséges: /usr/bin/mysqladmin -u root password '<secret>'. Érdemes létrehozni a következő fájlt az alábbi tartalommal: # an example of /root/.my.cnf [mysql] user = root password = <secret> Ha ezt a fájlt létrehoztuk, akkor nem kell állandóan megadni a felhasználói nevet és jelszót, csak egyszerűen mysql kliens program elindításával tudunk csatlakozni a MySQL szerverhez. Szokás létrehozni minden felhasználónak külön adatbázist, és minden ilyen adatbázishoz tartozik külön felhasználó név és jelszó (akár több is, más jogosultságokkal). Ezt a legkönnyebben a mysql_setpermission segédprogrammal tehetjük meg, ha már adtunk kezdeti jelszót. Ez a Perl-ben megírt segédprogram bekéri interaktív módon a létrehozáshoz szükséges adatokat, majd beszúrja a megfelelő táblákba, amelyek a mysql adatbázis alatt található (user és db táblák). Tegyük fel, hogy létrehoztunk egy phpuser nevű felhasználót php123 jelszóval és phpdb nevű kezdeti üres adatbázissal. Később a példaprogramokban ezen adatokkal fogok hivatkozni a MySQL adatbázisra. A PHP csomaghoz is telepíteni kell a MySQL eléréshez szükséges csomagot, ezt a következőképpen tehetjük meg: apt-get install php4-mysql. A telepítést a következő paranccsal ellenőrizhetjük: user@debian:~$ dpkg -l grep mysql ii libmysqlclient mysql database client library ii mysql-client mysql database client binaries ii mysql-common mysql database common files (e.g. /etc/mysql ii mysql-doc woody mysql database documentation ii mysql-server mysql database server binaries ii php4-mysql MySQL module for php4 Végül ellenőrizzük le, hogy az /etc/php4/apache/php.ini fájl végére bekerült-e a PHPhoz tartozó MySQL modul automatikus betöltésére vonatkozó bejegyzés: # Betölti a MySQL modult automatikusan, amikor Apache webszerveren keresztül használjuk a PHP-t. extension=mysql.so Teszteljük le a webkiszolgálót: Debian alatt az alapértelmezett kezdőkönyvtárban [/var/www], amelybe alapbeállítások szerint csak a rendszergazda jogosultsággal rendelkező felhasználó írhat, hozzunk létre egy test.php állományt a következő tartalommal: <?php phpinfo(); A URL címen érhetjük el az oldalt a webkiszolgálón futatott webböngésző programból. Ha mindent sikeresen beállítottunk, akkor megjelenik a PHP telepítéskor megadott beállításait, jellemzőit ismertető oldal, valamint az egyes PHP modulokról is találhatunk információt, pl. a MySQL modulról is.

11 2. Webes aktív oldalak készítése adatbázis eléréssel 11 / Webes aktív oldalak készítése adatbázis eléréssel Mint a bevezetőben már említettem két eltérő platformon alkalmazható technológiát szeretnék bemutatni és összehasonlítani. Az egyik a Windows platform IIS webkiszolgálója és ASP parancsfájlnyelve. Itt még egyszer kiemelném, hogy a nyílt forráskódú Linux alá létező megoldások nagy része áttehető Windows alá is, de eredetileg UNIX-os környezetre fejlesztették ki őket, ezért adott esetben ott könnyebb telepíteni. A másik technológia a Linux/UNIX platform alatt az Apache webszerver és PHP programnyelv. Hagyományos webszerver programozás a CGI programokkal volt lehetséges. Ezeknél a legnagyobb gondot a hordozhatóság hiánya jelentette, illetve nem nyújtott egységes felületet, mivel szinte bármilyen programnyelven készülhettek az egyes CGI programok. Ha az adott CGI program hibás volt, akkor még a webszerver biztonságát is veszélyeztethette. Jellemzően ezek C/C++ nyelven íródtak, vagy shell programok voltak, pl. Perl-ben készültek. Az ASP és a PHP is olyan parancsértelmező (interpreter) nyelvek, amelyek hatékonyan futtatják a programokat. Nagyon sok funkciót, eljárást lehet elérni, valamint a programozók számára egy roppant egyszerű szintaxist kínálnak. Az ASP és a PHP kimenete szövegfájl, ami általában egy HTML oldal, persze lehet más is, mint pl. egy képfájl. A PHP programokat parancssorból is lehet futtatni, tesztelésnél ez hasznos lehet. A CGI programozásra még használatos a fent már említett Perl interpreter nyelv, amely szintén nagyon sok előre megírt modult és eljárást tartalmaz. Programozási szempontból haladóbb programozóknak ajánlott, mivel szintaxisa nagyon bonyolult és átláthatatlan is tud lenni. Perl nyelv sok egyéb olyan szolgáltatást is biztosít, amely az adott operációs rendszerhez kapcsolódik, mint pl. fájlműveletek, hálózat és grafikus felület programozása. Legnagyobb erősége a reguláris kifejezések feldolgozásában van. Az alábbiakban bemutatok egy Perl programkódot, amely a webszerver megfelelő beállításai mellett lefuttatható. CGI programozás során a legalapvetőbb különbség, hogy a MIME-type információt kell kiírnunk az első sorban, ami alapján HTTP fejlécben tudatjuk a klienssel, hogy milyen típusú fájt tölt le. #!/usr/bin/perl print "Content-type: text/html\r\n\r\n"; print "Hello, World."; A PHP és ASP programozása során nem kell megadni a MIME-type információt, mivel az alapértelmezés szerint HTML. Csak akkor kell megadni, ha ettől eltérő típusú oldallal szeretnénk megjeleníteni, pl. egy képet. A PHP és ASP jellemzője, hogy weboldalak készítéséhez szükséges és fontos eljárásokat tartalmaznak. Egyik ilyen kategóriája az eljárásoknak, amelyek valamely adatbázishoz történő kapcsolódást tesznek lehetővé. PHP esetén elég sok lehetőség kínálkozik: MySQL, PostgreSQL, Microsoft SQL, Unified ODBC, dbase, Informix, Interbase, Ingres, msql, Oracle 8, Ovrimos, Sybase. Ezekből a legelterjedtebb a MySQL és a PostgreSQL, amelyek nagyon hasonló tulajdonságokkal rendelkeznek. A Unified ODBC eljárások segítségével tetszőleges adatbázisforráshoz csatlakozhatunk, amelyhez elkészítették az ODBC meghajtóprogramot. Az ASP kétféle módon kapcsolódhat adatbázishoz. Az egyik ilyen, az OLE DB kapcsolódás, ide tartozik a Microsoft Access, Microsoft SQL, Oracle, Microsoft Indexing Service. A másik mód az ODBC, amellyel adatforrás-illesztőprogramhoz kapcsolódhatunk, mint pl. Microsoft Access, SQL Server, Oracle, Microsoft Excel, Microsoft Excel 97, Paradox, Szöveg, Microsoft Visual Foxpro.

12 2. Webes aktív oldalak készítése adatbázis eléréssel 12 / 91 Diplomamunkám során én csak a MySQL, illetve a Microsoft SQL Server elérését mutatom be, a többi is nagyon hasonlóan történik. Az SQL szerverek elérésénél voltaképpen a megszokott SQL parancsok alkalmazhatóak, figyelembe véve az adott SQL szerverre jellemző egyedi eltéréseket (pl. dátumkezelő függvények) Webkiszolgálók SSI opciója Az Apache és az IIS is képes az SSI-direktívák feldolgozására. Az SSI lényege, hogy feldolgozza a HTML weblap bizonyos HTML megjegyzéseit. Ha nem tudja értelmezni a webkiszolgáló, akkor a kliensek számára csak forráskód megtekintésével lesz látható, mint megjegyzés. Egyik legfontosabb direktíva, a fájlbeágyazó direktíva. Ha hivatkozhatunk egy fájlra, akkor a webkiszolgáló behelyettesíti az adott hivatkozás helyére a hivatkozott fájl tartalmát. Ha egy webtartalom minden lapjának ugyanaz a fejléce és a lábléce, akkor csak a törzseket kell megírni és a fej- és láblécekre elég hivatkozni. Lásd majd az alábbi 1. számú példát. Így nem kell minden fájlban átírni a változtatásokat, elég csak egy helyen. Az Apache webkiszolgáló esetén ezt külön be kell állítani az /etc/apache/httpd.conf állományban: LoadModule includes_module /usr/lib/apache/1.3/mod_include.so AddType text/html.shtml AddHandler server-parsed.shtml Ebben az esetben az SHTML kiterjesztéssel létrehozott HTML oldalakban a webkiszolgáló ki fogja értékelni a fájlban található SSI direktívákat. Ez egy globális megoldás, de adott esetben megadhatjuk másmilyen fájlokra is egyesével, vagy könyvtáranként az Options +Includes beállítással. Az SSI-direktívák webkiszolgálótól függenek, Apache webkiszolgálónál a következő címen olvashatunk róla: Szintén dinamikus programozást tesz lehetővé, bár használata leginkább csak apróbb dinamikus oldalak létrehozására, illetve dinamikus elemek beszúrására ajánlott. Létrehozhatunk változókat, kiírathatjuk a változók értékét, írhatunk elágazást, futtathatunk programokat, és beágyazhatunk HTML vagy CGI oldalakat. 1. számú példa: header.html fájl tartalma: <html> <head> <title>1. számú példa HTML címsora</title> </head> <body> <h1>fejléc </h1> <hr> footer.html fájl tartalma: <hr> </body> </html> main1.shtml fájl tartalma: <!--#include virtual="/header.html" --> Ez itt az egyik oldal dátummal. <br>mai dátum:<!--#echo var="date_local" --> <!--#include virtual="/footer.html" --> main2.shtml fájl tartalma: <!--#include virtual="/header.html" --> Ez itt a másik oldal. <!--#include virtual="/footer.html" -->

13 2. Webes aktív oldalak készítése adatbázis eléréssel 13 / 91 A következő SSI-direktívák adottak IIS alatt: - #config: Meghatározza az SSI hibaüzenetekben használandó karakterláncot, valamint a #flastmod és #fsize direktívák által visszaadott dátumokhoz és fájlméretekhez használandó formátumot. - #echo: Kiszolgálóváltozó értékét illeszti be egy adott HTML-lapba. - #exec: Alkalmazásokat vagy operációsrendszer-parancsokat futtat, és ezek eredményét HTML-lapba ágyazza. - #flastmod: Beszúrja a weblapra a fájlnak a #config direktíva által formázott módosítási dátumát. - #fsize: Beszúrja a weblapra a fájlnak a #config direktíva által formázott méretét. - #include: Felveszi a fájlt a weblapra. Ez az egyetlen direktíva, amely ASP- és SHTML-fájlokban használható. Ezek az SSI-direktívák hasonlóan működnek Linux alatt is, legfeljebb az egyes visszaadott dátumok formátumában térhetnek el. Apache nem támogatja az #fsize direktívát, de támogatja a #set direktívát, amivel változóknak lehet értéket adni. De van egy lényeges különbség az #include direktívában. Az Apache csak egy mélységig ágyazza be a fájlokat, míg az IIS a beágyazott oldalt is megvizsgálja, az abban található SSI-direktívákat feldolgozza, tetszőleges mélységig. Ezen kívül az #include direktíva alkalmazható ASP oldalakon is, míg a többi nem, azoknak van ASP programbeli megfelelője Az ASP illetve PHP működési modellje Az ASP és a PHP kiszolgálóoldali szkriptek (parancsfájl-utasítások) írását teszi lehetővé, amelyek kódja HTML-kódba ágyazva jelennek meg. Bármire képesek, amit más CGI programok el tudnak végezni, ilyen funkciók az űrlap adatok feldolgozása, dinamikus tartalom generálása, vagy sütik küldése és fogadása. Az ASP és a PHP nagyon hasonlít az SSI működéséhez, csak sokkal több lehetőséget biztosít számunkra. Az Apache és az IIS kiszolgálónál is be lehet állítani, hogy milyen kiterjesztésű fájloknál dolgozza fel az esetlegesen bennük található SSI-direktívákat. Az IIS esetén az alapértelmezett a STM, SHTM, SHTML kiterjesztés, ezt a listát lehet módosítani, attól függően, hogy mit rendelünk hozzá lényegében mit társítunk az SSINC.DLL-hez. Az Apache esetén az ajánlott az SHTML, de az /etc/apache/httpd.conf konfigurációs fájlban ezt tetszőlegesen megadhatjuk. IIS-nél az ASP kiterjesztésű fájlok az ASP.DLL fájlhoz vannak rendelve, ezt nem lehet megváltoztatni, valamint ehhez a kiterjesztéshez mást már nem tudunk társítani. Apache esetén a PHP fájlokhoz is tetszőleges kiterjesztést vagy akár kiterjesztéseket rendelhetünk. Az ilyen kiterjesztéssel rendelkező fájlokat az Apache kiszolgáló PHP modulja dolgozza fel. Alapértelmezés szerint egy PHP illetve ASP oldal normál HTML oldalnak számít, tehát ha írunk egy szöveges fájlt, ami esetlegesen HTML-kódokat is tartalmaz, akkor az már egy PHP illetve ASP oldal lehet. Ezzel lényegében semmit nem történik, változatlanul vissza kapjuk az oldalunkat, csak a webszerver lefuttatja az ASP vagy a PHP parancsértelmezőn. Az IIS 5.1-es verziója, azt hirdeti magáról, hogy az ilyen statikus HTML fájlokat, amelyek nem tartalmaznak parancsfájlkódokat, jóval gyorsabban dolgozza fel az ASP.DLL, mint az előző verziói.

14 2. Webes aktív oldalak készítése adatbázis eléréssel 14 / 91 Az alábbi 1. ábrán látható egy egyszerű statikus HTML oldal megjelenítésének a modellje. Ahol a webes ügyfél egy kérést küld a webkiszolgáló felé, hogy az ott található sajatfajl.htm fájlt küldje el neki. Majd a válaszban meg is kapja a kért fájlt módosítások nélkül, és ezt jeleníti meg a webes ügyfél, ami a jelen példában az aktuális dátum. A 2. ábrán látható az ASP működési modellje, ami igaz a PHP esetében is. Innen ered a kiszolgálóoldali parancsfájl elnevezés, ugyanis amikor az ügyfél ASP oldalt kér le, akkor mielőtt a kiszolgáló elküldené a választ, azelőtt a kiszolgáló az ASP-fájlt az ASP parancsvégrehajtón keresztül küldi át, ahol a kiszolgálóoldali parancsfájlkódok végrehajtásra kerülnek, illetve HTML-kódra konvertálódnak. A konvertált kódok ezután átkerülnek a webügyfélhez. 1. ábra 2. ábra 2.3. Az ASP illetve PHP oldalak létrehozása Az ASP és a PHP oldalakat is tetszőleges szövegfájl szerkesztővel hozhatjuk létre. Természetesen vannak professzionálisabb fejlesztőeszközök is hozzá, ASP-hez például a Miscrosoft Visual InterDev; PHP-hoz pedig például a PHPEditor, amelyet a webcímről tudunk letölteni. A legegyszerűbben a már létező HTML oldalainkból is létrehozhatunk ASP illetve PHP oldalakat, csak meg kell változtatni az eredeti fájl kiterjesztését HTML-ről ASP-re vagy PHP-re. Az ASP / PHP oldalak az alábbi elemek kombinációját tartalmazzák: - szöveg, - HTML-kódok, - kiszolgálóoldali parancsfájlok. A HTML fájlok szöveges fájlok, amelyek tartalmazhatnak (és általában tartalmaznak is) HTML-kódokat. Számunkra lényegesebb a harmadik elem: kiszolgálóoldali parancsok. Kiszolgálóoldali parancsfájl-utasítások hozzáadása: A kiszolgálóoldali parancsfájl olyan utasítássor, amellyel egymás után adhatók ki parancsok a webkiszolgáló számára. (Ha már előzőleg is fejlesztett webhelyeket, akkor valószínűleg ismeri az ügyféloldali parancsfájlokat, amelyek a webböngészőn futnak.) Az ASP fájlokban a parancsfájlokat határolójelek különböztetik meg a szövegtől és a HTMLkódoktól. A határolójel olyan karakter vagy karakterlánc, amely egy egység kezdetét vagy végét jelöli. A HTML esetén ezek a határolójelek a HTML-kódokat határoló "kisebb mint" (<) és "nagyobb mint" (>) szimbólumok.

15 2. Webes aktív oldalak készítése adatbázis eléréssel 15 / 91 Az ASP a <% és a %> határolójelek segítségével jelöli a parancsfájl-utasításokat. A határolójelek közé bármely, a használt parancsnyelvben érvényes parancsot be lehet írni. A határolójelek között lévő parancsokat elsődleges parancsfájl-utasításoknak hívják, ezeket az elsődleges parancsnyelv segítségével dolgozza fel a rendszer. A parancsfájlhatárolójelek között használt parancsoknak az elsődleges parancsnyelvben érvényes parancsoknak kell lenniük. Az alapértelmezett parancsnyelv a VBScript, azonban más alapértelmezett nyelv is megadható. Ha nem az alapértelmezett parancsnyelvet szeretnénk használni, akkor az ASP oldal első sorában meg kell adni, a parancsfájl-utasításokat feldolgozó parancsleíró nyelvet, az alábbihoz hasonlóan: <%@ LANGUAGE=ParancsleíróNyelv %> IIS esetén két beépített parancsleíró nyelvet adhatunk meg, ami a Windows operációs rendszer része is egyben: VBScript és JScript. Mindkét nyelv esetén érvényes, hogy a felhasználó felület elemeinek programozására szolgáló InputBox és MsgBox objektumok nem elérhetőek, valamint a CreateObject és GetObject metódusok helyett a Server.CreateObject metódust kell használni. A VBScript és a JScript közötti lényeges különbség, hogy az első nem tesz különbséget a kis- és a nagybetűk között és a Miscrosoft Visual Basic része, míg utóbbi különbséget tesz és a szintaxisa a C hez és Java-hoz hasonlítható. A PHP a <?PHP és a határolójelek segítségével jelöli a parancsfájl-utasításait. De általában alkalmazható a <? és a határolójelpár is. Az ASP típusú határolójelek (<% és %>) használata is megengedett (a PHP megfelelő beállításai mellett), valamint az érték kiíró rövidítés is használható (<?= $valtozo vagy ASP típusú: <%= $valtozo %>), ha be van állítva a konfigurációs fájlban. A PHP nyelv szintaxisa leginkább a C, JAVA, PERL nyelvekre hasonlít. A PHP-módba kerülésére 4 fajta lehetőség van: 1. <? echo ("Ez a legegyszerűbb, egy SGML processing utasítás\n"); <?= $valtozo; # Ez egy rövidítése a "<? echo.."-nak 2. <?php echo("ha XHTML vagy XML dokumentumokat is akarsz szolgáltatni,". "biztos szeretni fogod ezt\n"); 3. <script language="php"> echo ("Néhány szerkesztő (ilyen pl. a FrontPage) nem". "szereti a processing utasításokat"); </script> 4. <% echo ("Használhatsz ASP-stílusú tag-eket"); %> <%= $valtozo; # Ez egy rövidítése a "<% echo..%>"-nak %> Diplomamunkámban az ASP alapértelmezett VBScript nyelvét és a PHP nyelvet hasonlítom össze. Olyan oldalak készítéséhez szükséges nyelvi elemeket mutatom be, amelyek szükségesek webfejlesztés során és más programozási nyelvekre kevésbé jellemzőek. Az egyik ilyen elem, az űrlapok által küldött adatok feldolgozása, vagy a HTTP-fejlécekben átadott paraméterek feldolgozása. Megjegyzés a VBScript programozásához: A VBScript alkalmazható kliensoldali parancsnyelvként is, ekkor persze a webes kliensnek támogatnia kell ezt a parancsnyelvet. Ilyenkor a HTML fájlban a <SCRIPT> és </SCRIPT> elhatároló karaktersorozatok között lehet megadni a parancsfájl-kódokat HTML megjegyzésként. Ha a kliens támogatja a parancsnyelvet, akkor értelmezi azt, majd az eredményt elhelyezi a megjegyzés helyén, ha nem, akkor csak a forráskódban láthatjuk a kódokat megjegyzésként, mivel a kliens nem dolgozta fel.

16 2. Webes aktív oldalak készítése adatbázis eléréssel 16 / 91 Az alábbiakban látható egy példa HTML fájl, amely ilyen kliensoldali parancsfájlutasításokat tartalmaz: <HTML> <HEAD> <TITLE>Place Your Order</TITLE> <SCRIPT LANGUAGE="VBScript"> <!-- Function CanDeliver(Dt) CanDeliver = (CDate(Dt) - Now()) > 2 End Function --> </SCRIPT> </HEAD> <BODY> 2.4. Változók és állandók létrehozása, hatókörük ASP-ben Az alábbiakban az ASP oldalakkal kapcsolatos információk egy az egyben érvényesek a VBScript nyelvre, vagyis aki Visual Basic programozásban jártas, annak nem jelent akadályt a VBScript használata sem. Aki nem jártas, annak az ASP programozásához a Visual Basic nyelvet érdemes megtanulnia. Mivel az ASP alapértelmezett parancsértelmező nyelve a VBScript, ezért fogom ezt ismertetni a továbbiakban. Változók és állandók használata A változó egy olyan, névvel ellátott tárolóhely a számítógép memóriájában, amely adatokat (például számot vagy karakterláncot) tárol. A változóban tárolt adatot a változó értékének hívják. A változók segítségével olyan nevekkel tárolhatók, kérdezhetők le és kezelhetők értékek, amelyek segítségével megérthető, hogy a parancsfájl hogyan is működik. Változók deklarálása és elnevezése A VBScript nyelvben nem kötelező a változók deklarálása, azonban nagyon hasznos minden változót annak használata előtt deklarálni. A változó deklarálásával azt lehet a szkriptkezelővel közölni, hogy egy adott nevű változó létezik, s ezáltal a parancsfájl egészében hivatkozni lehet a változóra. A VBScript nyelvben a Dim, a Public vagy a Private utasítással deklarálható változó. Például: <% Dim valtozonev %> <% Dim tombnev_ami_10_elemu(10) %> A VBScript Option Explicit utasításával érheti el azt, hogy az ASP fájlban a Dim, a Private, a Public és a ReDim utasítások használatával egyértelműen deklarálni kelljen a változókat. Az Option Explicit utasításnak minden ASP-direktíva után és minden HTML-szöveg vagy parancsfájlbeli parancs előtt meg kell jelennie. <% Option Explicit %> <HTML> <% Dim strusername Public lngaccountnumber %> Az előre definiált webszerver változókkal kapcsolatos információk az 5.2. számú mellékletben találhatóak meg. Ezek a változók a Request objektumon keresztül érhetőek el.

17 2. Webes aktív oldalak készítése adatbázis eléréssel 17 / 91 A változók hatóköre: A változó hatóköre (azaz élettartama) határozza meg, hogy mely parancsfájlbeli parancsok érhetik el a változót. Egy adott eljáráson belül deklarált változó helyi hatókörrel bír a változó az eljárás minden egyes végrehajtásakor létrejön, majd törlődik. Semmilyen, az eljáráson kívüli elem nem érheti el. Az eljáráson kívül deklarált változónak globális hatóköre van értékét bármely, ASP-lapon lévő parancsfájlbeli parancs használhatja vagy módosíthatja. Megjegyzés: A változó hatókörének az adott eljárásra történő korlátozásával javul a teljesítmény. A változókat deklarálhatja úgy is, hogy a helyi változónak és a globális változónak ugyanazt a nevet adja. Az egyik értékének módosítása nem változtatja meg a másik értékét. Ha azonban nem deklarálja a változókat, akkor akaratlanul is módosíthatja egy adott globális változó értékét. A következő parancsfájlbeli parancsok például az 1 értéket eredményezik annak ellenére, hogy két Y nevű változó van: <% Option Explicit Dim Y Y = 1 SetLocalVariable Response.Write Y Sub SetLocalVariable Dim Y Y = 2 End Sub %> Az alábbi parancsfájlbeli parancsok viszont a 2 értéket adják eredményül, mert a változók nem egyértelműen vannak deklarálva. Amikor az eljáráshívás az Y-nak a 2 értéket adja, a parancsnyelv-értelmező azt feltételezi, hogy az eljárás a globális változót kívánta módosítani. <% Option Explicit Dim Y = 1 SetLocalVariable Response.Write Y Sub SetLocalVariable Y = 2 End Sub %> A problémák elkerülése végett minden változót egyértelműen deklaráljon. Ez különösen fontos, ha az #include utasítás segítségével ágyaz fájlokat az ASP fájlba. A beágyazott parancsfájlt külön fájl tartalmazza, de a parancsfájlt a rendszer úgy értelmezi, mintha a beágyazó fájl része volna. Könnyű megfeledkezni arról, hogy a fő parancsfájlban, valamint a beágyazott parancsfájlokban használt (globális) változóknak különböző neveket kell adni, hacsak nem deklarálta a változókat. Megyjegyzés: A változókat általában ASP szkriptekben a Dim utasítással deklaráljuk, ilyenkor az egész szkriptben és az összes eljárásban elérhető. Eljárások esetén, az eljárás elején ajánlott deklarálni a változókat. ReDim utasítás egy már deklarált változó dimenzióját és elemszámát definiálja felül. A Private és Public utasításoknak csak tényleges Visual Basic program esetén van jelentősége, mivel az ASP oldal, ha még #include utasítással tartalmaz is egy másik ASP oldalt, egy szkriptnek felel meg (mivel a másik oldalt csak beágyazza). A Private esetén csak az adott szkriptben, míg a Public esetén az összes szkriptben elérhető az adott változó.

18 2. Webes aktív oldalak készítése adatbázis eléréssel 18 / 91 Példa állandók deklarálására: Const MyVar = 459 ' Constants are Public by default. Private Const MyString = "HELP" ' Declare Private constant. Const MyStr = "Hello", MyNumber = ' Declare multiple constants on same line. VBScript adattípusok: Eddig nem igazán volt szó a deklarált változó típusáról. A VBScript egy úgynevezett Variant típust használ, minden függvény ilyen típussal tér vissza. Ez egy speciális típus, amely különféle információkat tartalmazhat, jellemzően számot vagy szöveget. A szöveget idéző jelek közé kell tenni ( ). A változó mindig a környezetéhez igazodik, ha szöveget (string data) várunk el, akkor szövegként kezeli, ha számot várunk, akkor számként. Többféle altípus is létezik, a változó értékétől függően, valamint altípusok közötti konvertáló függvények is használhatunk, ha szükséges: Altípus Leírás Empty Variant nincsen kezdeti értéke. Az értéke numerikus változó esetében 0 vagy üres-string ("") string változó esetében. Null Variant szándékosan nem tartalmaz valódi értéket. Boolean Értéke lehet True vagy False. Byte Integer típus: [0; 255] intervallumban. Integer Integer típus: [-32,768; 32,767] intervallumban. Currency [-922,337,203,685, ; 922,337,203,685, ] intervallum. Long Integer típus: [-2,147,483,648; 2,147,483,647] intervallumban. Single Egyszeres-precizitású lebegőpontos szám a következő intervallumban: [ E38; E-45] negatív érték esetén; [ E-45; E38] pozitív érték esetén. Double Dupla-precizitású lebegőpontos szám a következő intervallumban: [ E308; E-324] negatív érték esetén; [ E-324; E308] pozitív érték esetén. Date (Time) Olyan számot tartalmaz, ami egy dátumot reprezentál: 100. január 1 és december 31 között. String Változóhosszúságú karakterláncot (string) tartalmaz, ami akár 2 millió karakter hosszú is lehet. Object Egy objektumot tartalmaz. Error Egy hibaszámot tartalmaz. Változó-elnevezés konvenciók: Az olvashatóság fokozása és a konzisztencia szempontjából az alábbi prefixek használata javasolt a változók deklarálása során. Altípus Prefix Példa Boolean bln blnfound Byte byt bytrasterdata Date (Time) dtm dtmstart Double dbl dbltolerance Error err errordernum Integer int intquantity Long lng lngdistance Object obj objcurrent Single sng sngaverage String str strfirstname

19 2. Webes aktív oldalak készítése adatbázis eléréssel 19 / Változók és állandók létrehozása, hatókörük PHP-ben A PHP nyelvben hasonlóan az ASP-hez, a változók létrehozásánál nem kell típust megadni, a változó típusát rendszerint nem a programozó adja meg (persze van beleszólása), hanem a PHP futási időben határozza meg a változó környezetétől függően. Sőt a PHP-ben még deklaráló utasítás sem létezik, a változóba mindig az utoljára adott érték található, a típust a változó értéke határozza meg. Valamint létezik olyan utasítás, amellyel le tudjuk kérdezni, hogy egy változónak adtunk-e már értéket. A PHP nyolc primitív típust támogat. A négy skalár típus: boolean (logikai) integer (egész szám) floating-point number (float, lebegőpontos szám) string (karakterlánc, karaktersorozat) A két összetett típus: array (tömb) object (objektum) Végül két speciális típus: resource (erőforrás) NULL A PHP nem követeli meg (nem támogatja) az explicit típusdefiníciót a változók deklarálásakor; egy változó típusát a környezet határozza meg, amiben a változót használjuk. Vagyis ha egy karakterláncot rendelünk var nevű változóhoz, akkor var karakterlánc lesz. Ha ezután egy egészet rendelünk hozzá, var egész lesz. Vagyis minden egyes értékadásnál befolyásolhatjuk, hogy az adott változó milyen típusú legyen. Fontos lehet még az operátorok használatánál az automatikus típuskonvertálás, pl. egy feltételnél logikai változót vár a program, ezért az adott változó értékét logikai típusra konvertálja, az adott változó típusától függő módon. Megjegyzés: Egy kifejezés értékét és/vagy típusát a var_dump() függvénnyel kérdezhetjük le. A típus szöveges információját gettype() segítségével kérdezhető le. Az is_type() függvények használhatók a programokban a típus ellenőrzésére. Ha egy változó típusát egy adott típusra kell konvertálnunk, cast-olhatjuk a változót, vagy alkalmazzuk rá a settype() függvényt. Itt nem részletezném, hogy az egyes típusok konvertálása közben az új típus mellett milyen értékeket vesz fel a változónk. Az alábbi táblázatban összefoglaltam a nyolc alaptípussal kapcsolatos fontosabb információkat. A lehetséges értékadások módját, valamint hogy az adott típus milyen értékeket tud tárolni. Számok esetén igaz, hogy ha olyan nagy értéket használunk, amely nem fér bele az integer típusba, akkor automatikusan float típusú változó lesz.

20 2. Webes aktív oldalak készítése adatbázis eléréssel 20 / 91 Típus Deklaráció, értékadás megjegyzéssel Konvertálás Intervallum Logikai //a logikai igaz értéket adjuk az $igaz változónak $igaz = True; //a logikai hamis értéket adjuk a $hamis változónak $hamis = False; (bool) $var (boolean) $var 0 - hamis 1 igaz Általában nem nulla esetén igaz. Egész szám Lebegőpontos szám String Tömb Objektum Resource NULL # decimális szám $a = 1234; # negatív decimális szám $a = -123; # oktális szám (megegyezik a 83 decimális számmal) $a = 0123; # hexadecimális szám (megegyezik a 26 decimális számmal) $a = 0x1A; $a = 1.234; $a = 1.2e3; $a = 7E-10; $s = 'Arnold egyszer azt mondta: "I\'ll be back"'; $s = Ez is egy string\n $str = <<<Vege_a_Stringnek_Tetszoleges_Jelsorozat Példa egy stringre, amely több sorban van, és heredoc szintaxisú Vege_a_Stringnek_Tetszoleges_Jelsorozat; // a kulcs vagy egy string vagy egy nemnegatív integer // (egész szám), az érték bármi lehet $var = array( [kulcs =>] érték,... ) $t = array( 1 => 'egy', 2 => 'kettő', 3 => 'három' ); #egy objektumosztály létrehozása, semmi az osztály neve class semmi osztály neve { function do_semmi () { echo "Csinálom a semmit."; # $bar most egy semmi típusú objektum $bar = new semmi; #a $bar objektum do_semmi() metódusát hívja $bar->do_semmi(); Speciális típus a külső erőforrások felszabadítására. #jelzi, hogy a változó nem tartalmaz értéket $var = NULL (int) $var (integer) $var (float) $var Platformfüggő, de általában 32 bites előjeles egész szám, vagyis: [-2,147,483,648; 2,147,483,647] közötti egész. Platformfüggő, de maximális érték kb. 1.8e308, 14 tizedesjegy pontossággal (64 bites IEEE formátum). Hosszúsága nincsen korlátozva. Változók létrehozása: PHP-ben a változókat egy dollárjel utáni változónév jelöli. A változónevek érzékenyek kis- és nagybetűk különbözőségére. A változónevekre a PHP más jelzőivel azonos szabályok vonatkoznak. Egy érvényes változónév betűvel vagy aláhúzással kezdődik, amit tetszőleges számú betű, szám vagy aláhúzás követ. A betű nem csak az angol ABC betűiből kerülhet ki, hanem ASCII kódú karakterek is lehetnek. Példák: $var = "Géza"; $Var = "János"; echo "$var, $Var"; // kiírja, hogy "Géza, János" $4site = 'ez nem jó'; // nem érvényes, mert számmal kezdődik $_4site = 'ez ok'; // érvényes, aláhúzással kezdődik $täyte = 'mansikka'; // érvényes, az 'ä' az ASCII 228-as karaktere $tükörfúrógép = "árvíztűrő"; // érvényes, ellenőrizheted egy ASCII táblában

21 2. Webes aktív oldalak készítése adatbázis eléréssel 21 / 91 PHP 3-ban a változókhoz mindig értékek tartoznak. Vagyis ha egy kifejezést rendelünk egy változóhoz, az eredeti kifejezés egészének értéke másolódik a célváltozóba. Ez azt jelenti, hogy ha például egy változó értékét egy másikhoz rendeljük, egyikük megváltozása sincs hatással a másikra. PHP 4-ben lehetőség van egy másik hozzárendelési módra: változó referencia szerinti hozzárendelésére. Ez azt jelenti, hogy az új változó egyszerűen hivatkozik az eredetire. Az új változón végzett változtatások az eredetit is érintik és fordítva. Ez azt is jelenti, hogy nem történik másolás; ekképpen a hozzárendelés gyorsabban történik meg. Igaz ugyan, hogy ez a sebességnövekedés csak bonyolultabb ciklusokban vagy nagy tömböknél illetve objektumok átadásakor jelentkezik. Referencia szerinti értékadáshoz egyszerűen & jelet kell az átadandó változó neve elé írni. Az alábbi kód - például - kiírja kétszer, hogy 'Nevem Bob': <?php $ize = 'Bob'; // 'Bob' hozzárendelése $ize-hoz $bigyo = &$ize; // Hivatkozás $ize-ra $bigyo-ban. $bigyo = "Nevem $bigyo";// $bigyo megváltoztatása... echo $ize; // $ize is megváltozott echo $bigyo; Fontos tudni, hogy a referencia szerinti értékadás, csak változókra érvényes, konstansok vagy egyéb kifejezések értékét nem adhatjuk át referenciaként. <?php $ize = 25; $bigyo = &$ize; // Ez egy érvényes hozzárendelés. $bigyo = &(24 * 7); // Érvénytelen referencia egy névtelen kifejezésre. function test() { return 25; $bigyo = &test(); // Érvénytelen. Előre definiált változók PHP-ben: A PHP számos előre definiált változót biztosít bármely futó szkript számára. Sokat ezek közül nem lehet teljes pontossságal dokumentálni, mert függnek a futtató szervertől, a használt verziótól, a konfigurálástól, és más egyéb tényezőktől. Néhány ilyen változó nem elérhető, ha a PHP parancssorból fut. Az összes előre definiált változó ki lehet listázni a phpinfo() utasítással, amely sok más hasznos információt is. A változókat, három kategóriába sorolhatjuk aszerint, hogy értéküket honnan veszik fel, nevezetesen az Apache webszerver szolgáltatja, vagy a shell környezet vagy pedig maga a PHP. Apache változók Az előre definiált változók egy része függ a webszervertől, nevezetesen az Apache webszervertől, annak verziójától és beállításától. Az 5.3. számú mellékletben a teljesség mellőzésével egy felsorolás és rövid ismertető található a PHP alatt elérhető Apache változókról.

22 2. Webes aktív oldalak készítése adatbázis eléréssel 22 / 91 Környezeti változók A PHP globális változói közé kerülnek a PHP feldolgozót futtató környezet változói. Számos változót a shell szolgáltat, ami alatt a PHP fut. Mivel más-más rendszerek másmás shell-eket használnak, ezért egy pontos lista összeállítása lehetetlen. A használt shell dokumentációjában nézhetünk utána az előre definiált környezeti változóknak. Más környezeti változók - beleértve a CGI változókat is - attól függően kerülnek be, hogy a PHP szerver modulként fut vagy CGI feldolgozóként. PHP változók Ezeket a PHP maga állítja elő. A $HTTP_*_VARS változók csak akkor állnak rendelkezésre, ha a track_vars opció be van kapcsolva. Ha engedélyezve van ez a beállítást, akkor ezek a változók mindig létrejönnek, még ha üresek is. Ebben az esetben nem lehetséges, hogy a rosszindulatú felhasználók meghamisítsák a változókat. Megjegyzés: A PHP verziótól kezdve a track_vars mindig be van kapcsolva, függetlenül a konfigurációs fájl beállításától. Megjegyzés: Az új szuper globális (Superglobals) változók verziótól használhatók. Ezek a $_GET, $_POST, $_ENV, $_SERVER, $_COOKIE, $_REQUEST $_FILES és a $_SESSION tömbök, amelyek fesztelen megfogalmazásban szuper globális jelzővel illetik, mivel minden esetben használhatók tekintet nélkül az aktuális érvényességi körre. Emiatt a régi, nekik megfelelő $HTTP_*_VARS tömbök használata már nem javasolt. Ha a register_globals be van kapcsolva, ezek a változók globális változókként is létrejönnek, függetlenül a $HTTP_*_VARS tömböktől. A PHP változók leírása megtalálható az 5.4. számú mellékletben. Változók hatóköre: A változó hatásköre az a környezet, amelyben a változó definiált. A legtöbb esetben minden PHP változónak egyetlen hatásköre van. Ez az egyetlen hatáskör kiterjed az include és a require segítségével használt fájlokra is. Például: <?php $a = 1; /* globális változó*/ include "b.inc"; Itt az $a változó elérhető lesz az beillesztett b.inc szkriptben is. A felhasználói függvényekkel a lokális függvényhatáskör kerül bevezetésre. Alapértelmezés szerint minden, függvényen belül használt változó ebbe a lokális függvényhatáskörbe tartozik. Vagyis a függvények nem látják a függvényen kívül definiált változók értékét, ha külön ezt nem kérjük. Éppen ezért az alábbi példa üres oldalt fog eredményezni: <?php $a = 1; /* globális hatáskör */ function Test () { echo $a; /* egy helyi változót vár */ Test();

23 2. Webes aktív oldalak készítése adatbázis eléréssel 23 / 91 A global kulcsszóval kell deklarálni függvényen belül a globális változókat. Valamint a $GLOBALS asszociatív tömbben érhetőek el a globális változók értékei. Az alább látható add1.php és add2.php hasonlóan a $a és $b globális változók értékét adja össze egy függvény segítségével. <?php $a = 1; $b = 2; add1.php <?php $a = 1; $b = 2; add2.php function Osszead() { global $a, $b; $b = $a + $b; Ossszead(); echo $b; function Osszead() { $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"]; Osszead(); echo $b; A változók hatáskörének másik fontos lehetősége a static (statikus) változó. A statikus változó csak lokális hatáskörben él - egy függvényen belül, de két függvényhívás közt nem veszti el az értékét, a változó hatásköréből való kilépés esetén is megmarad az értéke: function Test() { static $a = 0; echo $a; $a++; Valahányszor meghívódik a Test() függvény, kiírja $a értékét, majd azt megnöveli eggyel. A statikus változók jól alkalmazhatóak rekurzív függvényhívások esetén. Változók használata a változónevekben: A változó változók olyan változókat jelentenek, amelynek a nevét dinamikusan lehet beállítani. //normál változó értékadás $a = "hello"; //változó változó, amely az előbb definiált változó értékét tekinti változó nevének, és annak add értéket $$a = "világ"; //kiírja a 2 definiált változó értékét ($a= hello, $hello= világ ), azaz kiírja, hogy: hello világ echo "$a ${$a"; //az előző parancs így is írható echo "$a $hello"; Annak érdekében, hogy változó változókat tömbökkel együtt is használhassuk, fel kell oldani a következő kétértelműséget. A $$a[1] kifejezés kiértékelésekor a feldolgozónak tudnia kell, hogy ez a $a[1] értékét tekintse a hivatkozott változó neveként, vagy $$a-t - és ekkor és ennek a tömbnek 1. indexű elemére történt a hivatkozás. Az első esetben ${$a[1], míg a másodikban ${$a[1] írandó.

24 2. Webes aktív oldalak készítése adatbázis eléréssel 24 / 91 Konstansok létrehozása, hatókörük A konstans egy egyszerű érték neve, amelynek az értéke a program futása során nem változik, kivétel a FILE és LINE konstansokat. A konstansok alapesetben érzékenyek a kis- és nagybetűs írásmódra. Megállapodás szerint általában csupa nagybetűs neveket adunk a konstansoknak. A konstansok neveire a PHP más jelzőivel azonos szabályok vonatkoznak. Egy érvényes konstans név betűvel vagy aláhúzással kezdődik, amit tetszőleges számú betű, szám vagy aláhúzás követ. A konstansok bárhonnan elérhetőek. Konstanst a define() függvénnyel lehet létrehozni. Definiálása után később nem lehet törölni vagy megváltoztatni az értékét. Csak skaláris adat (boolean, integer, double, string típusú) lehet egy konstans tartalma. A konstans értékére a nevének megadásával lehet hivatkozni. A változókkal ellentétben nem szabad $ jelet tenni a konstans neve elé. Használható még a constant() függvényt is, ha például a konstans nevét egy változó adja. A get_defined_constants() függvénnyel lehet a definiált konstansok listáját megkapni. Megjegyzés: A konstansok és a (globális) változók különböző névtérben vannak. Ez azt jelenti, hogy a TRUE és a $TRUE két különböző dolgot jelent. Ha egy definiálatlan konstanst próbál meg használni, a PHP a konstans nevét veszi karaktersorozatként értékül. Ilyen esetekben egy notice szintű hiba keletkezik. A defined() függvény segítségével vizsgálható a konstans létezése. A következők a fontosabb különbségek a változókhoz képest: A konstansok nevét nem kell dollár jellel $ kezdeni. A konstansokat akárhol definiálhatók, és akárhonnan elérhetők, a változók környezeti korlátozásaitól függetlenül. A konstansok nem módosíthatóak, és nem törölhetőek, miután egyszer létrehozták azokat. A konstansok csak skaláris értékeket tartalmazhatnak <?php define("konstans", "Helló világ!"); echo KONSTANS; // kiírja, hogy "Helló világ!" echo Konstans; // kiírja, hogy "Konstans" és hibát eredményez 2.6. Munkamenet változók használata ASP-ben és PHP-ben Mivel az ASP és a PHP oldalakban definiált globális változó csak az adott ASP illetve PHP oldal futása alatt létezik, ezért szükség van az olyan változók definiálására is, amelyek nem csak az adott ASP illetve PHP szkriptből érhető el. Erre szolgálnak a munkamenet változók, amelyeket egy másik oldalról is elérhetünk. Munkamenet vagy alkalmazás hatókörű változók ASP-ben: A globális változók csak egyetlen.asp fájlban érhetők el. Ha egy adott változót a lapon kívül is elérhetővé kívánunk tenni, akkor a változóhoz munkamenet vagy alkalmazás hatókört kell hozzáadnunk.

25 2. Webes aktív oldalak készítése adatbázis eléréssel 25 / 91 A munkamenet hatókörű változók az ASP-alkalmazás minden olyan lapja számára elérhetők, amelyeket egy felhasználó kér. Az alkalmazás hatókörrel rendelkező változók az ASP-alkalmazás minden olyan lapja számára elérhetők, amelyeket bármelyik felhasználó kér. A munkamenet-változók segítségével kényelmesen tárolhatók az adott felhasználó adatai (például a felhasználói beállítások vagy a felhasználó neve, azonosítója). Az alkalmazásváltozók segítségével egy adott alkalmazás összes felhasználójának adatai tárolhatók például egy alkalmazás-specifikus üdvözlés, vagy az alkalmazás által igényelt általános értékek. Az ASP két olyan beépített objektumot tartalmaz, amelyben változókat tárolhat. E két objektum a Session és az Application. Munkamenet hatókör Változóhoz úgy adhat munkamenet hatókört, hogy a változót a Session objektumban tárolja. Ezt úgy teheti meg, hogy értéket rendel az objektumban lévő egyik névvel rendelkező bejegyzéshez. Az alábbi parancsok például két új változót tárolnak a Session objektumban: <% Session("KeresztNév") = "Erik" Session("VezetékNév") = "Nagy" %> A Session objektumban tárolt adatok a névvel rendelkező bejegyzésen keresztül kérdezhetők le a (<%= %>) kimeneti direktíva vagy a Response.Write metódus segítségével. Az alábbi példa a kimeneti direktíva segítségével jeleníti meg a Session("KeresztNév") aktuális értékét: Üdvözöljük kedves <%= Session("KeresztNév") %> Ha az adott munkamenet hatókörű változóra egynél többször hivatkozik egy parancsfájlban, lehet, hogy célszerűbb azt (a teljesítmény javítása érdekében) egy helyi változóhoz rendelni. Alkalmazás hatókör Az adott változónak úgy adhat alkalmazás hatókört, hogy az Application objektumban tárolja úgy, hogy értéket rendel az objektumban lévő egyik, névvel rendelkező bejegyzéshez. Az alábbi parancs például egy alkalmazás-specifikus üdvözlést tárol az Application objektumban: <% Application("Üdvözlés") = "Üdvözli az Értékesítés osztály!" %> Az alábbi példa a kimeneti direktíva segítségével jeleníti meg az Alkalmazás("Üdvözlés") értékét. <%= Application("Üdvözlés") %> Ha a parancsfájl most is alkalmazás hatókörű változóra hivatkozik, a teljesítmény javítása érdekében célszerű azt helyi változóhoz rendelni.

26 2. Webes aktív oldalak készítése adatbázis eléréssel 26 / 91 PHP munkamenet kezelő függvényei: Hasonlóan az ASP-ben leírt munkamenet kezeléshez, a PHP munkamenet kezelése is lehetővé teszi adatok megőrzését az egymást követő oldal lekérdezések között. Ez képessé tesz még testreszabhatóbb oldalak készítésére. Minden webhelyre látogató egy-egy egyedi azonosítót kap, az úgynevezett munkamenet azonosítót (session azonosítót). Ez vagy egy sütiben (cookie) tárolódik a látogató gépén, vagy az URL-ben közlekedik oldalról oldalra. A munkamenet támogatás lehetővé teszi tetszőleges számú változó megőrzését a PHP oldal lekérdezések között. Ha egy látogató érkezik webhelyre, háromféleképpen kezdődhet el, vagy folytatódhat a munkamenete. Mindhárom esetben a PHP egy munkamenet azonosító érkezését várja. Ha nem érkezik, új munkamenetet indít. Ha a session.auto_start PHP opció be van kapcsolva, a PHP automatikusan megkezdi / folytatja a munkamenetet. Ha ez nincs bekapcsolva, akkor közvetlenül a session_start() függvénnyel, vagy közvetve a session_register() függvénnyel tudjuk a munkamenetet folytatni / megkezdeni. Ha egy érvényes azonosító érkezett, a korábban beállított munkamenet környezet visszaállításra kerül. Minden a munkamenethez rendelt változó szerializálódik a PHP oldal futásának befejeződésekor. A nem definiált, de munkamenethez rendelt változók a későbbi folytatásokban nem jönnek újból létre. Példa munkamenet változó használatára: PHP utáni verziókban <?php if (isset($http_session_vars['szamlalo'])) { $HTTP_SESSION_VARS['szamlalo']++; else { $HTTP_SESSION_VARS['szamlalo'] = 0; PHP vagy régebbi verziókban <?php if (!isset($_session['szamlalo'])) { $_SESSION['szamlalo'] = 0; else { $_SESSION['szamlalo']++; A $_SESSION változó használata (vagy a $HTTP_SESSION_VARS változó használata PHP vagy régebbi verzió esetén) javasolt biztonsági és olvashatósági szempontok miatt. A $_SESSION vagy $HTTP_SESSION_VARS használatával nincs szükség a session_register() / session_unregister() / session_is_registered() függvényekre. A programozók éppen úgy dolgozhatnak a munkamenet változókkal, mint a "normális" változókkal. Az alábbi módon törölhetünk egy munkamenet változót: <?php // Használd a $HTTP_SESSION_VARS tömböt PHP vagy régebbi verzióban unset($_session['szamlalo']); Az alább látható munkamenet változó bejegyzése a register_globals PHP opció bekapcsolt állapota mellett lehetséges. Ennek bekapcsolása biztonsági és hatékonysági okokból nem ajánlott. <?php if (!session_is_registered('szamlalo')) { session_register("szamlalo"); $szamlalo = 0; else { $szamlalo++; A munkamenet változók tárolásának módja nagyban függ a PHP konfigurációjától.

27 2. Webes aktív oldalak készítése adatbázis eléréssel 27 / Megjegyzések, utasítások írása ASP-ben és PHP-ben Kétféle módon írhatunk megjegyzéseket ASP-ben. Az egyik, hogy aposztróf ( ) után írjuk a megjegyzést, a másik lehetőség, hogy Rem utasításként, a Rem kulcsszó után adjuk meg. ASP-ben általában egy sor egy utasítást szokott tartalmazni, ha a konzekvenciához tartani szeretnénk magunkat. Ebben az esetben a sorvége karakter (<ENTER>) választja el az egyes utasításokat. Ha egy sorban több utasítást is meg szeretnénk adni, akkor az utasításokat kettősponttal (:) választhatók el egymástól. Lásd az alábbi példát a megjegyzések írására: Dim MyStr1, MyStr2 MyStr1 = "Hello" : Rem Megjegyzés az utasítás után kettősponttal elválasztva MyStr2 = "Goodbye" ' Ez is egy megjegyzés, nem szükséges a kettőspont. Rem Csak megjegyzést tartalmazó sor, nincs szükség a kettőspontra. PHP-ben az utasítások - a C és a Perl nyelvhez hasonlóan - pontosvesszővel végződnek. Valamint utasításblokk a kapcsos zárójelek között ( { ) adható meg, pl. elágazás esetén. A záró határolójel () szintén feltételezi az utasítás végét, tehát az alábbiak egyenértékűek: <?php echo "Ez egy teszt"; <?php echo "Ez egy teszt" A PHP támogatja mind a C, C++ és Unix shell-szerű megjegyzéseket (kommenteket). Például: <?php echo "Ez egy teszt"; // Ez egy egysoros c++ szerű komment /* Ez egy többsoros komment Még egy sor komment */ echo "Ez egy másik teszt"; echo "Ez az utolsó teszt"; # Ez egy shell-szerű komment Az "egysoros" kommentek valójában csak a sor végéig, vagy az aktuális PHP kód végéig tartanak, attól függően, hogy melyik jön előbb. <h1>ez egy <?php# echo "egyszerű"; példa.</h1> <p>a fenti fejléc kiírja 'Ez egy példa'. A programblokkok kommentezésére alkalmas megjegyzéseket nem lehet egymásba ágyazni. <?php /* echo "Ez egy teszt"; /* Ebből a kommentből baj lesz */ */

28 2. Webes aktív oldalak készítése adatbázis eléréssel 28 / Operátor, kifejezés, elágazás, ciklus, eljárás ASP-ben Ebben a részben az ASP főbb programkonstrukcióit mutatom be szintaxisuk megadásával és rövidebb példaprogramokon keresztül. Ismertetem, hogy milyen operátorokat használhatunk, milyen precedenciával értékelődnek ki a kifejezésekben szereplő operátorok. De a teljes részletesség nem célom. Továbbá ismertetem a lényegesebb programkonstrukciókat, azaz milyen módon lehet elágazásokat és ciklusokat írni, valamint hogy lehet függvényeket, eljárásokat meghívni és írni. Nem mutatnám be az előre megírt eljárásokat. Későbbiekben, ahol valamilyen beépített eljáráshívást használok és nem egyértelmű, hogy mire szolgál, ott megmagyarázom megjegyzésként. Operátor Az egyes kifejezésekből, pl. változókból az operátorok segítségével újabb kifejezéseket hozhatunk létre, amelyeknek az értékét szintén változókban tárolhatjuk, ha szükséges. Nagyon fontos, hogy az operátorok hogyan értékelődnek ki, azaz milyen operátorprecedencia szerint kerül meghatározásra az értékük. Ha egy kifejezés több különböző kategóriájú operátort tartalmaz, akkor először az aritmetikai operátorok értékelődnek ki, majd az összehasonlító operátorok és legvégül a logikai operátorok. Természetesen zárójelezéssel befolyásolhatjuk az operátorok kiértékelésének a sorrendjét. Az összehasonlító operátorok azonos precedenciával rendelkeznek, azaz kiértékelésük balról-jobbra sorrendben történik, ahogyan szerepelnek. Az aritmetikai és logikai operátorok a következő sorrendben értékelődnek ki (felül a nagyobb precedenciájú): 1. Aritmetikai operátorok 2. Összehasonlító operátorok 3. Logikai operátorok Negálás (-) Egyenlő (=) Not (logikai tagadás) Hatványozás (^) Nem egyenlő (<>) And (logikai ÉS) Szorzás és osztás (*, /) Kisebb mint (<) Or (logikai VAGY) Egész osztás (\) Nagyobb mint (>) Xor (logikai kizáró VAGY) Modulus (Mod) Kisebb egyenlő (<=) Eqv (logikai egyenlőség) Összeadás és kivonás (+, -) Nagyobb egyenlő (>=) Imp (logikai implikáció) String konkatenálás (&) Is Ha egy kifejezésben a szorzás és az osztás együtt szerepel, akkor a kiértékelés balróljobbara történik. Ugyanez igaz, akkor, ha az összeadás és a kivonás szerepelnek együtt egy kifejezésben. A string konkatenáló operátor (&) nem aritmetikai operátor, de a precedenciája kisebb az aritmetikai operátorokénál, de nagyobb az összehasonlító operátoroknál. Az Is operátor egy objektum referencia összehasonlító operátor. Vagyis nem az objektumokat vagy azok értékét hasonlítja össze, hanem azt hogy, ugyanarra az objektumra hivatkoznak-e. Kifejezés Az egyik legfontosabb kifejezés az értékadás, pl. A=10. A fenti operátorokat használva bonyolultabb értékadásokat is le tudunk írni, pl. A=A-B+10. Valamint a kifejezések szerepelhetnek az utasítások - például az elágazás - feltétel részében, nem csak az értékadás jobb oldalán. A kifejezésekben szerepelhetnek eljáráshívások is, pl. A=MyFunc(A, B, 10)-5.

29 2. Webes aktív oldalak készítése adatbázis eléréssel 29 / 91 Elágazás A feltétel speciális kifejezés, nevezetesen a feltételnél mindig logikai változót, vagy logikai kifejezést várunk. Ha nem azt adunk meg, akkor a változóban tárolt szám vagy szöveg értéke határozza meg, hogy az adott feltétel igaz-e, vagy hamis-e. Szintaxis Példa If feltétel Then utasítások [Else else-utasítások ] If A > B Then A=A-B : C=1 Else B=B-A : C=0 If feltétel Then [utasítások] [ElseIf n. feltétel Then [elseif-utasítások]]... [Else [else-utasítások]] End If If A >B Then A=A-B C=1 ElseIf A=B Then C=2 Else B=B-A C=0 End If Select Case kifejezés Select Case strcolor [Case kifejezéslista] Case "red" strszin = "piros" [utasítosok] Case "green" strszin = "zöld" [Case Else] Case "blue" strszin = "kék" [else-utasítások] Case Else strszin = "fekete" End Select End Select Ciklus While esetén, amíg igaz a feltétel, Until esetén, amíg a feltétel igazzá nem válik, hajtja végig az utasításokat a ciklus. Do Loop ciklus belsejéből az Exit Do utasítással is kiléphetünk. Szintaxis Do [{While Until feltétel] [utasítások] [Exit Do] [utasítások] Loop Do [utasítások] [Exit Do] [utasítások] Loop [{While Until feltétel] Rem Tömb összes eleme szerinti ciklus. For Each elem In csoport [utasítások] [Exit For] [utasítások] Next Rem számláló kezdőértékét növeli (csökkenti) a lépés értéké- Rem vel, amíg kisebb (nagyobb) egyenlő, mint a végérték For számláló = kezdőérték To végérték [Step lépés] [utasítások] [Exit For] [utasítások] Next Rem addig hajtja végre, amíg igaz (TRUE) a feltétel While feltétel Wend Példa C=20 Do Until c=0 C=C-1 Loop Dim Check, Counter Check = True: Counter = 0 ' Kezdő értékadás a változóknak. Do ' Küldő ciklus. Do While Counter < 20 ' Belső ciklus. Counter = Counter + 1 ' Számláló növelése. If Counter = 10 Then Check = False Exit Do ' Kilépés a belső ciklusból. End If Loop Loop Until Check = False ' Kilépés a külső ciklusból. Dim tomb[10] Rem Értékadás tömbnek Dim szumma ' Ebbe kerül bele szumma=0 For Each elem In tomb szumma = szumma + elem Next For I = 1 To 10 For J = 2 To 30 Step 2 IJ = I * J Next Next Dim C C = 0 While c<20 C = C + 1 Wend

30 2. Webes aktív oldalak készítése adatbázis eléréssel 30 / 91 Eljárás Szintaxis Rem Függvény írása, ami rendelkezik visszatérési értékkel [Public [Default] Private] Function név [(argumentumlista)] [utasítások] [név = kifejezés] [Exit Function] [utasítások] [név = kifejezés] End Function Rem Eljárás írása, nincsen visszatérési értéke [Public [Default] Private] Sub név [(argumentumlista)] [utasítások] [Exit Sub] [utasítások] End Sub Rem Függvény vagy eljárás hívása [Call] név [(argumentumlista)] Rem név futtatása, különösen érdekes A = B esetén, ami Rem lehet értékadás vagy logikai kifejezés is Execute név Rem kiértékeli a név kifejezést Eval név Példa Rem ASP-ben Public és Private nem játszik fontos szerepet Function Osszeg ( numa, numb) Osszeg = 0 If numa < 0 And numb < 0 Then Exit Function Osszeg = A + B End Function Sub Eljaras (nump) If nump > 0 Then Response.Write Pozitív szám Else Response.Write Negatív szám End Sub Call Osszes(2, 3) Eljaras(4) Execute B = 6 S = "Sub Proc2" & vbcrlf S = S & " Print X" & vbcrlf S = S & "End Sub" Execute S Eval A*B+C Eval A= Operátor, kifejezés, elágazás, ciklus, eljárás PHP-ben Ebben a fejezetben az előző fejezethez hasonlóan a PHP főbb programozási elemeit mutatom be. A PHP erősen kifejezés-orientált nyelv. A legegyszerűbb kifejezések a változók és az állandók. Értékadás segítségével, valamint az operátorok használatával új kifejezéseket hozhatunk létre. Lényegesen több operátor van a PHP nyelvben, mint az ASP. Hasonlóan itt is, ha külön zárójelezéssel nem jelezzük, akkor az operátorok precedenciája határozza meg, hogy mi lesz az új kifejezés értéke. Továbbá ismertetem a hagyományos programozási konstrukciókat példákon keresztül: elágazás, ciklus, eljárás. Operátor Az operátorok itt is több kategóriába sorolhatók: aritmetikai, hozzárendelő, bitorientált, összehasonlító, hibakezelő, végrehajtó, növelő/csökkentő, logikai, string. Kategóriák szerint külön felsorolom rövid megjegyzésekkel az egyes operátorokat. A PHP-ben számos olyan operátort találhatunk, amely kifejezhető máshogy is, ilyenek például, a speciális hozzárendelő operátorok (+=, -=, *=, /=, %=, stb.). Például az összeadás esetén az $a = $a + 3; utasítás helyett egyszerűen $a +=3; utasítást írhatunk. Az alábbi táblázatban látható az operátorok precedenciája, illetve az asszociativitás iránya. Az összehasonlító operátorok nem köthető operátorok, mivel itt az asszociativitás nem értelmezett. PHP-ben nem implementálták a hatványozást, arra a pow() függvény szolgál. A táblázat az operátorkat precedenciájuk szerint növekvő sorrendben tartalmazza.

31 2. Webes aktív oldalak készítése adatbázis eléréssel 31 / 91 Asszociativitás balról-jobbra, balról-jobbra balról-jobbra balról-jobbra Operátorok or xor and jobbról-balra print balról-jobbra =, +=, -=, *=, /=,.=, %=, &=, =, ^=, ~=, <<=, >>= balról-jobbra :? balról-jobbra balról-jobbra balról-jobbra balról-jobbra && ^ nem köthető ==,!=, ===,!== nem köthető <, <=, >, >= balról-jobbra <<, >> & balról-jobbra +, -,. balról-jobbra *, /, % jobbról-balra!, ~, ++, --, (int), (float), (string), (array), jobbról-balra [ ] nem köthető new() Aritmetikai operátorok: összeadás (+), kivonás (-), szorzás (*), osztás (/), modulus (%). Az osztás egész osztás, vagyis az eredmény egész lesz, kivéve ha az egyik operandus lebegőpontos szám volt. Alapvető hozzárendelő operátor: =. Például: $a = ($b = 4) + 5. Itt $b értéke 4 és $a értéke 9. Speciális hozzárendelő operátorok: +=, -=, *=, /=,.=, %=, &=, =, ^=, ~=, <<=, >>=. Az alapvető hozzárendelő operátor és az előtte álló operátor kombinációja, lerövidíti az értékadásokat, pl. $a = $a + 3 helyett $a += 3 írható. Bitorientált operátorok: bitenkénti ÉS (&), bitenkénti VAGY ( ), bitenkénti kizáró VAGY (^), bitenkénti tagadás (~), eltolás balra (<<), eltolás jobbra (>>). Bitenkénti tagadás egyoperandusú, míg a többi kettő. Valamint $a<<$b illetve $a>>$b esetén az $a változó bitjeit toljuk el balra, illetve jobbra a $b számú bittel. Összehasonlító operátorok: egyenlő (==), azonos (===), nem egyenlő (!= vagy <>), nem azonos (!===), kisebb mint (<), nagyobb mint (>), kisebb egyenlő (<=), nagyobb egyenlő (>=). Az azonos operátor annyiban tér el az egyenlő operátortól, hogy nem csak az értékek egyenlősége kerül összehasonlításra, hanem az is, hogy azonos típusúak-e. Feltételes operátor ($a? $b : $c) úgy működik, mint a C-ben, azaz, ha az $a értéke igaz, akkor $b kifejezést értékeli ki, ha hamis, akkor $c kifejezést. Hibakezelő Az operátort egy PHP kifejezés elé írva a kifejezés által esetlegesen generált hibaüzenete(ke)t figyelmen kívül hagyja a rendszer. Végrehajtó operátor: ``. Az operátor közé írt parancsot futtatja, pl.: $o = `ls -la`; Növelő/csökkentő operátorok: ++$a, --$a, $a++, $a--. Az első kettő, előbb növeli illetve csökkenti az $a változó értékét eggyel, majd visszatér az értékével, míg az utolsó kettő, előbb visszatér $a értékével majd növeli illetve csökkenti azt. Logikai operátorok: logikai ÉS (and vagy &&), logikai VAGY (or vagy ), logikai kizáró vagy (xor), logikai tagadás (!). String operátorok: konkatenáció (.), hozzárendelő konkatenáció (.=). Kifejezés Mindent, amely értékkel tér vissza kifejezésnek tekintünk. Ide tartoznak a változók, állandók, függvények (mivel van visszatérési értékük); valamint ezekből a kifejezésekből az operátorok segítségével felírt összetettebb kifejezések. ASP-ben nem található meg, de hasznos lehet számunkra a növelő/csökkenő operátor, valamint a hozzárendelő operátor segítségével felírt kifejezések.

32 2. Webes aktív oldalak készítése adatbázis eléréssel 32 / 91 Elágazás PHP-ben hasonlóan az ASP-hez kétféle módon írhatunk elágazást. A kifejezés helyén itt is logikai változót várunk el, ha más szerepelne ott, akkor boolean típusra konvertálódik. Az utasítás helyén szerepelhet utasításblokk, ilyenkor az utasításokat kapcsos zárójel ( { )között kell megadni. Szintaxis if (kifejezés): utasítások; elseif (kifejezés n.): utasítások; else: utasítások; endif; if (kifejezés1) utasítás; elseif (kifejezés n.) elseif-utasítás; else else-utasítás; //Hasonló a C-ben levőhöz, ha a kifejezés értékét megtalálja //valamelyik ágon, akkor onnan az összes utasítás lefut //a switch végéig, ha nem használjuk a break utasítást. switch (kifejezés) { case érték1: utasítások; case érték2: utasítások; case értékn: utasítások; default: utasítások; Példa if ($a > $b): $c = 0; print $a; elseif ($a == $b): $c = 1; print egyenlő ; else: $c = 2; print $b; endif; if ($a > $b) { $c = 0; print $a; elseif ( $a == $b) { $c = 1; print egyenlő ; else { $c = 2; print $b; switch $szam { case 1: print egy ; break; case 2: print kettő ; break; case 3: print három ; break; default: print nem 1 vagy 2 vagy 3 ; Szintaxis Ciklus Példa while (kifejezés) utasítás; $i = 1; while ($i < 10) print $i++; while ($i < 20) { print $i; $i++; while (kifejezés): utasítások; endwhile; do { utasítások; while (kifejezés); for (kif1; kif2; kif3) utasítás; for (kif1; kif2; kif3): utasítások; endfor; //tömb összes elemét iterálhatjuk foreach(tömb_kifejezés as $ertek) utasítás; foreach(tömb_kifejezés as $kulcs => $ertek) utasítás; $i = 1; while ($i <= 10): print $i; $i++; endwhile; $i = 10; do { print $i--; while ($i > 0); // for ciklus megfelel a következőnek: kif1; while (kif2) { utasítás; kif3; foreach ($tomb as $ertek) { echo "Érték: $ertek<br>\n"; foreach ($tomb as $kulcs => $ertek) { print "\$tomb[$kulcs] => $ertek.\n";

33 2. Webes aktív oldalak készítése adatbázis eléréssel 33 / 91 A ciklusutasítások (do while, while, for, foreach) belsejében, valamint a switch utasításban használható a break utasítás, amely a ciklus utáni utasításra adja a vezérlést. A ciklusokban használható még a continue utasítás, amely a ciklus elejére ugrik, átugorva a continue utasítás után álló utasításokat. Eljárás PHP 3-ban a függvényeket definiálni kell, mielőtt hivatkozás történik rájuk (függvényhívás előtt). PHP 4-ben nincs ez a megkötés. A PHP nem támogatja a függvények polimorfizmusát (többalakúságát), a függvény definíciókat nem lehet megszüntetni vagy újradefiniálni, ha egy függvény már definiált. A PHP 3 nem támogatja a változó számú függvényargumentumokat, bár az argumentumok kezdőértéke támogatott. A PHP 4 mindkettő lehetőséget támogatja. Szintaxis // PHP-ben a függvényeknek mindig van visszatérési értéke, // amit nem kötelező megadni, ebben az esetben // az utolsó utasítás értéke lesz a visszatérési érték function fuggveny ($arg_1, $arg_2,..., $arg_n) { utasítások; return $retval; //hatására rögtön befejeződik a függvény function fuggveny( $arg = $ertek) { //$arg belső változó, ezért az eredeti változóra nincs //hatással, a következő értékadás $arg=$uj_ertek; utasítások; return $retval; /* Referencia szerinti értékadás, hasznos lehet hatékonyság szempontjából, ha bonyoltabb struktúrájú változót adunk át, vagy ha a paraméter értékét kell változtatni. */ funcion fuggveny( &$refer ) { $refer = $var; //function fuggveny által definiált függvény meghívása fuggveny(par1, par2,, parn); Példa function szumma ($arg_1, $arg_2) { echo "Számolok.\n"; $retval = $arg_1 + $arg_2; return $retval; function ize() { $parameterek_szama = func_num_args(); echo "argumentumok száma: {$parameterek_szama\n"; if ($parameterek_szama >= 2) { echo "A második paraméter: ". func_get_arg (1). "\n"; //a $szumma és a szumma() két különböző kifejezés $szumma = szumma(2, 3); ize(1, 2, 3); Fájlok beágyazása ASP-ben és PHP-ben Már az SSI kapcsán említésre került az #include direktíva. ASP-ben is használható direktíva nagyon jól használható, már megirt ASP-oldalak betöltésére, amelyek különféle eljárásokat tartalmaznak. Így nem kell minden oldalon elhelyezni a sűrűn előforduló eljárásokat. Egy beágyazott fájl tartalmazhat más beágyazott fájlokat. Egy.asp fájlba ugyanazt a fájlt többször is be lehet ágyazni, feltéve, hogy az #include direktívák nem hoznak létre hurkot. Például, ha az Első.asp fájlba beágyazza a Második.inc fájlt a Második.inc fájlba nem ágyazhatja az Első.asp fájlt. Egy fájl önmagába sem ágyazható. Az ASP felderíti ezeket a hurok- és beágyazási hibákat, hibaüzenetet küld és felfüggeszti a kívánt.asp fájl feldolgozását.

34 2. Webes aktív oldalak készítése adatbázis eléréssel 34 / 91 Az ASP a fájlokat a parancsfájl-utasítások végrehajtása előtt beágyazza. Ezért a beágyazott fájl nevének létrehozásához parancsfájl-utasítás nem használható. Tehát a beágyazandó fájl nevében nem szerepelhet változó értéke, mivel akkor még nincsen az adott változóhoz érték rendelve. PHP-ben hasonló szerepet játszanak az include() és require() függvények, amelyek segítségével a paraméterként megadott fájlt illeszthetjük be és dolgozhatjuk fel. A két függvény egyenértékű, csak a hibakezelésben térnek el, az include() csak figyelmeztetést, míg a require() fatális hibát generál. Hasonlóan igaz ez az include_once() és a require_once() függvényekre, de itt ha többször próbálnánk meg beilleszteni az adott fájlt a PHP szkrtipbe, akkor már nem illeszti be újra. Ez nagyon hasznos akkor, ha a beillesztett fájlban függvényeket definiálunk. Mivel nem lehet egy függvényt újradefiniálni, a második beillesztésnél hibaüzenetet kapnánk. Az ASP-vel szemben a PHP-ben már használhatunk tetszőleges kifejezést, amikor megadjuk a beágyazni kívánt fájl útvonalát: <?php require_once("local.php"); require_once("../inc/global.php"); for ($i=1; $i<5; $i++) include "util".$i."php"; echo "Required_once files\n"; print_r(get_required_files()); echo "Included_once files\n"; print_r(get_included_files()); A get_required_files() és a get_included_files() függvényekkel lekérdezhetjük, hogy milyen fájlok lettek már beillesztve. Részben ide sorolható a readfile() függvény, amely egy fájlt olvas be és ír ki a kimenetre, ez a fájl lehet lokális, vagy akár URL segítségével megadott távoli fájl is. A virtual() függvény használható az Apache #include direktívájához hasonlóan. Fontos megjegyezni, hogy a fájl nem lehet PHP fájl, arra az include() használandó. A virtual() hasznos SSI direktívákat tartalmazó oldalak (.shtml fájlok) beágyazására Űrlapadatok feldolgozása ASP-ben és PHP-ben A HTML-űrlapok a webalapú információk gyűjtésének leggyakoribb módjai. Speciálisan elrendezett HTML-kódokat tartalmaznak, amelyek a felhasználói felület elemeit weblapon jelenítik meg. Ezek az elemek (például szövegmezők, gombok és jelölőnégyzetek) teszik lehetővé a weblapok interaktív használatát, és adatok továbbítását a webkiszolgálónak. Az alábbi HTML-kódok például egy olyan űrlapot hoznak létre, amelyen a felhasználó beírhatja a keresztnevét, vezetéknevét és életkorát, és tartalmaz egy gombot, amellyel ezen adatokat a webkiszolgálónak továbbíthatja. Az űrlap tartalmaz még egy rejtett beviteli kódot is (ez nem jelenik meg a böngészőben), amelynek segítségével további adatok juttathatók el a webkiszolgálónak.

35 2. Webes aktív oldalak készítése adatbázis eléréssel 35 / 91 <FORM METHOD="Get" ACTION="profile.cgi"> <INPUT TYPE="Text" NAME="VezetékNév"> <INPUT TYPE="Text" NAME="KeresztNév"> <INPUT TYPE="Text" NAME="Kor"> <INPUT TYPE="Hidden" NAME="FelhasználóÁllapota" VALUE="Új"> <INPUT TYPE="Submit" VALUE="Bevitel"> </FORM> Az első sorban az ACTION után kell megadni, hogy melyik, a webszerveren található oldalnak küldje el az űrlap információkat. Ez általában egy CGI program, ugyanis az űrlapadatokat át kell venni, és fel kell dolgozni. Ez természetesen lehet egy ASP vagy egy PHP szkript is. Három egyszerű módon lehet adatokat gyűjteni HTML-űrlapokról: statikus.htm fájlok tartalmazhatnak olyan űrlapot, amely értékeit egy.cgi fájlnak továbbítja egy adott.cgi fájl létrehozhat egy olyan űrlapot, amely az adatokat egy másik.cgi fájlnak továbbítja, valamint egy adott.cgi fájl létrehozhat olyan űrlapot, amely az adatokat visszaküldi az űrlapot tartalmazó.cgi fájlnak. A következőkben bemutatom, hogy miként kezeli le az űrlap által küldött adatokat az ASP valamint a PHP. De előtte még érdemes kitérni arra, hogy kétféle metódus létezik (method= get és a method= post ) a HTML-űrlapok elküldése során. Get metódus esetén az űrlap adatok.cgi fájl neve mögött egy kérdőjel után felsorolva jelennek meg. Ez az úgynevezett QueryString. Ilyen módon akkor is tudunk adatokat átadni a CGI programnak, ha az nem űrlapból származik, hanem például egy hivatkozásban (<A HREF= >példa</a>) fordul elő. Post metódus esetén az adatok az HTTP-kérés törzsében kerülnek továbbításra a feldolgozó programhoz. Fontos különbség még, hogy get metódus esetén csak ASCII karakterek szerepelhetnek. A fenti űrlap esetén a QueryString a következőképpen néz ki, ha az űrlapba a felhasználó ezeket az adatokat írja: Kovács, Béla, 30. Természetesen a.cgi helyén.php vagy.asp szerepel, ha PHP vagy ASP parancsértelmezőnek küldjük az űrlapadatokat Az ASP-ben a Request objektum segítségével kérdezhetjük le az űrlapok által elküldött információkat. Az alábbi utasítással megjeleníthetjük az űrlap KeresztNév mezőjébe írt információt. <%= Request.QueryString("KeresztNév") %> Mivel az URL-kérésben többször is elküldésre kerülhet egy mező, pl. többelemű lista kiválasztása esetén, vagy az alábbi hivatkozás esetén: Ebben az esetben Request.QueryString("Étel").Count mondja meg, hogy hányszor fordult az érték, és az alábbi ciklus segítségével kérdezhetjük le az összes értéket (egymás alá kiírja az ételek nevét): <% lngtotal = Request.QueryString("Étel").Count For i = 1 To lngtotal Response.Write Request.QueryString("Étel")(i) & "<BR>" Next %>

36 2. Webes aktív oldalak készítése adatbázis eléréssel 36 / 91 Az alábbi utasítás vesszővel elválasztva felsorolja az ételeket: <% Response.Write Request.QueryString("Étel") %> A get metódus másik hátránya, hogy a webkiszolgáló korlátozhatja az általa feldolgozandó URL hosszát, így bizonyos információk elveszhetnek. Ennek elkerülése érdekében ajánlott a post metódus használata. A Request.QueryString-hez hasonlóan a Request.Form tárolja a post által elküldött adatokat. Teljesen hasonlóan használható, mint a QueryString, lásd az alábbi példát: <% lngtotal = Request.Form("Étel").Count For i = 1 To lngtotal Response.Write Request.Form("Étel")(i) & "<BR>" Next %> Megjegyzés: Minden változó a gyűjteménynév (Form, QueryString, Cookies) nélkül közvetlenül elérhető a Request(változó) objektum meghívásával. Ebben az esetben webkiszolgáló az alábbi sorrendben végez keresést a gyűjteményekben: QueryString, Form, Cookies, ClientCertificate, ServerVariables. PHP-ben egy HTML-űrlap elküldésével az űrlap összes beviteli mezőjének értéke automatikusan elérhetővé válik a szkript számára. Ha a track_vars PHP szolgáltatás be van kapcsolva, ezek a változók a $HTTP_POST_VARS, $HTTP_GET_VARS, és/vagy $HTTP_POST_FILES asszociatív tömbökben foglalnak helyet a változók forrásának megfelelően. <form action="foo.php" method="post"> Name: <input type="text" name="usernev"><br> <input type="submit"> </form Ha elküldjük a fenti űrlapot, akkor a PHP létrehozza a $HTTP_POST_VARS['usernev'] változót. Ha a register_globals beállítás aktív, akkor ez a változó elérhető lesz $usernev globális változóként is. A PHP megérti és kezeli a tömbökbe rendezett űrlapváltozókat. Hasznos lehet csoportosítani az összetartozó változókat, vagy az olyan űrlapelemeket, ahol több lehetőség közül nem csak egy választható. <form action="array.php" method="post"> Név: <input type="text" name="szemelyes[nev]"><br> <input type="text" name="szemelyes[ ]"><br> Sör: <br> <select multiple name="ital[]"> <option value="warthog">warthog <option value="guinness">guinness <option value="stuttgarter">stuttgarter Schwabenbräu </select> <input type="submit"> </form> Az űrlap elküldésekor megoldható, hogy gomb helyett képet használunk ilyesféle jelölés segítségével: <input type="image" src="image.gif" name="elkuld"> Ha a felhasználó a képre kattint, a kiszolgálóra a következő két változó jut el: elkuld_x-et és elkuld_y-t. Ezek tartalmazzák a kattintás képen belüli koordinátáit. Eredetileg ezek a változók elkuld.x és elkuld.y néven szerepelnek. De a PHP a pontot automatikusan aláhúzássá konvertálja, mivel a változónévben a pont nem érvényes karakter. Minden bejövő változó esetén ez az automatikus konvertálás végbemegy.

37 2. Webes aktív oldalak készítése adatbázis eléréssel 37 / Sütik (cookie-k) használata ASP-ben és PHP-ben A sütik lehetővé teszik azt, hogy adatokat tároljunk a kliens gépen, így követve vagy azonosítva a visszatérő látogatókat. A webkiszolgáló küldi el a HTTP-fejlécben a kliens felé a következőhöz hasonló formában: Set-Cookie:SAJÁT1_COOKIE=csak_adat Set-Cookie:SAJÁT2_COOKIE=TÍPUS1=adat&TÍPUS2=valami+adat A klienstől függ, hogy engedélyezi-e a sütik tárolását. Ha igen, akkor a következő látogatás alkalmával a webszerver által előzőleg tárolt sütiket szintén elküldi a webkiszolgálónak. A sütiknek van egy neve, valamint egy kulcsa (de ez nem kötelező), de ha van kulcs, akkor az állhat alkulcs-érték párosból is. A fenti példában a SAJÁT1_COOKIE nevű sütinek csak értéke van, míg a SAJÁT2_COOKIE sütinek van két kulcsa, TÍPUS1 kulcsnak az értéke adat, a TÍPUS2 kulcsnak az értéke valami adat. Ezen kívül a sütikhez megadhatunk egy domain nevet, egy elérési útvonalat, egy lejárat dátumot és azt, hogy biztonságos-e a süti. ASP-ben a sütik értékét a Response.Cookies() segítségével állíthatjuk be. Ennek a szintaxisa a következő: Response.Cookies(cookie)[(kulcs).attribútum] = érték A cookie a süti neve. A kulcs nem kötelező paraméter. Ha meg van adva, akkor a cookie-t szótárként értelmezi a program, kulcs beállítása pedig az érték lesz. Az attribútum megadja a sütire vonatkozó adatokat. Az érték a kulcs vagy az attribútum paraméterekhez rendelendő érték. Az attribútum paramétere az alábbiak egyike lehet: Név Leírás Domain Csak írható. Megadása esetén a sütit csak az erre a tartományra érkező kérelmekre küldi el a program. ExpiresAbsolute Csak írható. A süti lejáratának dátuma. Ezt a dátumot meg kell adni annak érdekében, hogy a sütit a program a munkamenet befejezését követően az ügyfél lemezén tárolhassa. Amennyiben ez az attribútum nem az aktuális dátumot követő dátumot ad meg, a süti a munkamenet végeztével lejár. Expires Hasonló mint az előző, de nem dátumot, hanem másodpercet vár. HasKeys Csak olvasható. Megadja, hogy a süti tartalmaz-e kulcsot. Path Csak írható. Megadása esetén a program a sütit csak az erre az elérési útra vonatkozó kérelmekre küldi el. Ha az attribútum nincs beállítva, az alkalmazás elérési útja érvényesül. Secure Csak írható. Megadja, hogy a süti biztonságos-e. A sütik lekérdezésére a Request.Cookies függvény szolgál. Szintaxisa megegyezik a Response.Cookies szintaxisával, csak annyiban tér el, hogy az érték csak olvasható és az attribútumok közül csak a HasKeys elérhető. Ha nem adunk meg kulcsot, de a sütink alkulcs-érték párokat tartalmaz, akkor a lekérdezésnél a teljes értéket kapjuk vissza. <% Rem Az alábbi mycookie értéke a fenti beállítás esetén a következő: TÍPUS1=adat&TÍPUS2=valami+adat saját_cookie=request.cookies( SAJÁT2_COOKIE ) Rem Az alábbi sajáttípus1_cookie értéke a fenti beállítás esetén a következő: adat sajáttípus1_cookie=request.cookies( SAJÁT2_COOKIE )( TÍPUS1 ) Rem Az alábbi sajáttípus2_cookie értéke a fenti beállítás esetén a következő: valami adat sajáttípus2_cookie=request.cookies( SAJÁT2_COOKIE )( TÍPUS2 ) %>

38 2. Webes aktív oldalak készítése adatbázis eléréssel 38 / 91 PHP-ben a sütik beállítása a setcookie() függvénnyel lehetséges. A sütik részei a HTTP-fejlécnek, így a setcookie() függényt azelőtt kell meghívni, mielőtt bármilyen kimenetet küldenénk a böngészőnek. Ez a header() függvénnyel megegyező korlátozást jelent. A header() közvetlen HTTP-fejlécet küld. Egyik ilyen HTTP-fejléc a MIME típus megadása, ez ASP-ben a Response objektumon keresztül adható meg: <?php //PHP-ben ha JPG képet állítunk elő, akkor a MIME típust be kell állítani, még mielőtt bármit kiíratnánk. header ("Content-type: image/jpg"); <% Rem ASP-ben a MIME típus beállítása, szintén meg kell előznie bármilyen kiírató utasítást. Response.ContentType = "image/jpg" %> A kimenetet szabályzó függvények (ob_start(), ob_end_flush()) használhatók arra, hogy a kimenetet késleltessük addig, amíg minden süti és fejléc elküldésre kerül. <?php ob_start(); echo "Szia\n"; setcookie ("sutineve", "sutiadat"); ob_end_flush(); A setcookie() pontos szintaxisa, ahol a name a süti neve, a value a süti értéke, expire a lejárat dátuma másodpercekben, path az elérési útvonal valamint a domain az a tartomány, amely esetén el kell küldeni a sütit és a secure pedig, hogy biztonságos legyen-e: int setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]]) <? //Az alábbi süti lejárati dátuma a múltban van, így a munkamenet végeztével meg is szűnik. //Csak a /~user/ útvonal és *.cegnev.hu domain esetén küldi el a sütit biztonságos módon. setcookie ("TestCookie", "", time() , "/~user/", ".cegnev.hu", 1); Minden süti, amit a klienstől visszakapunk, automatikusan PHP változóvá válik, pont úgy, mint a get és a post kérésekkel érkező adatok, feltéve, hogy a register_globals és variables_order php.ini beállítások ennek megfelelően vannak beállítva. Ha több értéket szeretnél adni egy sütinek, adjunk hozzá a szokásos [] végződést a süti nevéhez, ahol [] közé írjuk be a süti nevéhez tartozó kulcsot. A PHP és későbbi változataiban a $_COOKIE nevű mindenhonnan látható változó mindig létrejön, tartalmazva a klienstől érkezett sütiket. A $HTTP_COOKIE_VARS a korábbi verziókban használható, ha a track_vars php.ini beállítás be van kapcsolva, bár ez a változó nem látszik mindenhonnan. A következő példa elhelyez a kliens gépen sütiket, majd a következő betöltéskor meg is jeleníti azokat: <?php setcookie ("sajat_cookie[kulcs1]", "ertek1"); setcookie ("sajat_cookie[kulcs2]", "ertek2"); setcookie ("sajat_cookie[kulcs3]", "ertek3"); if (isset ($sajat_cookie)) { while (list ($name, $value) = each ($cookie)) { echo "$name == $value<br>\n";

39 2. Webes aktív oldalak készítése adatbázis eléréssel 39 / Adatbáziskapcsolat ASP-ben és PHP-ben Mint a bevezetőben említettem, az ASP-ben azt szeretném megmutatni, hogy miként lehet kapcsolódni egy Microsoft SQL adatbázishoz, abban táblát létrehozni, adatokat beszúrni, illetve az ott található táblákon lekérdezéseket végrehajtani. Az adatbázishoz az OLE DB kapcsolat-karakterlánc segítségével lehet kapcsolódni: <% 'Connection objektum létrehozása Set dbconn = Server.CreateObject("ADODB.Connection") 'Kapcsolat megnyitása az OLE DB kapcsolat-katrakterlánc használatával dbconn.open "DSN=WEBSQL;DATABASE=aspdb;UID=msuser;PWD=asp123" Ide kerülnek az adatbázis műveletek Adatbázis kapcsolat lezárása dbconn.close %> Ahhoz, hogy ez működjön a Windowsban a Vezérlőpultnál, az ODBC adatforrásokban be kell állítani az SQL szerver elérését, ahol is egy új adatforrást kell felvenni (SQL Server), majd megadni neki egy tetszőleges nevet (a fenti példában WEBSQL), leírást és egy kiszolgáló szervert, ami alapértelmezés szerint a localhost, a Microsoft SQL 2000 Server telepítésnél leírtak alapján ez a \\HOMEPC\HOMESQL instanciának felel meg. Az adatbázis műveletek egy SQL kérés futtatásával történnek. Csak a tipikus adatbázis műveleteket szeretném bemutatni, azaz, hogyan lehet egy táblát létrehozni, hogyan lehet sort beszúrni, módosítani, törölni, hogyan lehet egy táblát törölni. Aztán a legtöbbet használt részre térnék ki, hogyan is lehet lekérdezni egy adatbázis tábla tartalmát. Az alábbi példaprogramban találhatóak az adatbázis műveletek, megjegyzéssel együtt: <% Set dbconn = Server.CreateObject("ADODB.Connection") dbconn.open "DSN=WEBSQL;DATABASE=aspdb;UID=msuser;PWD=asp123" A nevek tábla létrehozása, amelynek 3 oszlopa van: vezetéknév, keresztnév, kor SQLcmd = CREATE TABLE nevek (vezeteknev varchar(30), keresztnev varchar(30), kor integer); SQL parancs futtatása dbconn.execute (SQLcmd) Beszúrás az előzőleg létrehozott táblába SQLcmd = INSERT INTO nevek VALUES( Kovács, Béla, 43 ); dbconn.execute (SQLcmd) Az előzőleg beszúrt sor módosítása SQLcmd = UPDATE nevek SET kor= 45 WHERE vezeteknev= Kovács AND keresztnev= Béla AND kor= 43 ; dbconn.execute (SQLcmd) Az előzőleg beszúrt sor törlése SQLcmd = DELETE nevek WHERE vezeteknev= Kovács AND keresztnev= Béla AND kor= 45 ; dbconn.execute (SQLcmd) Az egész tábla törlése SQLcmd = DROP TABLE nevek; dbconn.execute (SQLcmd) dbconn.close %> Ha egy SQL lekérdezést hajtunk végre, akkor az eredménytábla, egy Recordset típusú objektum lesz. Ezen az objektumon keresztül olvashatjuk ki a táblából az aktuális sor tartalmát, majd léptethetjük az aktuális sort a következőre.

40 2. Webes aktív oldalak készítése adatbázis eléréssel 40 / 91 <% Set dbconn = Server.CreateObject("ADODB.Connection") dbconn.open "DSN=WEBSQL;DATABASE=aspdb;UID=msuser;PWD=asp123" A nevek tábla teljes tartalmát lekérdezi SQLcmd = "SELECT vezeteknev, keresztnev, kor FROM nevek;" SQL parancs futtatása és az eredmény eltárolása az rs Recordset-ben Set rs = dbconn.execute(sqlcmd) Ha több mint 5 soros volt a lekérdezés eredménye, akkor kiírjuk a sorok számát If rs.recordcount >= 5 then Response.Write "A sorok száma: " & rs.recordcount & ". <BR>" Megjeleníti a lekérdezés tartalmát Do Until rs.eof Response.Write "Név, kor: " & rs("vezeteknev") & " " & rs("keresztnev") & ", " & rs("kor") &"<BR>" rs.movenext Loop rs.close dbconn.close %> PHP-ben nagyon sokféle adatbázishoz lehet kapcsolódni, amelyek működése és használatának módja is nagyban hasonlít egymásra. (A fontosabb függvények nevének csak a prefixe tér el az adatbázistól függően.) MySQL adatbázis eléréséhez a mysql_ prefixű függvényeket használhatjuk. (Ehhez persze szükséges a php-mysql modul betöltése.) Az alábbi táblázatban megtalálhatóak a legfontosabb MySQL függvények: Függvény neve mysql_connect(), mysql_pconnect() mysql_close() mysql_select_db() mysql_query() mysql_fetch_array() mysql_num_rows() mysql_affected_rows() Leírás Kapcsolódik az adatbázishoz. Megpróbál egy már meg létező, kiépített adatbázis kapcsolat azonosítójával visszatérni, ha van ilyen, ha nincs új kapcsolatot épít fel. PHP oldal végén sem záródik be az ilyen kapcsolat a mysql_close() hatására. Bezárja a mysql_connect() utasítással megnyitott kapcsolatot. Kiválasztja a MySQL adatbázist. Egy SQL lekérdezést, műveletet hajt végre. Az SQL lekérdezés eredménytábláját soronként adja vissza, amely oszlopait egy asszociatív tömbként érjük el. Megmondja, hogy a mysql_query() a SELECT kérésnél hány sorral tért vissza. Megmondja, hogy a mysql_query() az INSERT, UPDATE, DELETE esetén hány sor módosított. <? //A MySQL kapcsolat kiépítése, a paraméterek: MySQL kiszolgáló hosztneve, MySQL felhasználónév, MySQL jelszó. $kapcsolat = mysql_pconnect("localhost", "phpuser", "php123"); //Kiválasztja az aktuális adatbázist az előzőleg felépített kapcsolatban. mysql_select_db("phpdb", $kapcsolat); //A nevek tábla létrehozása, amelynek 3 oszlopa van: vezetéknév, keresztnév, kor $keres = "CREATE TABLE nevek (vezeteknev varchar(30), keresztnev varchar(30), kor integer);" mysql_query($keres, $kapcsolat); //Beszúrás az előzőleg létrehozott táblába $keres = INSERT INTO nevek VALUES( Kovács, Béla, 43 ); mysql_query($keres, $kapcsolat); //Az előzőleg beszúrt sor törlése $keres = DELETE nevek WHERE vezeteknev= Kovács AND keresztnev= Béla AND kor= 45 ; mysql_query($keres, $kapcsolat); //Az előzőleg beszúrt sor módosítása $keres = UPDATE nevek SET kor= 45 WHERE vezeteknev= Kovács AND keresztnev= Béla AND kor= 43 ; mysql_query($keres, $kapcsolat); //Az egész tábla törlése $keres = DROP TABLE nevek; mysql_query($keres, $kapcsolat);

41 2. Webes aktív oldalak készítése adatbázis eléréssel 41 / 91 A fenti esetekben a mysql_query() visszatérési értéke egy logikai érték, amely megmondja, hogy az adott SQL-kérés sikeresen végrehajtódott-e. Ha egy SELECT utasítást hajtunk végre, akkor a kimenetet fel kell dolgozni a mysql_fetch_array() függvény segítségével. <? $kapcsolat = mysql_pconnect("localhost", "phpuser", "php123"); mysql_select_db("phpdb", $kapcsolat); //A nevek tábla teljes tartalmát lekérdezi $keres = "SELECT vezeteknev, keresztnev, kor FROM nevek;"; //A kimenetet eltároljuk $kimenet = mysql_query($keres, $kapcsolat); //Eltároljuk, hogy hány sor került a táblába $rows = mysql_num_rows($kapcsolat); //Ha a sorok száma több mint 5, akkor a sorok számát if($rows > 5) echo "Sorok száma: $rows <BR>"; //A kimenetet feldolgozzuk, ha visszatérési érték igaz, akkor történt sorkiolvasás. //Az eredményt egy asszociatív tömbben kapjuk vissza, ahol a kulcsok a lekérdezett mezők nevei. //Következő futtatásra a következő sort kapjuk vissza, ha van. while ($adatok = mysql_fetch_array($kimenet)) { echo "Név, kor: ".$adatok["vezeteknev"]." ".$adatok["keresztnev"].", ".$adatok["kor"]."<br>"; Megjegyzés: Lényeges eltérés található a MS SQL és a MySQL között a SELECT lekérdezésben. Nevezetesen a "SELECT * FROM table"; utasítás csak MS SQL esetén működik, ugyanis a mysql_fetch_array() PHP függvénynek szüksége van az oszlopok nevére, így minden esetben fel kell sorolni azokat, még akkor is, ha az összes oszlopra szükségünk van. Valamint mutatkoznak eltérések még az SQL lekérdezés során használt rendszerspecifikus függvények során, mint pl. dátumkezelő és stringkezelő függvényekben, amelyeket egy SQL lekérdezés során alkalmazhatunk.

42 3. HTML és programkód elkülönítésének lehetősége 42 / HTML és programkód elkülönítésének lehetősége Ebben a fejezetben röviden azokra a lehetőségekre térnék ki, hogy milyen módszerekkel lehet az ASP illetve PHP kódsorokat a lehető legjobban elkülöníteni a HTML kódsoroktól. Az elkülönítésre azért van szükség, mert általában a webprogramozónak nem feladata a weblap látványának kialakítása, az a webdesigner feladata. A webprogramozó munkája során a HTML űrlapokhoz szükséges HTML kódokat alakítja ki, amelyet majd a webdesigner beépít a saját HTML kódjába. De mint az ASP és PHP működési modelljéből is kitűnik, a tényleges programkódok és a HTML kódok vegyesen szerepelnek a kiszolgálón elhelyezett fájlokban. Jellemzően a következő feladatok fordulnak elő egy weblap programozása során: 1. űrlap vagy adatbázisból nyert információk megjelenítése, 2. űrlap adatok feldolgozása, 3. változó értékének kiszámolása, 4. változó értékének megjelenítése. Érdemes az összetartozó programkódokat tartalmazó kódsorokat egy fájlba szervezni, vagy ha lehetőség van eljárások, függvények írására, akkor ezeket az eljárásokat, függvényeket egy fájlba elhelyezni. Ez megkönnyíti az olvashatóságot, valamint növeli a hatékonyságot, ha akkor használjuk fel a tényleges weblapon, ha szükségünk is van rá. Például az adatbázis kezeléssel kapcsolatos függvényeket, mint adatbázis megnyitás, adatbázis műveletek, adatbázis lezárása, érdemes külön fájlban elhelyezni. Ezt csak akkor használjuk majd fel, ha az adott weboldal megjelenítése során adatbázis műveleteket kell igénybe vennünk. Érdemes a HTML kódokat is külön fájlokban elhelyezni. Ezekben legfeljebb változó értékének kiíratása, vagy esetleg logikai kifejezés szerinti elágazás szerepeljen. Így minimalizálni lehet a programkódok és a HTML kódok keveredésének lehetőségét. A weblap tényleges fájljába pedig beágyazzuk ezeket a programkódokat és HTML kódokat tartalmazó fájlokat Elkülönítés megvalósítása ASP-ben Az IIS webszerver az ASP programozása során támogatja az #include SSI direktívákat, amelynek a használata nagyobb weblapok esetén erősen ajánlott. Fontos tudni, hogy a beágyazás még az oldal kiértékelése előtt hajtódik végre, így például változókat nem használhatunk a direktíva meghívásánál. Paramétereket is csak globális változókon keresztül tudunk átadni. De mégis a direktíva segítségével a lehető legjobban el tudjuk különíteni a programkódokat és a HTML kódokat. Jellemző feladatok megvalósítása: 1.) Elkülönítjük egy fájlba a programkódokat, amelyek az űrlapból, vagy adatbázisból kinyerik a szükséges információkat, valamint feldolgozzák azokat. Szintén elkülönítjük a HTML kódokat egy külön fájlba, és ebben legfeljebb változó érték kiíratás utasítást (<%= VÁLTOZÓ_NEVE%>) használjuk. Esetleg szerepelhet még elágazás is, a következő formában:

43 3. HTML és programkód elkülönítésének lehetősége 43 / 91 <% If logikai_feltétel_vagy_logikai_változó Then %> HTML igaz ág <% Else %> HTML hamis ág <%End If%> 2.) Hasonlóan az előbbihez elkülönítjük az űrlapadatok feldolgozásához szükséges ASP utasításokat (Request.Form, Request.QueryString), és a HTML kódot, amelyben a feldolgozás során keletkezett információk is szerepelhetnek. 3.) Változó értékének a kiszámítása elkülönítve szerepeljen a programkódok között, külön fájlban, ha bonyolultabb számítás, akkor akár külön eljárásban. 4.) Változó érték kiíratást alkalmazzuk a HTML kódokban: <%= VÁLTOZÓ_NEVE%>. Megjegyzés: ASP oldalak fejlesztésénél figyelni kell arra, hogy gyorstárba kerülnek az oldalak, ezért ezt a funkciót a webszerver beállításainál érdemes kikapcsolni, mert a változtatásokat különben nem veszi azonnal figyelembe Elkülönítés megvalósítása PHP-ben A PHP-ben fejlettebb a fájlbeágyazás támogatása, mint az ASP-ben. Többféle módon tehetjük meg, mint ahogy az a számú fejezetben olvasható. Két kategóriába sorolhatóak a beágyazandó fájlok a kiterjesztésük (típusuk) szerint. Ha HTML oldalt szeretnénk beágyazni, ami tartalmazhat Apache SSI direktívákat, akkor a virtual() függvényt kell alkalmaznunk, ilyen esetben a beágyazandó fájl nem tartalmazhat PHP kódokat. Az include(), require(), include_once(), require_once() függvények alkalmazhatók PHP kódok beágyazására. Ebben az esetben már használhatunk változókat a beágyazandó fájl nevének megadásakor, mivel PHP utasítás végzi a beágyazást. Érdemes az include_once() függvényt használni, ugyanis ha több helyről is szeretnénk ugyanazt a fájlt beágyazni, akkor nem kapunk hibaüzenetet (pl. a függvények újradeklarálása miatt, ami nem megengedett). Ha olyan PHP oldalt készítünk, amelyben nagyon fontos, hogy a beágyazás megtörténjen, akkor alkalmazzuk a require_once() függvényt az include_once() helyett, ugyanis ilyenkor végzetes hibával leáll az adott PHP oldal feldolgozása, míg a másik esetben csak egy hibaüzenet figyelmeztet. A jellemző feladatok megvalósítása nagyban hasonlít az ASP-ben leírtakra, csak a szintaxisban tér el. Az űrlap adatok feldolgozása során alkalmazhatjuk a globális változókat (megfelelő PHP installáció esetén), vagy $HTTP_GET_VARS, $HTTP_PUT_VARS asszociatív tömböket. HTML oldalakon a változó értékének megjelenítésehez használjuk a <?= $változó_neve utasítást, vagy elágazás esetén a következőt: <? if (logikai_feltétel_vagy_logikai_változó) { HTML igaz ág <? else { HTML hamis ág <? Függvények esetén figyelni kell a paraméterek átadására, valamint a visszatérési értékek kezelésére. A globális változók nem érhetők el a függvények belsejében, mivel ott minden változó lokális hatókörrel rendelkezik. Ezért a globális változókat deklarálni kell a függvények elején (global utasítással), vagy $GLOBALS asszociatív tömböt kell használni. Paramétereket adhatunk át referencia szerint is, ha összetettebb adattípusról van szó, ami hatékonyabbá teszi a PHP kódot.

44 4. Példaprogram 44 / Példaprogram A diplomamunkám során elkészítettem egy kis alkalmazást, amely szemlélteti az előző fejezetekben tárgyalt ASP és PHP programnyelvek használatát. Az alkalmazás egy statisztikai rendszert valósít meg, amely egy adott weboldal látogatottsági statisztikáját méri. Az adatokat SQL adatbázisban tárolja és jeleníti meg táblázatos, illetve grafikonos formában. Először ASP nyelven valósítottam meg a rendszert, alakítottam ki a HTML kódokat, majd utána a szintaxis megfelelő módosításával készítettem el a PHP nyelven megírt változatot. A fejlesztés során tapasztaltam, hogy a PHP jóval erősebben alkalmazható weboldalak fejlesztéséhez, mert sokkal több eljárást tartalmaz és dokumentációjában is könnyebb eligazodni. Egyik eltérés a képek kezelésében jelentkezett. Az ASP nem tud képeket létrehozni, ezért egy külső gyártó által készített kiprobálható kiegészítőt kellett felinstallálni az IIS webszerverhez, az ASPIMAGE.DLL-t. Ezzel volt csak megoldható a képek előállítása ASP-ben. A dokumentációban leírtak alapján az átlátszó kép előállítását nem sikerült működésre bírni. A másik lényeges eltérés, hogy PHP közvetlenül nem támogatja a Windows-ban megtalálható betűkészleteket, de be tudja tölteni azokat, ezért a megfelelő betűtípus fájlokat át kellett másolni a Windows rendszerből, ezeket egy külön /fonts alkönyvtárba tettem. A statisztikai rendszer leírása: A főoldal két különböző részből áll. Az egyik egy adminisztrációs felület, ahol a kezdeti adatbázist lehet létrehozatni, új felhasználót lehet felvenni a rendszerbe, felhasználó adatait lehet módosítani, illetve törölni lehet a felhasználót. Minden felhasználóhoz tartozik egy számláló, aminek a kinézetét a felhasználó határozhatja meg. Minden egyes számlálóhoz külön adatbázis tartozik. A számlálónak megadhatjuk, hogy az azonos látogatókat milyen időközönként számolja újra, illetve melyik weboldalon működjön a számláló. Természetesen a felhasználót egy login név és egy jelszó azonosítja, valamint egy egyedi azonosító szám (ID). A másik a felhasználói felület, amelyen a felhasználó be tud lépni, és ki tud jelentkezni. A sikeres bejelentkezés után egy süti információban eltárolódik a felhasználó azonosítója. Kilépésnél a süti információ törlődik. Ha belépett, akkor elérhető számára a számlálójának a statisztikája. Táblázatban megnézheti az összes látogató összes látogatási információját (mikor, milyen IP címről, milyen hosztnévről, milyen bőngészővel), megnézheti éves, havi, napi, óránkénti oldaltalálatainak számát. Az éves adatokat havi bontásban grafikon is szemlélteti, hasonlóan havit napi bontásban, valamint a napit óránkénti bontásban. A statisztikai rendszer működése: Miután az adminisztrációs oldalon létrehoztuk a kívánt számlálót (felhasználó név; jelszó; előtérszín; háttérszín; transzparens legyen-e; URL címe, amire működjön a számláló; időkorlát másodpercben azonos IP című látogatók szűrése miatt; betűméret; betűtípus megadásával), a megfelelő HTML oldalunkon el kell helyezni egy hivatkozást: <img src=" vagy <img src=" Ha adtunk meg URL címet, akkor a fenti hivatkozást az URL cím által hivatkozott HTML fájlban kell elhelyezni, mivel csak onnan fog működni a számláló.

45 4. Példaprogram 45 / 91 Az első létrehozott felhasználó kapja a es azonosító számot (ID), a következőek pedig mindig a maximális számúnál eggyel nagyobb számút kapnak. Ezzel a hivatkozással a HTML oldalunkon megjelenik a számláló, ugyanis a counter.asp illetve counter.php egy PNG formátumű képet állít elő. Közben növeli a számláló értékét, figyelve, az időkorlátra, valamint az URL címre, hogy jó oldalról hívták-e meg; és eltárolja egy SQL táblában a jelenlegi látogatás információit. Ez a rendszer lelke, lényegében az új felhasználó felvételén kívül itt történik az adatbázis táblákba beszúrás, a többi oldalon ezen információk kerülnek megjelenítésre. A graph.asp és a graph.php jeleníti meg a látogatottsági információkat szintén PNG kép formájában, amelyre egy grafikont rajzol. Megadható paraméterként a grafikon típusa: éves, havi, napi, illetve megadható két dátum is (az aktuális és egy régebbi), amelyek alapján kiszámolja az oszlopok magasságát. Az első grafikon oszlopgrafikon, ha nem adunk meg semmit, akkor az idei év havi bontású grafikonja, és a másik grafikon pedig az előző évhez tartozó havi bontású grafikon. Az <id> megadása feltétlen fontos, különben hibajelzést kapunk, mert nem lehet adatbázist olvasni. Egy tesztoldal augusztus és május között gyűjtött adatai alapján a következő grafikont generálja: Két fontos fájl működéséről már szóltam, az alábbi táblázatban összefoglalnám, hogy az egyes fájlokban mi található. A pontos forráskód az 5.5. és az 5.6. számú mellékletben olvasható. A főkönyvtárban találhatók a meghívható (ASP illetve PHP) weboldalak, amelyek beágyazzák az INC_ASP illetve INC_PHP könyvtár alatt található programkódokat, illetve az INC_HTM alatt található HTML kódokat tartalmazó fájlokat. ASP / PHP fájl admin_create.asp admin_create.php admin_delete.asp admin_delete.php admin_modify.asp admin_modify.php admin_newuser.asp admin_newuser.php counter.asp counter.php default.asp index.php graph.asp graph.php user_login.asp user_login.php Leírás Létrehozza a kezdeti adatbázist (statusers nevű tábla), amelybe a felhasználók adatai kerülnek. Megjeleníti a felvett felhasználókat egy listában. Ha a megjelenő listában rákattintunk valamelyik felhasználó azonosítójára, akkor azt kitörli az adatbázisból, majd a maradék felhasználókat újra kilistázhatjuk. Megjeleníti a felvett felhasználókat egy listában. Ha a megjelenő listában rákattintunk valamelyik felhasználó azonosítójára, akkor behozza a felhasználó felvételénél kitöltött űrlapot, az ott megadott adatokkal, amelyeket átírhatunk és módosíthatjuk az adatbázist. Új felhasználót vehetünk fel egy űrlap kitöltésével. A statusers táblába bekerül a felhasználó összes adata, valamint a statuser<id> adatbázis tábla is létrejön, amelybe majd a felhasználó statisztikai adatai kerülnek bele. Kiírja az <id> sorszámú számlálóhoz tartózó összes találat számát a felhasználó felvételénél megadott megjelenítési információk alapján. Főoldal, amelyről az összes adminisztrátori, illetve felhasználói weboldal elérhető. Paraméter határozza meg, hogy melyik jelenjen meg, az alapértelmezett az adminisztrátori oldal. Grafikont rajzol <id> sorszámú adatbázis alapján. Paraméterben meg lehet adni a grafikon típusát (year, month, day), valamint az időközt, ami alapján olvassa az adatbázist. Felhasználó név és jelszó ellenőrzése után, ha ez sikeresen megtörtént, akkor egy süti információt helyezz el a webkliensen, amely a felhasználó <id> számát tartalmazza.

46 4. Példaprogram 46 / 91 ASP / PHP fájl user_logout.asp user_logout.php user_menu.asp user_menu.php user_stat.asp user_stat.php inc_asp/add.inc inc_php/add.inc inc_asp/admin_create.inc inc_php/admin_create.inc inc_asp/admin_delete.inc inc_php/admin_delete.inc inc_asp/admin_modify.inc inc_php/admin_modify.inc inc_asp/admin_newuser.inc inc_php/admin_newuser.inc inc_asp/dbfunc.inc inc_php/dbfunc.inc inc_asp/declares.inc inc_php/declares.inc inc_asp/declares_form.inc inc_php/declares_form.inc inc_asp/declares_login.inc inc_php/declares_login.inc inc_asp/delete.inc inc_php/delete.inc inc_asp/default.inc inc_php/index.inc inc_asp/modify.inc inc_php/modify.inc inc_asp/user_login.inc inc_php/user_login.inc inc_asp/user_logout.inc inc_php/user_logout.inc inc_asp/user_menu.inc inc_php/user_menu.inc inc_asp/user_stat.inc inc_php/user_stat.inc inc_htm/admin_newuser1.inc inc_htm/admin_newuser2.inc inc_htm/admin_newuser3.inc inc_htm/footer.inc inc_htm/header.inc inc_htm/user_login.inc Leírás A belépéskor elhelyezett süti információt törli. Utána újra be kell jelentkezni, hogy elérjük a felhasználói menüt. Kirajzol egy HTML táblázatot, amelyben a felhasználói statisztikák oldalt hívhatjuk meg különféle módon. (Pl. milyen időközről szeretnénk információt, táblázatos vagy grafikonos formában szeretnénk-e.) A menüben kiválasztott és paraméterként átadott információk alapján <id> sorszámú adatbázisból jelenít meg információkat. Például az éves statisztikára rákattintva látjuk annak havi bontását, amelyeket napi bontásban tovább részletezhetünk. Az új felhasználóhoz tartozó adatbázis táblát hozza létre, valamint az adatbázis táblához egy index mezőt is definiál. A felhasználók adatait tartalmazó adatbázis táblát hozza létre. Ezt csak egyszer kell megtenni. Feldolgozza a paramétereket, majd azok alapján megjelenít egy felhasználó listát, amelyben ki lehet választani egy felhasználót. Ha már kiválasztottunk egy felhasználót, akkor az adott felhasználót megprobálja törölni, ha nem sikerül hibát jelez. Felhasználó adatainak módosítását teszi lehetővé. Ha először hívjuk meg, akkor megjeleníti a felhasználó adatait egy listában. Ha a listából kiválasztottunk egy felhasználót, akkor egy űrlapon megjeleníti az adatait, amely űrlap kitöltésével módosíthatjuk az adatokat, vagy hibajelzést kapunk, ha pl. a jelszó nem lett jól megadva. Felvesz egy új felhasználót. Ha először hívjuk meg, akkor bead egy üres űrlapot. Ha ezt elküldjük és a jelszó megfelelő akkor felveszi, egyébként hibát jelez. Az adatbázis kapcsolatért felelős. Létrehozza az adatbázis kapcslatot és két függvényt definiál, egyikkel adatbázis táblát hozhatunk létre, a másikkal egy sort szúrhatunk a táblába. A tábla neve és a létrehozandó mezők illetve beszúrandó adatokat paraméterként veszi át. A globális változókat deklarálja, amelyek több helyen is előfordulnak. ASP-ben a változók deklarálását is kényszeríti. A felhasználó bevitelénél / módosításánál megjelenő űrlapváltozókat deklarálja, valamint feltölti kezdeti értékekkel, ha az adott feltétel teljesül. A felhasználó belépésénél található űrlap által elküldött értéket tárolja el globális változókban. Felhasználó törlésénél használt függvényeket tartalmazza. Az egyik a felhasználók listázása, a másik a tényleges törlést végző eljárás, amely az <id>-t várja paraméterként. Megjeleníti az adminisztrációs vagy a felhasználói oldal HTML kódját a paraméternek megfelelően. Felhasználók módosítása során használt három fontos eljárást tartalmaz. Az egyik megjelenít egy felhasználó listát, amellyel az egyes felhasználók adatait tudjuk módosításra kijelölni. A másik kiolvassa az adott <id>-hoz tartozó felhasználó adatait és eltárolja globális változókban. A harmadik ezen globális változók alapján módosítja a felhasználó adatait az adatbázisban. Először megjelenít egy űrlapot a felhasználó név és jelszó bekéréséhez. Majd megnézi, hogy jól adtuk-e meg, ha igen, akkor az <id> információt eltárolja egy süti információban, ha nem akkor hibát jelez és újra probálkozhatunk. Törli az <id>-re vonatkozó süti információt. Kirajzol egy HTML táblázatot, amelyben a user_stat.asp / user_stat.php fájlra hivatkozik különböző paraméterekkel. Pl. grafiont vagy táblázatos statisztikát szeretnénk és az éves, havi, napi, vagy óránkénti legyen-e. Kirajzol egy HTML táblázatot, amelyben saját magára hivatkozik más paraméterekkel. Pl. táblázatos éves statisztika esetén kiírja az adatbázis éves találatait, hogy melyik évben mennyi találat volt és felkínálja az adott év havi bontású statisztikájának megjelenítését táblázat, vagy grafikon formájában. A felhasználó felvételénél és módosításánál megjelenő űrlap HTML kódját tartalmazza. Felhasználó sikeres felvétele után megjelenítendő HTML kódokat tartalmazza. Felhasználó sikertelen felvétele után megjelenítendő HTML kódokat tartalmazza. Jelenleg a felvétel sikertelen, ha nem egyezik az űrlapon szereplő jelszómezők tartalma. Az összes oldal lábléce, maga a lábléc HTML kódja található itt. Az összes oldal fejléce, maga a fejléc HTML kód található itt. Globális változón keresztül a fejléc mező szöveges értékét át tudjuk adni. A felhasználó belépésénél megjelenő űrlap HTML kódját tartalmazza.

47 5. Mellékletek 47 / Mellékletek Az 5.1. pont alatt található mellékletben a Microsoft SQL Server 2000 változatának a telepítését illusztrálnám, a telepítő program által megjelenített ablakok segítségével. Az 5.2. pont alatt az IIS webszerver által definiált változók leírását mutatnám be. A változók egy része más webszervereken is elérhetőek. ASP-ben a Request objektum ServerVariables függvényével kérdezhetjük le. Az 5.3. pont alatt az Apache webszerver előre definiált változóinak lekérdezését mutatnám be PHP alatt. A PHP-ben ezek globális változók, amelyek értékeit nem tudjuk megváltoztatni. Az 5.4. pont alatt a PHP előre definiált változóinak és konstansainak leírásait foglaltam össze. Ide azok az előre definiált változók kerültek, amelyek a csak a PHP-re jellemzőek, nem pedig webszerver specifikus változók. Az 5.5. pont alatt a példaprogram ASP-ben megírt programkódja található. Az egyes fájlok tartalma olvasható, a fájlok elérési útvonala a Windows XP alatt beüzemelt IIS webszervernek kezdőkönyvtárával (c:\inetpub\wwwroot) együtt szerepelnek. A főoldal a URL segítéségével érhető el. Az 5.6. pont alatt a példaprogram PHP-ben megírt programkódja található. Az egyes fájlok tartalma olvasható, a fájlok elérési útvonala a Linux alatt beüzemelt Apache webszervernek kezdőkönyvtárával (/var/www) együtt szerepelnek. A főoldal a URL segítéségével érhető el.

48 5. Mellékletek 48 / Microsoft SQL Server 2000 telepítésének folyamata Az alábbi képeken látható az Microsoft SQL Server 2000 Personal Edition verziójának telepítése lépésről lépésre. 1. lépés 2. lépés 3. lépés

49 5. Mellékletek 49 / lépés 5. lépés 6. lépés

50 5. Mellékletek 50 / lépés 8. lépés 9. lépés

51 5. Mellékletek 51 / lépés 11. lépés 12. lépés

LOGalyze Telepítési és Frissítési Dokumentáció Verzió 3.0

LOGalyze Telepítési és Frissítési Dokumentáció Verzió 3.0 LOGalyze Telepítési és Frissítési Dokumentáció Verzió 3.0 Dokumentum verzió: 3.0/1 Utolsó módosítás: 2009. március 5. 2 LOGalyze Telepítési és Frissítési Dokumentáció LOGalyze 3.0 Telepítési és Frissítési

Részletesebben

WWW Kliens-szerver Alapfogalmak Technológiák Terv. Web programozás 1 / 31

WWW Kliens-szerver Alapfogalmak Technológiák Terv. Web programozás 1 / 31 Web programozás 2011 2012 1 / 31 Áttekintés Mi a web? / A web rövid története Kliens szerver architektúra Néhány alapfogalom Kliens- illetve szerver oldali technológiák áttekintése Miről lesz szó... (kurzus/labor/vizsga)

Részletesebben

iseries Access for Windows: Adminisztráció

iseries Access for Windows: Adminisztráció IBM Systems - iseries iseries Access for Windows: Adminisztráció V5R4 IBM Systems - iseries iseries Access for Windows: Adminisztráció V5R4 Megjegyzés Mielőtt a jelen leírást és a vonatkozó terméket használná,

Részletesebben

AIX 6.1. IBM Systems Director Console for AIX

AIX 6.1. IBM Systems Director Console for AIX AIX 6.1 IBM Systems Director Console for AIX AIX 6.1 IBM Systems Director Console for AIX Megjegyzés Az információk és a tárgyalt termék használatba vétele előtt olvassa el a Nyilatkozatok oldalszám:

Részletesebben

Felhasználói kézikönyv Bázis, Aktív, Portál és Portál+ csomagokhoz

Felhasználói kézikönyv Bázis, Aktív, Portál és Portál+ csomagokhoz Bázis, Aktív, Portál és Portál+ csomagokhoz MOLEHAND Kft. Verzió Dátum Módosította Változás 1 2009-06-11 Simkó Benedek Dokumentum létrehozása 1.1 2009-08-12 Halász István VPN kapcsolódás fejezet létrehozása

Részletesebben

Az Orbis adatbáziskezelő

Az Orbis adatbáziskezelő ORBIS ADATBÁZIS WEBRE VITELE KÉSZÍTETTE: SOÓS PÉTER 2001. április 13. Bevezetés Ezen írás a NETWORKSHOP 2001 konferenciára készített előadásom anyagának szerkesztett változata. 1994-95. óta sok jelentős

Részletesebben

VirtualBox, Debian telepítés

VirtualBox, Debian telepítés VirtualBox, Debian telepítés 1 VirtualBox Az Oracle VirtualBox egy x86-alapú (azaz AMD vagy Intel rendszerekre kifejlesztett), több platformon is futtatható virtualizációs program. A segítségével virtuális

Részletesebben

2014 UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

2014 UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED Tavasz 2014 UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED Department of Software Engineering Számítógép-hálózatok 3. gyakorlat Packet Tracer alapok Deák Kristóf S z e g e d i T u d o m á n

Részletesebben

NOD32 Antivirus 3.0. Felhasználói útmutató. Beépített összetevők: ESET NOD32 Antivirus ESET NOD32 Antispyware. we protect your digital worlds

NOD32 Antivirus 3.0. Felhasználói útmutató. Beépített összetevők: ESET NOD32 Antivirus ESET NOD32 Antispyware. we protect your digital worlds NOD32 Antivirus 3.0 Beépített összetevők: ESET NOD32 Antivirus ESET NOD32 Antispyware Felhasználói útmutató we protect your digital worlds tartalomjegyzék 1. ESET NOD32 Antivirus 3.0...4 1.1 Újdonságok...

Részletesebben

Informatikai tevékenység 2234 Maglód, Széchenyi u. 4. +36.30.215.6737 +36.29.325.854 Mérnöki, tanácsadói tevékenység Iroda: Mobil: Telefon:

Informatikai tevékenység 2234 Maglód, Széchenyi u. 4. +36.30.215.6737 +36.29.325.854 Mérnöki, tanácsadói tevékenység Iroda: Mobil: Telefon: SULISTAT RENDSZER ismertető anyag Budapest, 2004 július Készítette: UFO-INFO Bt., Újfalusi Krisztián UFO-INFO Bt. SuliStat Rendszer Ismertetője 1 / 13 BEVEZETÉS Ez a dokumentáció az UFO-INFO Bt. által

Részletesebben

applikációs protokollok

applikációs protokollok Applikációs protokollok Hálózati szolgáltatások 2. applikációs protokollok: HTTP, HTTPS, FTP, SFTP, POP3, IMAP, SMTP Informatikus (rendszerinformatikus) Az OSI modell viszony-, megjelenítési és alkalmazási

Részletesebben

20. Tétel 1.0 Internet felépítése, OSI modell, TCP/IP modell szintjenek bemutatása, protokollok Pozsonyi ; Szemenyei

20. Tétel 1.0 Internet felépítése, OSI modell, TCP/IP modell szintjenek bemutatása, protokollok Pozsonyi ; Szemenyei Internet felépítése, OSI modell, TCP/IP modell szintjenek bemutatása, protokollok 28.Tétel Az Internet Felépítése: Megjegyzés [M1]: Ábra Az Internet egy világméretű számítógép-hálózat, amely kisebb hálózatok

Részletesebben

IBM Data Server ügyfelek telepítése

IBM Data Server ügyfelek telepítése IBM DB2 10.1 for Linux, UNIX, Windows IBM Data Server ügyfelek telepítése GC22-1152-00 IBM DB2 10.1 for Linux, UNIX, Windows IBM Data Server ügyfelek telepítése GC22-1152-00 Megjegyzés Az információk

Részletesebben

Rétegezett architektúra HTTP. A hálózatfejlesztés motorját a hálózati alkalmazások képezik. TCP/IP protokoll készlet

Rétegezett architektúra HTTP. A hálózatfejlesztés motorját a hálózati alkalmazások képezik. TCP/IP protokoll készlet HTTP Hálózat Rétegezett architektúra felhasználók Alkalmazási Web, e-mail, file transfer,... Szállítási Internet Hálózat-elérési Végponttól végpontig terjedő átvitel, Megbízható átvitel, sorrendbe állítás,

Részletesebben

A PHP nyelv alapjai. Web-Sky Consulting Kft Tóth Imre 2009

A PHP nyelv alapjai. Web-Sky Consulting Kft Tóth Imre 2009 A PHP nyelv alapjai Web-Sky Consulting Kft Tóth Imre 2009 Előadások címei 1. PHP nyelv alapjai 2. Objektumorientáltság a PHP-ben 3. A Http és a PHP kapcsolata 4. Adatbázis kezelés a PHP-ben 5. MVC alapjai

Részletesebben

A webhelyhez kötődő szoftverek architektúrája

A webhelyhez kötődő szoftverek architektúrája A webhelyhez kötődő szoftverek architektúrája A webhelyhez kötődő szoftverek architektúrája...1 A kliens-szerver funkcionalitások megoszlása...1 A böngésző mint web kliens...1 Web szerver (kiszolgáló)

Részletesebben

Internet-hőmérő alapkészlet

Internet-hőmérő alapkészlet IPThermo127 KIT Internet-hőmérő alapkészlet Ethernetre / internetre csatolható digitális hőmérő monitorozó programmal Az IPThermo Simple család tagja. A jól ismert IPThermo126 kit továbbfejlesztett utódja,

Részletesebben

TELEPÍTSÜNK GYORSAN ÉS EGYSZERŰEN SULIX PROFESSIONALT

TELEPÍTSÜNK GYORSAN ÉS EGYSZERŰEN SULIX PROFESSIONALT TELEPÍTSÜNK GYORSAN ÉS EGYSZERŰEN SULIX PROFESSIONALT Telepítési útmutató türelmetleneknek, érettségi felkészüléssel A kézikönyv elkészítésekor az ULX Kft. a lehető legnagyobb gondossággal és körültekintéssel

Részletesebben

Informatika 10. évf.

Informatika 10. évf. Informatika 10. évf. Internet és kommunikáció I. 2013. december 9. Készítette: Gráf Tímea Internet Az Internet egymással összeköttetésben álló, sokszor nem kompatibilis hálózatok összessége. 2 1 WWW World

Részletesebben

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák Java Web technológiák Bevezetés Áttekintés Model View Controller (MVC) elv Java EE Java alapú Web alkalmazások Áttekintés Model View Controller (MVC) elv Java EE Java alapú Web alkalmazások Áttekintés

Részletesebben

Mérési útmutató a Secure Shell (SSH) controll és audit című méréshez

Mérési útmutató a Secure Shell (SSH) controll és audit című méréshez Mérési útmutató a Secure Shell (SSH) controll és audit című méréshez 2016. február A mérést kidolgozta: Höltzl Péter Balabit Europe Kft. BME, CrySyS Adat- és Rendszerbiztonság Laboratórium 1. Elméleti

Részletesebben

IBM Tivoli Access Manager for WebLogic Server Felhasználóikézikönyv. 3.9-es verzió GC22-0258-00

IBM Tivoli Access Manager for WebLogic Server Felhasználóikézikönyv. 3.9-es verzió GC22-0258-00 IBM Tivoli Access Manager for WebLogic Server Felhasználóikézikönyv 3.9-es verzió GC22-0258-00 IBM Tivoli Access Manager for WebLogic Server Felhasználóikézikönyv 3.9-es verzió GC22-0258-00 Megjegyzés

Részletesebben

1. oldal, összesen: 29 oldal

1. oldal, összesen: 29 oldal 1. oldal, összesen: 29 oldal Bevezetõ AXEL PRO Nyomtatványkitöltõ Program Az AXEL PRO Nyomtatványkitöltõ egy olyan innovatív, professzionális nyomtatványkitöltõ és dokumentum-szerkesztõ program, mellyel

Részletesebben

Department of Software Engineering

Department of Software Engineering Tavasz 2016 UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED Department of Software Engineering Számítógép-hálózatok 2. gyakorlat Wireshark Bordé Sándor S z e g e d i T u d o m á n y e g y e t

Részletesebben

A JAVA FUTTATÁSAKOR ELŐFORDULÓ HIBA-

A JAVA FUTTATÁSAKOR ELŐFORDULÓ HIBA- A JAVA FUTTATÁSAKOR ELŐFORDULÓ HIBA- ÜZENETEK ÉS AZOK KIKERÜLÉSE Jelen jegyzet az ÉTDR Java platformon futtatható alkalmazásainak betöltésekor esetlegesen előugró hibaüzenetek kikerülése végett készült.

Részletesebben

DB2 Connect: DB2 Connect kiszolgálók telepítése és konfigurálása

DB2 Connect: DB2 Connect kiszolgálók telepítése és konfigurálása IBM DB2 Connect 10.1 DB2 Connect: DB2 Connect kiszolgálók telepítése és konfigurálása Frissítve: 2013. január SC22-1154-01 IBM DB2 Connect 10.1 DB2 Connect: DB2 Connect kiszolgálók telepítése és konfigurálása

Részletesebben

Tűzfal megoldások. ComNETWORX nap, 2001. I. 30. ComNETWORX Rt.

Tűzfal megoldások. ComNETWORX nap, 2001. I. 30. ComNETWORX Rt. Tűzfal megoldások ComNETORX nap, 2001. I. 30. ComNETORX Rt. N Magamról Hochenburger Róbert MCNI / MCNE MCNI = Master CNI MCNE = Master CNE CNI = Certified Novell Instructor CNE = Certified Novell Engineer

Részletesebben

SZAKDOLGOZAT. Titkó Szabolcs. Debrecen 2009.

SZAKDOLGOZAT. Titkó Szabolcs. Debrecen 2009. SZAKDOLGOZAT Titkó Szabolcs Debrecen 2009. Debreceni Egyetem Informatikai Kar Diódakatalógus a weben Témavezető: Dr Kuki Attila Egyetemi Adjunktus Készítette: Titkó Szabolcs Mérnök Informatikus Debrecen

Részletesebben

à ltalã nos elmã leti fogalmak Category Ebben a szekciã³ban az online marketinghez à s az internethez kapcsolã³dã³ Ã ltalã nos fogalmakat mutatjuk be.

à ltalã nos elmã leti fogalmak Category Ebben a szekciã³ban az online marketinghez à s az internethez kapcsolã³dã³ Ã ltalã nos fogalmakat mutatjuk be. à ltalã nos elmã leti fogalmak Category Ebben a szekciã³ban az online marketinghez à s az internethez kapcsolã³dã³ Ã ltalã nos fogalmakat mutatjuk be. Contents à ltalã nos elmã leti fogalmak 1 Blocked

Részletesebben

WorldSkills HU 2008 döntő Gyakorlati feladat

WorldSkills HU 2008 döntő Gyakorlati feladat WorldSkills HU 2008 döntő Szeged, 2008. október 18. 1 Szükségesek: Linux dokumentációk: Felhasználók kezelése SSH szerver SQUID proxy Windows dokumentációk: Rendszerfelügyelet rendszergazdáknak (pdf formátumban)

Részletesebben

Hálózati használati útmutató

Hálózati használati útmutató Hálózati használati útmutató 0 verzió HUN Tartalomjegyzék 1 Bevezető 1 Hálózati funkciók...1 Egyéb funkciók...2 2 Hálózati beállítások módosítása 3 A készülék hálózati beállításainak módosítása...3 A készülék

Részletesebben

Tarantella Secure Global Desktop Enterprise Edition

Tarantella Secure Global Desktop Enterprise Edition Tarantella Secure Global Desktop Enterprise Edition A Secure Global Desktop termékcsalád Az iparilag bizonyított szoftver termékek és szolgáltatások közé tartozó Secure Global Desktop termékcsalád biztonságos,

Részletesebben

A NÉGY BŰVÖS HÁRMAS WWW FTP SQL PHP. BRKK::Békéscsaba Linux rendszergazda képzés 2008

A NÉGY BŰVÖS HÁRMAS WWW FTP SQL PHP. BRKK::Békéscsaba Linux rendszergazda képzés 2008 A NÉGY BŰVÖS HÁRMAS WWW FTP SQL PHP BRKK::Békéscsaba Linux rendszergazda képzés 2008 Beszerzés Bő a választék, mi most a PURE-FTP Apache PHP5 MYSQL Postgree SQL rendszereket telepítjük Telepítés Hmmm mondjuk

Részletesebben

EMTP, EGY ÚJ LEVELEZÕ PROTOKOLL ÉS IMPLEMENTÁCIÓJA

EMTP, EGY ÚJ LEVELEZÕ PROTOKOLL ÉS IMPLEMENTÁCIÓJA EMTP, EGY ÚJ LEVELEZÕ PROTOKOLL ÉS IMPLEMENTÁCIÓJA Iványi Tibor, ivanyit@tigris.klte.hu Csukás Levente, csukasl@fox.klte.hu Kossuth Lajos Tudományegyetem Informatikai és Számító Központ Abstract The well

Részletesebben

11. Gyakorlat: Certificate Authority (CA), FTP site-ok

11. Gyakorlat: Certificate Authority (CA), FTP site-ok 11. Gyakorlat: Certificate Authority (CA), FTP site-ok 11.1. A CA szerver szerepkör telepítése a DC01-es szerverre 11.2. Az FTP szervíz telepítése a DC01-es szerverre 11.3. A szükséges DNS rekordok létrehozása

Részletesebben

Hálózati használati útmutató

Hálózati használati útmutató Hálózati használati útmutató Több protokollt támogató, beépített Ethernet nyomtatókiszolgáló és vezeték nélküli nyomtatókiszolgáló Ez a Hálózati használati útmutató hasznos információt nyújt a Brother

Részletesebben

Ne lépjen ide be senki, aki nem ismeri a geometriát (Platón, 427-347 i.e.)

Ne lépjen ide be senki, aki nem ismeri a geometriát (Platón, 427-347 i.e.) Ne lépjen ide be senki, aki nem ismeri a geometriát (Platón, 427-347 i.e.) RAFFAELLO: Athéni iskola, Platón és Arisztotelész 1 Neumann János (1903 1957) Neumann elvek: -teljesen elektronikus számítógép

Részletesebben

Ûrlapkitöltés használata során megjegyzi az oldalakhoz tartozó beviteli mezõk értékeit, mellyel nagyban meggyorsítja

Ûrlapkitöltés használata során megjegyzi az oldalakhoz tartozó beviteli mezõk értékeit, mellyel nagyban meggyorsítja A hódító Konqueror A Konqueror egy webböngészõ, egy fájlkezelõ, egy komplex megjelenítõ, egy teljes FTP-kliens és egy teljesen személyre szabható program egyben. AKonqueror név egy a korábbi böngészõgenerációk

Részletesebben

GuideReg demó program telepítési útmutató

GuideReg demó program telepítési útmutató GuideReg demó program telepítési útmutató GuideSys Kft. 2016. 1. O l d a l Tartalomjegyzék 1. Bevezetés... 3 2. Telepítési útmutató... 4 2.1 Telepítési környezet(ek)... 4 2.2 A telepítő program letöltése...

Részletesebben

Csoport neve: Kisiskolások Feladat sorszáma: 2. Feladat címe: Oktatási intézmény honlapja, oktatási naplóval. E-Project.

Csoport neve: Kisiskolások Feladat sorszáma: 2. Feladat címe: Oktatási intézmény honlapja, oktatási naplóval. E-Project. Csoport neve: Kisiskolások Feladat sorszáma: 2. Feladat címe: Oktatási intézmény honlapja, oktatási naplóval E-Project Gyakorlatvezető: Krizsán Zoltán Csoport tagok: Koncz Gergely WP21 info@teng.hu Lajtner-Gerán

Részletesebben

Informatikai Tesztek Katalógus

Informatikai Tesztek Katalógus Informatikai Tesztek Katalógus 2019 SHL és/vagy partnerei. Minden jog fenntartva Informatikai tesztek katalógusa Az SHL informatikai tesztek katalógusa számítástechnikai tudást mérő teszteket és megoldásokat

Részletesebben

3. előadás. A TCP/IP modell jelentősége

3. előadás. A TCP/IP modell jelentősége 3. előadás A TCP/IP modell. Az ISO/OSI és a TCP/IP modell összevetése. Alapvető fogalmak A TCP/IP modell jelentősége Habár az OSI modell általánosan elfogadottá vált, az Internet nyílt szabványa történeti

Részletesebben

Bevezetés. A WebAccess használatának bemutatása előtt néhány új funkció felsorolása következik:

Bevezetés. A WebAccess használatának bemutatása előtt néhány új funkció felsorolása következik: Bevezetés Leveleink, naptárunk, stb. megtekintése bármely gépen egy egyszerű webböngésző (Mozilla, Explorer) segítésével is lehetséges. GroupWise rendszernek ezt a megjelenési formáját GroupWise WebAccessnek

Részletesebben

A fenti meghatározást kiegészítendõ, a könyv során az alábbiakat boncolgatjuk, amelyek mindegyike egy-egy, az SSH által biztosított megoldás:

A fenti meghatározást kiegészítendõ, a könyv során az alábbiakat boncolgatjuk, amelyek mindegyike egy-egy, az SSH által biztosított megoldás: Bevezetés A Secure Shell (SSH, biztonságos héj ) egy segédprogram, amelyet számos módon leírhatunk. Mondhatjuk, hogy protokoll, hogy titkosító eszköz, hogy ügyfél kiszolgáló alkalmazás, vagy hogy parancsfelület

Részletesebben

Gate Control okostelefon-alkalmazás

Gate Control okostelefon-alkalmazás Gate Control okostelefon-alkalmazás GSM Gate Control Pro 20/1000 modulokhoz HASZNÁLATI ÚTMUTATÓ v1.1.1.0 és újabb alkalmazásverzióhoz Dokumentumverzió: v1.5 2016.05.18 Termék rövid leírása A GSM Gate Control

Részletesebben

fájl-szerver (file server) Az a számítógép a hálózatban, amelyen a távoli felhasználók (kliensek) adatállományait tárolják.

fájl-szerver (file server) Az a számítógép a hálózatban, amelyen a távoli felhasználók (kliensek) adatállományait tárolják. I n t e r n e t k i f e j e z é s e k adat (data) Valamilyen különleges célból, gyakran speciális alakban elıkészített információ. Számítógépen tárolható és feldolgozható számok és betők. adatbázis (database)

Részletesebben

Informatika szintmérő-érettségi tételek 2015. február

Informatika szintmérő-érettségi tételek 2015. február 1.oldal (18) Rendszer karbantartása Rendszerkarbantartás fogalma: Minden operációs rendszer tartalmaz eszközöket a hardver- és a szoftverkomponensek karbantartására. Idesoroljuk a hardveralkotók szoftveres

Részletesebben

A Horde keretrendszer és az IMP Webmail rendszer

A Horde keretrendszer és az IMP Webmail rendszer A Horde keretrendszer és az IMP Webmail rendszer Bizonyára sok rendszergazda belefutott már a feladatba, hogy egy levelezõszerver karbantartását vegye a nyakába. Ilyenkor sokszor elõfordul, hogy bár a

Részletesebben

15. Tétel. Extran et olyan biztonsá gos, privát, intranet hálózat amely internet protokol lok segítség ével teszi lehetővé a

15. Tétel. Extran et olyan biztonsá gos, privát, intranet hálózat amely internet protokol lok segítség ével teszi lehetővé a 15. Tétel Cégénél belső intranet kiépítését tervezik. Feladata, hogy ismertesse a döntéshozók számára a különböző megvalósítható szolgáltatásokat, azok előnyeit és hátrányait elemezve. Térjen ki a http,

Részletesebben

Csatlakozás az IBM i rendszerhez IBM i Access for Windows: Telepítés és beállítás

Csatlakozás az IBM i rendszerhez IBM i Access for Windows: Telepítés és beállítás IBM i Csatlakozás az IBM i rendszerhez IBM i Access for Windows: Telepítés és beállítás 7.1 IBM i Csatlakozás az IBM i rendszerhez IBM i Access for Windows: Telepítés és beállítás 7.1 Megjegyzés A kiadvány

Részletesebben

Az MS Access adatbázis-kezelő program

Az MS Access adatbázis-kezelő program Az adatbázis-kezelő program A tananyagban az alapfogalmak és a tervezési megoldások megismerése után a gyakorlatban is elkészítünk (számítógépes) adatbázisokat. A számítógépes adatbázisok létrehozásához,

Részletesebben

Netscape Messenger levelező kliens beállítása POP3 típusú levelezéshez

Netscape Messenger levelező kliens beállítása POP3 típusú levelezéshez Netscape Messenger a Netscape Navigatorral egybeépített levelezőprogram. Indítása lehetséges a Navigátoron beülről gombbal, vagy a Start menü mellől, esetleg a Start menün belülről a Netscape 7.2 almenüben

Részletesebben

Fábián Zoltán Hálózatok elmélet

Fábián Zoltán Hálózatok elmélet Fábián Zoltán Hálózatok elmélet Több, mint levelező szerver Címlisták Határidőnaplók Több féle üzenetküldési rendszer (Mail, hang, azonnali, FAX ) Megosztott erőforrások Protokollok: POP3, IMAP, SMTP,

Részletesebben

{simplecaddy code=1005}

{simplecaddy code=1005} {simplecaddy code=1005} Könyvünk célja, hogy az Internetről és annak használatáról olyan általános ismeretanyagot adjon, melynek segítségével bárki tudja majd használni a hálózatot és szolgáltatásait.

Részletesebben

TELEPÍTSÜNK GYORSAN ÉS EGYSZERŰEN SULIX PROFESSIONALT

TELEPÍTSÜNK GYORSAN ÉS EGYSZERŰEN SULIX PROFESSIONALT TELEPÍTSÜNK GYORSAN ÉS EGYSZERŰEN SULIX PROFESSIONALT Telepítési útmutató türelmetleneknek, érettségi felkészüléssel A kézikönyv elkészítésekor az ULX Kft. a lehető legnagyobb gondossággal és körültekintéssel

Részletesebben

Nemzeti Fejlesztési és Gazdasági Minisztérium támogatásával megvalósuló KKC-2008-V-08-08-101 számú projekt B2CR ONLINE KOMMUNIKÁCIÓ

Nemzeti Fejlesztési és Gazdasági Minisztérium támogatásával megvalósuló KKC-2008-V-08-08-101 számú projekt B2CR ONLINE KOMMUNIKÁCIÓ ONLINE KOMMUNIKÁCIÓ azaz, hogyan használjuk fel az internet lehetőségeit cégünk sikerei érdekében. MarkCon előadó: Vendler Balázs, ügyvezető TARTALOM (1) Az internetről általában (2) Webes megjelenések

Részletesebben

BARANGOLÁS AZ E-KÖNYVEK BIRODALMÁBAN Milyen legyen az elektonikus könyv?

BARANGOLÁS AZ E-KÖNYVEK BIRODALMÁBAN Milyen legyen az elektonikus könyv? BARANGOLÁS AZ E-KÖNYVEK BIRODALMÁBAN Milyen legyen az elektonikus könyv? Készítették: Névery Tibor és Széll Ildikó PPKE I. évf. kiadói szerkesztő hallgatók, közösen 1 BEVEZETŐ Az elektronikus könyv valamilyen

Részletesebben

DocBook útmutató. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.hu

DocBook útmutató. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.hu DocBook útmutató Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.hu Mi a DocBook? (1) XML formátum műszaki dokumentációhoz Eredetileg hardver és szoftver dokumentáció készítéséhez

Részletesebben

Információ és kommunikáció

Információ és kommunikáció Információ és kommunikáció Tanmenet Információ és kommunikáció TANMENET- Információ és kommunikáció Témakörök Javasolt óraszám 1. Hálózati alapismeretek 20 perc 2. Az internet jellemzői 25 perc 3. Szolgáltatások

Részletesebben

URL-LEL ADOTT OBJEKTUM LETÖLTÉSE (1) URL-LEL ADOTT OBJEKTUM LETÖLTÉSE

URL-LEL ADOTT OBJEKTUM LETÖLTÉSE (1) URL-LEL ADOTT OBJEKTUM LETÖLTÉSE Programozás III HÁLÓZATKEZELÉS A hálózatkezeléshez használatos java csomag: java. net Hol találkoztunk már vele? Pl.: URL cim = this.getclass().getresource("/zene/valami_zene.wav"); De pl. adott URL-ről

Részletesebben

A Citadel csoportmunka-kiszolgáló

A Citadel csoportmunka-kiszolgáló A Citadel csoportmunka-kiszolgáló Microsoft Exchange, had mutassam be Önnek az utódját... Elérkezett az ideje, hogy fontolóra vegyük az átállást a drága, magas költséggel fenntartható Windows rendszerrõl

Részletesebben

Sokan nehezen tudják elképzelni, hogy hogyan és hol tudják az e-mailjeiket megkapni.

Sokan nehezen tudják elképzelni, hogy hogyan és hol tudják az e-mailjeiket megkapni. E-mail címeink beállítása a saját gépünkön: Sokan nehezen tudják elképzelni, hogy hogyan és hol tudják az e-mailjeiket megkapni. Forrás: promox Saját e-mail címünket be lehet bármelyik gépen állítani,

Részletesebben

FELHASZNÁLÓI KÉZIKÖNYV

FELHASZNÁLÓI KÉZIKÖNYV FELHASZNÁLÓI KÉZIKÖNYV srftp v2.1.4 A SoftReal Automatizált Fájl Átvitele Ezen dokumentumban szereplő információk külön értesítés nélkül változhatnak, és a SoftReal Kft. részéről semmilyen kötelezettséget

Részletesebben

Debreceni Egyetem Informatika Kar

Debreceni Egyetem Informatika Kar Debreceni Egyetem Informatika Kar Webes kerékpárkölcsönző implementálása Témavezető: Mecsei Zoltán Pál Egyetemi Tanársegéd Készítette: Komlósi Dávid Gazdaságinformatikus Debrecen, 2010 1 Tartalomjegyzék

Részletesebben

Az Egálnet Honlapvarázsló használati útmutatója

Az Egálnet Honlapvarázsló használati útmutatója Az Egálnet Honlapvarázsló használati útmutatója Az Egálnet Honlapvarázsló használati útmutatója Tartalomjegyzék: Tartalomjegyzék:... 1 1. Első lépések... 2 2. Honlap szerkesztése I... 2 2.1. Tartalmi területek,

Részletesebben

Generated by KnowledgeBuilder - http://www.activecampaign.com/kb. All Articles in All Categories

Generated by KnowledgeBuilder - http://www.activecampaign.com/kb. All Articles in All Categories All Articles in All Categories Contents Ticketing rendszer 1 Ã ltalã nos elmã leti fogalmak 1 Blocked E-mail (megállított E-mail üzenet) 1 edm 1 FREQUENCY (kiküldési gyakoriság) 1 HIT (Találat) 1 Kemény

Részletesebben

A Thunderbird levelezőkliens telepítése és beállítása http://sugo.ubuntu.hu/community-doc/hardy/universe/apps/thunderbird.html

A Thunderbird levelezőkliens telepítése és beállítása http://sugo.ubuntu.hu/community-doc/hardy/universe/apps/thunderbird.html A Thunderbird nagyon népszerű a levelező programok között, használata elterjedt a különböző operációs rendszereken, így komoly biztonságérzetet adhat az Ubuntura frissen áttért felhasználóknak. És ez jó

Részletesebben

Szervlet-JSP együttműködés

Szervlet-JSP együttműködés Java programozási nyelv 2007-2008/ősz 10. óra Szervlet-JSP együttműködés Kérés továbbítás technikái legradi.gabor@nik.bmf.hu szenasi.sandor@nik.bmf.hu Szervlet-JSP együttműködés Témakörök Osztálykönyvtár

Részletesebben

TÉRINFORMATIKA AZ INTERNETEN

TÉRINFORMATIKA AZ INTERNETEN Térinformatika tanszék * Keresztmetszet 2004. Nyugat-Magyarországi Egyetem, Geoinformatikai Főiskolai Kar, Székesfehérvár. TÉRINFORMATIKA AZ INTERNETEN Bódis Gábor Sopron és Környéke Víz- és Csatornamű

Részletesebben

Web programoz as 2009 2010

Web programoz as 2009 2010 Web programozás 2009 2010 Áttekintés A web rövid története Kliens szerver architektúra Néhány alapfogalom Kliens- illetve szerver oldali technológiák áttekintése Áttekintés: miről lesz szó (kurzus/labor/vizsga)

Részletesebben

1. AZ AUDITPRO RENDSZER ÁTTEKINTÉSE... 2 2. ALAPVETÕ TELEPÍTÉS... 12 3. AZ AUDITPRO TELEPÍTÉSE ÉS FELÜGYELETE HÁLÓZATOKON... 14 5. EREDMÉNYEK...

1. AZ AUDITPRO RENDSZER ÁTTEKINTÉSE... 2 2. ALAPVETÕ TELEPÍTÉS... 12 3. AZ AUDITPRO TELEPÍTÉSE ÉS FELÜGYELETE HÁLÓZATOKON... 14 5. EREDMÉNYEK... RENDSZERGAZDÁK KÉZIKÖNYVE A telepítési adathordozó a termék cseh és angol nyelvû verzióját is tartalmazza. A www.auditpro.biz weboldalon található, öt számítógéphez használható próbaverzióból is telepítheti

Részletesebben

55 481 01 0000 00 00 Általános rendszergazda Általános rendszergazda

55 481 01 0000 00 00 Általános rendszergazda Általános rendszergazda Az Országos Képzési Jegyzékről és az Országos Képzési Jegyzékbe történő felvétel és törlés eljárási rendjéről szóló 133/2010. (IV. 22.) Korm. rendelet alapján. Szakképesítés, szakképesítés-elágazás, rész-szakképesítés,

Részletesebben

Click to edit headline title style

Click to edit headline title style O365 AZURE WEBTÁRHELY IP HANG BÉRTELEFONKÖZPONT A Printer-fair Kft. FELHŐ szolgáltatásai Trengerné Dudics Valéria Partner találkozó 2016 A Printer-fair Kft. Által kínált szolgáltatások O365 Azure Webtárhely

Részletesebben

Novell Nterprise Branch Office: a távoli iroda felügyeletének leegyszerűsítése

Novell Nterprise Branch Office: a távoli iroda felügyeletének leegyszerűsítése Novell Nterprise Branch Office: a távoli iroda felügyeletének leegyszerűsítése termékleírás www.novell.hu Bevezetés A mai vállalatok gyakran tartanak fenn irodákat az ország és a világ különböző pontjain.

Részletesebben

Minden jog fenntartva, beleértve bárminemű sokszorosítás, másolás és közlés jogát is.

Minden jog fenntartva, beleértve bárminemű sokszorosítás, másolás és közlés jogát is. 2 Minden jog fenntartva, beleértve bárminemű sokszorosítás, másolás és közlés jogát is. Kiadja a Mercator Stúdió Felelős kiadó a Mercator Stúdió vezetője Lektor: Gál Veronika Szerkesztő: Pétery István

Részletesebben

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése Készítette: Simon Nándor Integrált fejlesztő környezet Egységes (vizuális) fejlesztési lehetőségek Bőséges segítség (help) Hibakeresési, nyomkövetési

Részletesebben

HP beágyazott webszerver

HP beágyazott webszerver HP beágyazott webszerver Felhasználói kézikönyv Szerzői jogok és garancia 2007 Copyright Hewlett-Packard Development Company, L.P. Előzetes írásbeli engedély nélküli reprodukálása, adaptálása vagy fordítása

Részletesebben

A NÉGY BŰVÖS HÁRMAS WWW FTP SQL PHP. BRKK::Békéscsaba Linux rendszergazda képzés 2008

A NÉGY BŰVÖS HÁRMAS WWW FTP SQL PHP. BRKK::Békéscsaba Linux rendszergazda képzés 2008 A NÉGY BŰVÖS HÁRMAS WWW FTP SQL PHP BRKK::Békéscsaba Linux rendszergazda képzés 2008 Beszerzés Bő a választék, mi most a PRO-FTP Apache PHP5 MYSQL Postgree SQL rendszereket telepítjük Telepítés Hmmm mondjuk

Részletesebben

Karbantartás. Az ESZR Karbantartás menüjébentudjuk elvégezni az alábbiakat:

Karbantartás. Az ESZR Karbantartás menüjébentudjuk elvégezni az alábbiakat: Karbantartás Az ESZR Karbantartás menüjébentudjuk elvégezni az alábbiakat: Jelszó módosítása: A felhasználói jelszavunkat módosíthatjuk ebben a menüpontban, a régi jelszavunk megadása után. Általánosan

Részletesebben

Tartalom. Történeti áttekintés. Történeti áttekintés 2011.03.23. Architektúra DCOM vs CORBA. Szoftvertechnológia

Tartalom. Történeti áttekintés. Történeti áttekintés 2011.03.23. Architektúra DCOM vs CORBA. Szoftvertechnológia Tartalom D Szoftvertechnológia előadás Történeti áttekintés Architektúra D vs CORBA 2 Történeti áttekintés 1987 Dynamic Data Exchange (DDE) Windows 2.0-ban Windows alkalmazások közötti adatcsere Ma is

Részletesebben

NetIQ imanager Telepítési útmutató. 2016. január

NetIQ imanager Telepítési útmutató. 2016. január NetIQ imanager Telepítési útmutató 2016. január Jogi közlemény A jogi megjegyzésekkel, védjegyekkel, jogi nyilatkozatokkal, garanciákkal, szabadalmakra vonatkozó szabályokkal, FIPSkompatibilitással, exportálási

Részletesebben

NetWare 6 technikai áttekintés 2. rész

NetWare 6 technikai áttekintés 2. rész NetWare 6 technikai áttekintés 2. rész A non-stop rendelkezésre állás megvalósítása Novell Cluster Services, NetWare Remote Management, Tárolási Szolgáltatások Az operációs rendszer továbbfejlesztései

Részletesebben

DWL-G520 AirPlus Xtreme G 2,4GHz Vezeték nélküli PCI Adapter

DWL-G520 AirPlus Xtreme G 2,4GHz Vezeték nélküli PCI Adapter Ez a termék a következő operációs rendszereket támogatja: Windows XP, Windows 2000, Windows Me, Windows 98SE DWL-G520 AirPlus Xtreme G 2,4GHz Vezeték nélküli PCI Adapter Előfeltételek Legalább az alábbiakkal

Részletesebben

Windows hálózatok. IP cím. Hálózati kapcsolatok nyomonkövetése. < Windows

Windows hálózatok. IP cím. Hálózati kapcsolatok nyomonkövetése. < Windows 2015/11/15 18:26 1/10 Windows hálózatok < Windows Windows hálózatok Szerző: Sallai András Copyright Sallai András, 2009, 2011, 2012, 2014, 2015 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu

Részletesebben

Hálózati útmutató. A biztonságos és megfelelõ kezelés érdekében használat elõtt olvassa el az Általános Beállítási Útmutató biztonsági információit.

Hálózati útmutató. A biztonságos és megfelelõ kezelés érdekében használat elõtt olvassa el az Általános Beállítási Útmutató biztonsági információit. Hálózati útmutató 1 2 3 4 5 6 7 8 9 Bevezetés A hálózati kábel csatlakoztatása a hálózathoz A készülék beállítása a hálózaton A Windows konfigurálása A nyomtató funkció használata A SmartNetMonitor for

Részletesebben

átvitt bitek számával jellemezhetjük. Ezt bit/s-ban mérjük (bps) vagy ennek többszöröseiben (kbps, Mbps).

átvitt bitek számával jellemezhetjük. Ezt bit/s-ban mérjük (bps) vagy ennek többszöröseiben (kbps, Mbps). Adatátviteli sebesség: Digitális hálózatokat az átviteli sebességükkel az idıegység alatt átvitt bitek számával jellemezhetjük. Ezt bit/s-ban mérjük (bps) vagy ennek többszöröseiben (kbps, Mbps). Sávszélesség:

Részletesebben

Documentation. OTRS Business Solution 5 kézikönyv

Documentation. OTRS Business Solution 5 kézikönyv Documentation OTRS Business Solution 5 kézikönyv Build Date: 2015-10-26 OTRS Business Solution 5 kézikönyv Szerzői jog 2015 OTRS AG Ez a mű az OTRS AG szerzői joga alatt áll. Lemásolhatja részben vagy

Részletesebben

WebSphere Adapters. 6. változat 2. alváltozat. WebSphere Adapter for SAP Software felhasználói kézikönyv 6. változat 2. kiadás

WebSphere Adapters. 6. változat 2. alváltozat. WebSphere Adapter for SAP Software felhasználói kézikönyv 6. változat 2. kiadás WebSphere Adapters 6. változat 2. alváltozat WebSphere Adapter for SAP Software felhasználói kézikönyv 6. változat 2. kiadás Megjegyzés Az információk és a tárgyalt termék használatba vétele előtt feltétlenül

Részletesebben

Book Template Title. Author Last Name, Author First Name

Book Template Title. Author Last Name, Author First Name Book Template Title Author Last Name, Author First Name Book Template Title Author Last Name, Author First Name I. rész - Szoftver technológia 1. fejezet - Esettanulmány Bevezetés Az alkalmazás fejlesztésére

Részletesebben

Osztott alkalmazások fejlesztési technológiái Áttekintés

Osztott alkalmazások fejlesztési technológiái Áttekintés Osztott alkalmazások fejlesztési technológiái Áttekintés Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Történelem - a kezdetek 2 Mainframe-ek és terminálok Minden a központi gépen fut A

Részletesebben

Novell Teaming 2.1. 1 A termék áttekintése. Novell. 2010. február 16.

Novell Teaming 2.1. 1 A termék áttekintése. Novell. 2010. február 16. Novell Teaming 2.1 2010. február 16. Novell 1 A termék áttekintése A Novell Teaming 2.1 verzió számos továbbfejlesztést tartalmaz a Teaming 2.0 verzióhoz képest mind a Teaming felhasználói, mind rendszergazdái

Részletesebben

Cisco Unity Connection Mini Beérkezett üzenetek Els lépések (10.x kiadás)

Cisco Unity Connection Mini Beérkezett üzenetek Els lépések (10.x kiadás) Az els lépések Cisco Unity Connection Mini Beérkezett üzenetek Els lépések (10.x kiadás) Cisco Unity Connection Mini Webes beérkezett üzenetek (10.x kiadás) 2 Általános információk a Cisco Unity Connection

Részletesebben

Mérési útmutató az Access Control (ACC) cím méréshez

Mérési útmutató az Access Control (ACC) cím méréshez Mérési útmutató az Access Control (ACC) cím méréshez 2016. április 11. A mérést kidolgozta: Bencsáth Boldizsár Holczer Tamás Papp Dorottya BME, CrySyS Adat- és Rendszerbiztonság Laboratórium Tartalomjegyzék

Részletesebben

Szerver oldali technológiák Szerver oldali script nyelvek PHP

Szerver oldali technológiák Szerver oldali script nyelvek PHP Szerver oldali technológiák Szerver oldali script nyelvek Áttekintés Szerver oldali technológiák Szerver oldali script nyelvek Formkezelés Állománykezelés Cookie (süti) Szessziókövetés MySQL adatbázishozzáférés

Részletesebben

IBM i. Szerviz és támogatás 7.1

IBM i. Szerviz és támogatás 7.1 IBM i Szerviz és támogatás 7.1 IBM i Szerviz és támogatás 7.1 Megjegyzés A kiadvány és a tárgyalt termék használatba vétele előtt olvassa el a Nyilatkozatok, oldalszám: 111 szakasz tájékoztatását. Ez

Részletesebben

Dr. Pétery Kristóf: Excel 2007 feladatok és megoldások 2.

Dr. Pétery Kristóf: Excel 2007 feladatok és megoldások 2. 2 Minden jog fenntartva, beleértve bárminemű sokszorosítás, másolás és közlés jogát is. Kiadja a Mercator Stúdió Felelős kiadó a Mercator Stúdió vezetője Lektor: Gál Veronika Szerkesztő: Pétery István

Részletesebben

Kaspersky Internet Security Felhasználói útmutató

Kaspersky Internet Security Felhasználói útmutató Kaspersky Internet Security Felhasználói útmutató ALKALMAZÁS VERZIÓJA: 16.0 Tisztelt Felhasználó! Köszönjük, hogy termékünket választotta. Reméljük, hogy ez a dokumentum segít a munkájában, és választ

Részletesebben

HÁLÓZATI HASZNÁLATI ÚTMUTATÓ

HÁLÓZATI HASZNÁLATI ÚTMUTATÓ Több protokollal működő beépített Ethernet többfunkciós nyomtatókiszolgáló HÁLÓZATI HASZNÁLATI ÚTMUTATÓ MFC-7440N DCP-7045N Kérjük olvassa el ezt az útmutatót figyelmesen mielőtt a készüléket hálózatra

Részletesebben

Központi proxy szolgáltatás

Központi proxy szolgáltatás Központi proxy szolgáltatás Az Informatikai Igazgatóság minden aktív és volt egyetemi hallgató és munkaviszonnyal rendelkezõ egyetemi dolgozó részére úgynevezett proxy szolgáltatást biztosít. A szolgáltatás

Részletesebben