1 / 35

WEB Technológiák

WEB Technológiák. Dr. Pance Miklós – Kolcza Gábor Miskolc i Egyetem. CGI (Common Gateway Interface). Általános, platform független interface a WEB server és az általa indított külső programok között különböző programozási nyelven meg lehet valósítani

trygg
Download Presentation

WEB Technológiák

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. WEB Technológiák Dr. Pance Miklós–Kolcza Gábor Miskolci Egyetem

  2. CGI (Common Gateway Interface) • Általános, platform független interface a WEB server és az általa indított külső programok között • különböző programozási nyelven meg lehet valósítani • Alapvetően két csoportba lehet ezeket sorolni: • Fordított (compiled) nyelvek; bináris, futtatható; például Pascal és C (MFC –nél Consol Application –ként kell fordítani, kiterjesztése .cgi) • Interpretált nyelvek (a program futási időben dolgozódik fel) Például Perl, PHP

  3. Paraméterátadási módszerek •  Mielőtt a web-szerver elküldi az adatokat, URL kódolást hajt végre rajtuk és szabványos formátumra alakítja. • A form method paraméterénél lehet meghatározni az átadási módszert. Az alapértelmezett a GET módszer • GET: ebben az esetben az átadásra kerülő szöveges adat a QUERY_STRING-be kerül. Ez a string a cím mezőben is megjelenik, hozzáfűzve az URL-hez. Hátránya, hogy az átadott paraméterek láthatók lesznek. • POST: A web-szerver ebben az esetben is URL kódolást hajt végre az adatokon. Ebben az esetben a http-szerver nem állítja elő vagy üresen hagyja a QUERY_STRING környezeti változót. Az adatokat ebben a CGI program szabványos bemeneti csatornájára küldi. Az eredeti URL tehát nemmódosul.

  4. Környezeti változók •  REQUEST_METHOD: a kommunikáció során használ adatátviteli módot adja meg. ( POST, GET) • QUERY_STRING: GET metódusnál a CGI számára átadott paraméterlista URL-kódolt formában. • CONTENT_LENGTH: a szabványos input csatornán átadott adatmennyiség bájtokban. Post metódus esetén az átadott paraméterlista hossza. • REMOTE_ADDR: a kérést küldő kliens gép IP címe.

  5. Paraméterek kódolása •  Mivel a QUERY_STRING nem tartalmazhat szóköz karaktert, az alábbi karaktereknek kitüntetett szerepük van: &, %, = • A speciális jeleket, pedig egy hexadacimális szám reprezentálja • A paraméterek név=érték alakban kerülnek felsorolásra, „&” jel választja el őket egymástól • Szóköz helyett „+” jel; • <a href="alap_borospince_lista.php?id=1"> link</a>

  6. CGI programozás C-ben • Előnyös ha: • Fontos a biztonság • Nagy a terhelés több példányban fut a program, mivel ekkor is stabil, • Root jogosultságot igénylő szerver erőforrásokhoz kell hozzáférni • Fontos a sebesség • Linux alatt: gcc –o proba.cgi proba.c • Apache/cgi-bin/*.cgi • Content-type vezérlőszó • Mivel a böngésző különböző típusú fájlok megjelenítésére képes, ezért meg kell adni, hogy az adat, amit kap milyen formátumú. • printf(”Content-type: text/html\n\n”);

  7. Példa 2: • HTML fájl • <html><head> <title>Form</title> </head><body><form name="form" action="http://localhost/cgi-bin/proba.cgi" method="GET" >Név: <input type=text name="szoveg" size=20 maxlength=30><br><br> <input type=submit name submitbutton value=" Mehet "></form></body></html> • C program • #include "stdafx.h" • #include <stdio.h> • #include <stdlib.h> • #include <string.h>  • main() • { • printf("Content-type: text/html\n\n"); • printf("<h3>Megadott név:</h3>\n"); • printf("<br><br>"); • printf ("%s",getenv("QUERY_STRING"));  • return 0; • }

  8. PHP • Interpretált nyelv (a program futási időben dolgozódik fel) Perl, PHP • Szerver oldali script nyelv • Interpretált nyelv (a program futási időben dolgozódik fel) • .php kiterjesztésű fájl legyen • a PHP kódot a • <? PHP kód ?> • <?php PHP kód ?> • <% PHP kód %>

  9. PHP példa 1 • <html> • <body bgcolor=green> • <? • print ("Hello világ!"); • ?> • </body> • </html>

  10. PHP példa 2 • <? • print "<body bgcolor=yellow>\n"; • print "Hello világ!\n"; • print "</body>"; • ?>

  11. phpinfo() • PHP-vel és Apache-csal kapcsolatos információk: • Verziószámok • konfigurációs beállításokat • átadott környezeti változót) • <? • phpinfo(); • ?>

  12. PHP változók I • Kommentek • „#”, „//” egysoros megjegyzés • „/*megjegyzés*/” többsoros megjegyzés • Változók • a változók kezelése nagyon rugalmas (a skalár változók többféle típust tartalmazhatnak, ezeket a program használatuk során automatikusan a megfelelő alakra konvertálja) • a változókat a „$” jel vezeti be és utána következik az azonosító név • adattípusok: integer, double, string, boolean, object, array • adattípus lekérdező függvények: gettype(változó) print(gettype($tomb)); • settype(változó, típus)

  13. PHP változók II • Stringek • ” vagy ’ jel között adhatjuk meg őket • ” idézőjelek között a változó kiértékelése megtörténik • ’ idézőjelek között a változó kiértékelése nem történik meg • mint shell scriptben • a sztringeket a „.”-tal lehet egymáshoz fűzni

  14. PHP változók III • Idézőjelek: • ” $a ” • ’ $a ’ • print ‘<input type=”text” value=” ‘.$a. ‘ ”>‘;

  15. Tömbök I • a tömbelemekre is érvényes a típuskonverzió, tehát különböző típusú elemeket tartalmazhat; • értékadás többféleképpen történhet: • $tomb[0]=”fgah”; • $tomb[1]=”zwzjk”; • $tomb[2]=”uzrw”; • $tomb[]=”fgah”; • $tomb[]=”zwzjk”; • $tomb[]=”uzrw”;

  16. Tömb példa • <? • $tomb1 = array("alma","körte","citrom","narancs"); //tömb feltöltése • $tomb2 = array(1,2,3,4,5); • print $tomb1[2]; • print "<br><br>"; • print "A tomb1 hossza: "; • print (count($tomb1)); //tömb elemeinek száma • print "<br><br>"; • $tomb=array_merge($tomb1,$tomb2); //két tömb egyesítése • print "<h3>Az összefűzött tömb elemei: </h3>"; • foreach ($tomb as $ertek) • { • print "$ertek<br>"; • }

  17. Rendszer által definiált változók phpinfo() • $QUERY_STRING : a GET metódusnál megismert környezeti változó • $HTTP_GET_VARS[] : a GET metódussal átadott paramétereket tartalmazó asszociatív tömb • $HTTP_POST_VARS[] : a POST metódussal átadott paramétereket tartalmazó asszociatív tömb • $GLOBALS[] : asszociatív tömb, segítségével bármelyik globális változót elérhetjük • $PHP_AUTH_USER : jelszavas védelem esetén a felhasználó által begépelt felhasználónév • $PHP_AUTH_PW : jelszavas védelem esetén a felhasználó által begépelt jelszó • $REMOTE_ADDR : a kliens gép IP címe

  18. Vezérlési szerkezetek I • if - then • $x=5;$y=7;if ($x<$y) print $x." kisebb, mint ".$y;elseif ($x>$y) print $x." nagyobb, mint ".$y;else print "A két szám egyenlő";

  19. Vezérlési szerkezetek II • break, continue • a következő ciklusszervező utasításoknál használhatjuk a break és continue vezérlőket • break – megszakítja az aktuális blokkot és kilép belőle • continue – a ciklus hátralévő részét átugorja és a következő iterációt indítja

  20. Vezérlési szerkezetek III • while • <?$i=1;while ($i<=10) { print "$i <br>"; $i++;}?>

  21. Vezérlési szerkezetek IV • dowhile • <?$i=1;do { print "$i <br>"; $i++;} while ($i<=10);?>

  22. Vezérlési szerkezetek V • for • <?for($i=1;$i<=10;$i++) { print "$i "; $x=$i*$i; print " négyzete: $x <br><br>";}?>

  23. Vezérlési szerkezetek VI • <?$asszociativ["Ferrari"]="Massa";$asszociativ[" Ferrari "]="Raikkonen";$asszociativ[" McLaren "]="Alonso";foreach ($asszociativ as $key=>$value) { print "$key : $value <br>"; }?>

  24. Vezérlési szerkezetek VII • <?$a=2;switch ($a) { case 0: print "Nulla"; break; case 1: print "Egy"; break; case 2: print "Kettő"; break; default: print "A szám nagyobb mint kettő vagy nem szám."; break; }?>

  25. Függvények I • A függvények a forrásállományban bárhol elhelyezkedhetnek • Létrehozás: • function függvénynév($p1, $p2, …) { • törzs; • return kifejezés; • } • Meghívás • függvénynév(kif1, kif2, …); • A függvény nevét dinamikusan is meg lehet adni: • $v=”függvénynév”; • $v(2);

  26. Függvények II • <?function hello() { print "HELLO VILAG!";}hello(); //kiírja, hogy HELLOfunction kiir($s) { print $s; }print "<br><br><br>";kiir("hello"); //kiírja azt a szöveget, amit paraméterként átadunk print(novel(5)); $n="novel";print($n(4));?><?function novel($x) { return $x+1;}?>

  27. PHP változók hatóköre • a függvényben használt változók alapesetben lokálisak; • a normál php kódban (nem fgv-en belül) létrehozott változók alapesetben nem láthatók a függvényeken belül; • global kulcsszó hatására elérhetővé válik a függvényen kívül, a függvényen belüli változó; • static kulcsszó hatására megőrződik az érték a függvényből való kilépés után

  28. Állományok használata I • állományok létrehozása: touch(”állománynév”); • állomány törlése: unlink (”állománynév”); • állomány nyitása írásra(w), olvasásra(r), hozzáfűzésre(a) • $f=fopen(”állománynév”, ”mód”); • állomány zárása: fclose($f); • állomány zárolása: flock($f, mód); • Módok: • 1 – megosztott • 2 – kizárás • 3 – felszabadítás

  29. Állományok használata II • állomány olvasása • fgets($f, méret); • fread( $f, méret); • állomány írása • fputs($f, ”szöveg”); //hozzáfűzésnél • fwrite($f, ”szöveg”);

  30. Állományok használata III • <html><head> <title>Untitled</title> </head><body><?$fnev="proba.txt";$f = fopen($fnev,"r") or die("$fnev nem nyitható meg"); //die()-megjelenítünk egy hibaüzenetet a böngészőben és kilépünk a programból//ha az állomány nem létezik, vagy nincs jogosultságunk olvasásrawhile ( ! feof($f)) { $sor = fgets($f, 1024); //kiolvas egy sort vagy 1024 bájtot print "$sor<br>";}fclose($f);?></body> </html>

  31. Állományok tulajdonságainak lekérdezése I • fájl vagy jegyzék   • if ( is_file(”lista.txt”) ) • print(”A lista.txt egy állomány.”);  • if ( is_dir(”/bin”) ) • print(”A /bin egy jegyzék.”); • jogosultságlekérdezés   • if ( is_readable(”lista.txt”) ) • print(”A lista.txt olvasható.”);  • if ( is_writeable(”lista.txt”) ) • print(”A lista.txt írható.”);  • if ( is_executable(”lista.txt”) ) • print(”A lista.txt végrehajtható.”);

  32. Állományok tulajdonságainak lekérdezése II • állományméret   • print ”A lista.txt mérete:”; • print filesize(”lista.txt”); • utolsó megnyitás fileatime() //visszatérési értéke 1970 óta eltelt másodpercek száma • $t = fileatime(”lista.txt”); • print ”A lista.txt állomány utolsó megnyitásának dátuma:”; • print date(”Y.m.d. H:i”, $t);

  33. Regisztrációs űrlap • <html><head> <title>Regisztsációs oldal</title> </head><body bgcolor=pink> <center><table> • <form action="modosit.php" method="GET"><tr><th>Név:<th> <input type=text name="nev"><tr><th><tr><th>Cím: <th><input type=text name="cim"><tr><th><tr><th>Telefonszám:<th><input type=text name="telefon"><tr><th><tr><th>Kor:<th><input type=text name=kor><tr><th><tr><th>e-mail cím:<th><input type=text name="email"><tr><th><tr><th><th><input type=reset value=" Törlés "><input type=submit value=" Mehet "> • </form></table></center></body></html>

  34. Regisztrációs űrlap feldolgozása • <html><head> <title>Regisztsációs oldal feldolgozása</title> </head><body bgcolor=pink> <center> • <? • print "<br><br>Köszönjük, hogy regisztrálta magát<br><br>"; • $f = fopen("modosit.txt", "a"); • flock($f,2); • fputs($f,"\nNév:$nev"); • fputs($f,"\nCím:$cim"); • fputs($f,"\nTelefonszám:$telefon"); • fputs($f,"\nKor:$kor"); • fputs($f,"\ne-mail:$email\n\n"); • flock($f,3); • fclose($f); • ?> • </center></body></html>

  35. Köszönöm a figyelmet!

More Related