A Http és a PHP kapcsolata. Web-Sky Consulting Kft Tóth Imre 2009



Hasonló dokumentumok
Internet technológiák

Környezeti változók, űrlapok kezelése

WEBFEJLESZTÉS 2. MUNKAMENET-KEZELÉS, HITELESÍTÉS

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

Készítette: Gál Tamás. A tananyag programozott változata itt érhető el: Webfejlesztés

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

PHP. Adatbázisok gyakorlat

A HTTP protokoll. A standard egy URI (Unified Resource Identifier = egységes forrás azonosító) megnevezésű címet definiál, amely lehet:

WEBFEJLESZTÉS 2. BEMENET, ŰRLAPOK

Rohonczy János: World Wide Web - Világháló

WEB PROGRAMOZÁS 3.ELŐADÁS. Űrlapok

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 5.ELŐADÁS. Sütik és munkamenetek kezelése

Java Challenge második forduló játékszabályai v1.2

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

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben

WEBFEJLESZTÉS 2. PHP NYELVI ALAPOK, HTML KIMENET, PHP BEMENET, ŰRLAPOK

Webes alkalmazások fejlesztése

III. RÉSZ Munka a PHP-vel

Hálózati architektúrák és Protokollok GI Kocsis Gergely

Hálózati architektúrák és Protokollok GI Kocsis Gergely

Hány komputer van a kezemben?

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Webszolgáltatások (WS)

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

Java és web programozás

PHP MySQL, Java JDBC MySQL. Adatbázisok az iskolában 2012 Dr. Balázs Péter Palatinus Endre és Erdőhelyi Balázs diái alapján

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

API tervezése mobil környezetbe. gyakorlat

Bevezetés Működési elv AJAX keretrendszerek AJAX

ColourSMS Protokol definíció. Version 1.2

PHP-MySQL. Adatbázisok gyakorlat

Weboldalak Biztonsági Kérdései

Hálózati architektúrák és Protokollok GI Kocsis Gergely

Symfony kurzus 2014/2015 I. félév. Controller, Routing

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

WEBFEJLESZTÉS 2. ADATTÁROLÁS, MUNKAMENET- KEZELÉS, AJAX

Az internet az egész világot behálózó számítógép-hálózat.

HTML, Javascript és az objektumok

Web technológiák. Barabás Péter, Általános Informatikai Tanszék, Miskolci Egyetem. Barabás Péter Web technológiák 1

Webes űrlapok és az XForms ajánlás

Symfony kurzus 2014/2015 I. félév. Security: authentication, authorization, user provider, role-ok, access control, FOS user bundle

Hálózati architektúrák és Protokollok GI - 9. Kocsis Gergely

Tartalomjegyzék. Weboldalüzemeltetői praktikák... 1 Átlag weboldal... 1 Wordpress praktikák... 2

Internet programozása. 1. előadás

Alapfogalmak, WWW, HTTP

Alkalmazások II. World Wide Web

PHP gyorstalpaló, avagy a Hello World-től az űrlapellenőrzésig

Miért jó ez: A Xampp csomag előnyös tulajdonságai: rendkívül jól felszerelt naprakész telepíteni-és frissíteni gyerekjáték.

TCP/IP hálózaton keresztül szolgáltatunk tartalmat Statikus vagy dinamikus weboldalakat jelenítünk meg. A tartalmat web szerver szolgálja ki.

Számítógépes Hálózatok. 3. gyakorlat

Model View Controller alapú alkalmazásfejlesztés

Web programoz as


Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

WEBFEJLESZTÉS 2. PHP NYELVI ALAPOK

WEBFEJLESZTÉS 2. ADATTÁROLÁS, FÁJLOK

Hypertext Transfer Protocol (HTTP)

Smarty AJAX. Miért jó ez? Ha utálsz gépelni, akkor tudod. Milyen műveletet tudunk elvégezni velük:

SSL VPN KAPCSOLAT TELEPÍTÉSI ÚTMUTATÓ

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7

Web-technológia PHP-vel

Web programozás. 3. előadás

Webes alkalmazások fejlesztése 1. előadás. Webes alkalmazások és biztonságuk. Cserép Máté

Természetesen készíts egy csempe nevű könyvtárat és ide mentsd az index.html állományt.

Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20

HÁLÓZATI HASZNÁLATI ÚTMUTATÓ

Számítógép labor V. Egyszer Web szerver. Dokumentáció. Készítette: Ács Gergely (K4C03M)

Powershell 2. gyakorlat

Webtárhely létrehozása a helyen. Lépések Teendő 1. Böngészőbe beírni: 2. Jobb oldalon regisztrálni (tárhelyigénylés).

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Programozás és adatbázis kezelés PHP ben

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt

Összeállította: Sallai András. Levelezőszerver egyszerűen

Web-fejlesztés NGM_IN002_1

Extrémen brutál, gyors talpaló PHP nyelvhez (database). v2.1

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

Web fejlesztés II. Illés Zoltán ELTE Informatikai Kar I n f o r m a t i k a

ELTE SAP Excellence Center Oktatóanyag 1

Hálózati architektúrák és Protokollok MI 7,8. Kocsis Gergely

JavaServer Pages (JSP) (folytatás)

Webes alkalmazások fejlesztése 1. előadás. Webes alkalmazások és biztonságuk

Java technológiák - ANTAL Margit. komponensek. A HTTP protokoll. Webkonténerek és szervletek. Egyszerű HTTP. ANTAL Margit.

IP-címhez kötött webszolgáltatások használata idegen IP-című gépről

Szabadkai Műszaki Szakfőiskola. Web programozás. dr Zlatko Čović

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

Webapp (in)security. Gyakori hibákról és azok kivédéséről fejlesztőknek és üzemeltetőknek egyaránt. Veres-Szentkirályi András

HTML alapok 1. Minimális HTML file: <HTML> <HEAD> <TITLE> cím </TITLE> </HEAD> <BODY>... </BODY> </HTML> Formátum parancsok:

ASP suli 2. Developer

JSF alkalmazások teljesítményhangolása JMeter és dynatrace segítségével

A számítástechnika gyakorlata WIN 2000 I. Szerver, ügyfél Protokoll NT domain, Peer to Peer Internet o WWW oftp opop3, SMTP. Webmail (levelező)

Adatbáziskezelés php-ben MySQL adatbáziskezelı rendszert használva

web works hungary Rövid technikai tájékoztató a webhosting szolgáltatásról. (PLESK szerver)

applikációs protokollok

Weboldalak fejlesztése mobil eszközökre

BASH script programozás II. Vezérlési szerkezetek

SAMBA. Forrás: Lajber Zoltán: SAMBA alapok dia, SZIE

Átírás:

A Http és a PHP kapcsolata 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 6. Zend Framework és az MVC 7. Zend Framework alapelemei 8. Adatbázis modell 9. Zend Framework részletei 10. Form kezelés és validáció 11. Ajax és jquery bemutatása 12. jquery felületek beágyazása 13. Authentikáció és jogosultság kezelés, OpenID

HTTP: HyperText Transfer Protocol 1999-ben kiadott 2616 RFC-ben definiált a HTTP 1.1. Ez a legelterjedtebb verziója. Kliens szerver alapú kommunikáció TCP/IP felett működik 80-as porton Állapot nélküli kapcsolat: minden kérésnél szükséges elküldeni minden szükséges információt. Vannak technikák, amik segítségével ez orvosolható. (session, cookie)

Kommunikáció 1. A böngésző (kliens) nyit egy socketet a szerver felé. 2. Ráírja a socketre a kérését. 3. Majd kiolvassa onnan a választ. 4. Erre a socketre lehet írni újabb kéréseket. 5. Két kérés között maximum Keep-Alive-nyi tétlen idő telhet el. 6. Szerver vagy a kliens lezárja a kapcsolatot.

HTTP kérések GET / HTTP/1.1 Host: www.google.hu User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/ plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: hu-hu,hu;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Cookie: PREF=ID=9bfd7669bfb28cd5:TM=1186956964:LM=1186956964:S=b1z4 Yfs62xKjx3ZT

POST /auth.html kérés HTTP/1.1 Host: belepes.t-online.hu User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/ plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: hu-hu,hu;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://freemail.hu/levelezes/login.fm?page= Content-Type: application/x-www-form-urlencoded Content-Length: 203 user=teszt%40freemail.hu&userwithoutdomain=teszt&pass=12345

HTTP válasz HTTP/1.x 200 OK Cache-Control: private Content-Type: text/html; charset=utf-8 Content-Encoding: gzip Server: gws Content-Length: 1677 Date: Thu, 04 Oct 2007 10:38:47 GMT maga az adat

Néhány hasznos http header Content-Length: 1024 byte-ban az adat hossza Content-Type: text/plain Tartalom típusa: text/html, text/plain, text/xml image/gif, image/jpeg, image/png audio/mpeg, video/mpeg, video/quicktime application/zip, application/octet-stream Location: http://web-server.hu/index.php Erre a címre ugrik a böngésző

Fájl letöltésnél Meg kell adni a fájl típusát (content-type) Hosszát Eredeti nevét (így fogja menteni) Content-type: application/pdf Content-length: 18676 Content-disposition: attachment; filename="fajl.pdf"

Form (űrlap) Így néz ki egy átlag űrlap: <form name="login" method="post" action=""> <input type="hidden" name="titok" value="12345"> <input type="text" name="szoveg"> <input type="submit" name="gomb" value="belépés"> </form>

Form opciók Method: post vagy get Action: kezelő url, ha üres, akkor önmaga esetlges gettel együtt Enctype: mezők kódolását adja text/plain (alapértelmezett) multipart/form-data (pl: fájl feltöltéshez) application/x-www-form-urlencoded (pl: ajax)

Űrlap elemek Input mező button checkbox file hidden image password radio reset submit text name: nevét adjuk meg value: érték/kezdőérték size: mező mérete (ahol értelmezett) src: kép url (image esetén) readonly, disabled, checked

Űrlap elemek Select <select name="valasz"> <option value="1">első</option> <option value="2" selected>masodi</option> </select> multiple: több elem kijelölése size: n elemet jelenít meg egyszerre Textarea <textarea name="neve">kezdő Szöveg</textarea>

PHP és az űrlap A php definiál pszeudo változókat: $_POST: post-tal küldött adatok $_GET: get-tel küldött adatok $_COOKIE: böngésző által mentett adatok $_REQUEST: előző három együtt $_SESSION: session-ben lévő adatok $_FILES: fájl feltöltés esetén a fájlok $_SERVER: szerver változók

$_SERVER [HTTP_HOST] => localhost [HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 [SERVER_SOFTWARE] => Apache/2.2.4 (Win32) PHP/5.2.3 [SERVER_NAME] => localhost [SERVER_ADDR] => 127.0.0.1 [SERVER_PORT] => 80 [REMOTE_ADDR] => 127.0.0.1 [DOCUMENT_ROOT] => D:/Projects [SCRIPT_FILENAME] => D:/Projects/teszt.php [REMOTE_PORT] => 3565 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => izemize=5 [REQUEST_URI] => /teszt.php?izemize=5 [PHP_SELF] => /teszt.php

$_POST, $_GET Az űrlap elküldése meghívja az action url-t, ami feldolgozza a formot. Ekkor a php definiálja nekünk a korában felsorolt tömböket. Ha több input mezőnek ugyanazt a speciális nevet adjuk, hogy neve[], akkor egy tömböt állít elő a php, és tömbként érjük el az adatokat.

<? if ($_POST["login"]) { $user = "en"; $jelszo = "vagyok"; if ($_POST["jelszo"]==$jelszo && $_POST["user"] == $user) echo "Ismerlek kedves gazdám!"; }?> <html> <head><title>login oldal</title></head> <body> <form name="login_form" method="post" action=""> <input type="text" name="user"> <input type="password" name="jelszo"> <input type="submit" name="login" value="belépés"> </form> </body> </html>

File feltöltése A kliens file-t tud feltölteni a szerverre. Ehhez szükséges egy speciális form. A form-on meg kell adni a file elérési útvonalát. Submit után a file feltöltődik a szerverre és egy ideiglenes könyvtárban elhelyezi a szerver. Az ideiglenes könyvtárból tetszőleges helyre másolhatjuk a szerveren(ahogy a jogosultságunk engedi)

File feltöltés példa <?php $cel = "uploads/". $_FILES['file1'']['name']; if(move_uploaded_file($_files['file1'']['tmp_name'],$cel)){ echo "File sikeresen feltöltve."; }else{ echo "Sikertelen file feltöltés."; }?> <html> <heap><title>upload</title></head> <form name="form1" enctype="multipart/form-data" action="" method="post"> <input type="file" name="file1"> <input type="submit" name="mehet" value="feltölt"> </form> </html>

Biztonságos fájlletöltés A védett fájlok a weboldalról nem elérhetőek, a gyökér felett vannak. Egy php szkript segítségével, lehet ellenőrizni azt, hogy ki férhet hozzá az egyes fájlokhoz. Átfolyatjuk a fájlt tartalmát a php-n

$path = "../files/"; if ($_SESSION["login"]){ header('content-type: application/octet-stream'); header('content-length: '.filesize($path.$_get["file"])); header('content-disposition: attachment; filename="'.$_get["file"].'"'); $file=fopen($path.$_get["file"]); while (!feof($file)) { $buffer = fread($file,1024); echo $buffer; } fclose($file); } else { echo "Nincs jogosultságod!"; }

Cookie használata Segítségével a kliens oldalon tudunk adatokat tárolni. Így támogatni, követni tudjuk a visszatérő felhasználókat. Egy domain-hez csak meghatározott számú cookie és egy kliensen is csak korlátozott számú cookie tárolható. A cookie-k mérete is korlátozott ezért csak kisebb adatokat lehet benne tárolni(név, bállítások). A legtöbb böngésző támogatja, de sokszor le van tiltva ezét nem érdemes csak erre támaszkodni.

Cookie-k használata Mivel a cookie-k a kliens gépen vannak tárolva és egyszerű szöveg ként. Nem biztonságosak és viszonylag rövid ideig tárolja a böngésző ezért fontos illetve titkos adatok tárolására sem alkakmas. A böngésző a cookie-k adatait a header-el együtt küldi el ezért úgy azok a megszorítások érvényesek rá, mint a header-re(minden kiíratás előtt kell lennie).

Cookie-k a PHP5-ben Minden a cookie amit a kliens küldött belekerül a $_COOKIE szuper globális változóba és ugyan úgy használható mint a $_GET vagy a $_POST tömb. Cookie-t a setcookie(); paranccsal lehet létrehozni. Header-t használ! Paraméterek: -név:később ezzel a névvel érhető el a cookie. -érték -lejárati idő: sec-ben. pl: time()+24*60*60(1 nap) -könyvtár: A cookie csak ebben a könyvtárban lesz elérhető(alkönyvtárak is). -domain: Csak az adott domain-ben lesz elérhető a cookie. -https: [true false] csak https-en elérhető a cookie -http: [true false] csak http-n érhető el. (JS-el nem) pl: setcookie("testcookie", $value, time()+3600, "/~rasmus/", ".example.com", 1);

SESSION kezelés PHP 5-ben Az állapot nélküli kapcsolat hátrányait segít kiküszöbölni. Segítségével a szerveren tárolhatunk, biztonságosan nagyobb adatokat, rövid ideig. Minden kliens kap egy SID-et és ezzel férhet hozzá a saját session-hez. A SID-et mindig el kell küldeni a szervernek. Ezt lehet GET-tel vagy cookie-val.

Munkamenet kezelő függvények session_start(): új munkamenetet kezd vagy a meglévőt folytatja. Header-t használ! A munkamenet adatait a $_SESSION tömbben tudjuk elérni. változót az unset($_session['nev']); utasítással tudunk törölni. session_id(); visszaadja a session azonosítót. session_name(); visszaadja a az aktuális munkamenet nevét. echo SID; megegyezik: session_name()."=".session_id(); ezt a kifejezést lehet használni, ha az url-ben akarjuk átadni a session azonosítót $_COOKIE[session_name()]; ha cookie-t használunk a session kezelésre, ez az alapértelmezett Objektumok sessionban tárolásánál vigyázni kell arra, hogy a session_start() hívása előtt, be kell tölteni az osztály definíciókat.

Példa <?php session_start(); print_r($_session); $_SESSION['valtozo'] = "Helló Világ!";?> Először nem ír ki semmit, majd frissítve az oldalt, kiírja a "Helló Világ!" szöveget.

Egyedi SESSION kezelés session_set_save_handler ($open, $close, $read, $write, $destroy, $gc ); Függvény nevek, sorra megvalósítják a SESSION kezeléshez szükséges műveleteket. Pl: adatbázis alapú session kezelés.