PHP alapjai II. Vincze Dávid Miskolci Egyetem, IIT

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

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

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

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

Programozási nyelvek Java

Web-technológia PHP-vel

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

Osztályok. 4. gyakorlat

MySQL kontra MongoDB programozás. SQL és NoSQL megközelítés egy konkrét példán keresztül

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

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

C#, OOP. Osztályok tervezése C#-ban

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

OOP #14 (referencia-elv)

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

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

PHP5 Új generáció (2. rész)

Objektumorientált programozás C# nyelven

SZERVER OLDALI JAVASCRIPT. 8. hét MongoDB, séma tervezés, performancia kérdések

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Adatbázis használata PHP-ből

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Tematika. MongoDB koncepció JSON Schemaless logika Replicaset képzés Sharding Aggregate framework

Szathmáry László Debreceni Egyetem Informatikai Kar

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

PHP. Adatbázisok gyakorlat

Bevezetés a Python programozási nyelvbe

JEE tutorial. Zsíros Levente, 2012

OOP: Java 8.Gy: Abstract osztályok, interfészek

Model View Controller alapú alkalmazásfejlesztés

Bánsághi Anna

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Java programozási nyelv 4. rész Osztályok II.

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

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

Objektumorientált programozás C# nyelven III.

Események C#-ban Krizsán Zoltán iit

WEB-PROGRAMOZÁS II. 1. Egészítse ki a következő PHP kódot a következők szerint: a,b,c,d: <?php. interface Kiir { public function kiir();

ELTE SAP Excellence Center Oktatóanyag 1

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

C++ programozási nyelv

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Bevezető. Servlet alapgondolatok

Osztály és objektum fogalma

Szoftvertechnológia alapjai Java előadások

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

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

C# osztályok. Krizsán Zoltán

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

JavaScript bűvésztrükkök, avagy PDF olvasó és böngésző hackelés

CAD-CAM

Java programozási nyelv 5. rész Osztályok III.

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

JAVA PROGRAMOZÁS 2.ELŐADÁS

Adatbázis rendszerek I

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

MVC. Model View Controller

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

Powershell 2. gyakorlat

Adatbázisok webalkalmazásokban

A WEB programozása - JSP1 dr.gál Tibor őszi félév

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

Java és web programozás

Reaktív programozás szerver oldalon

Programozási nyelvek Java

Java és web programozás

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

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

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Segédanyag: Java alkalmazások gyakorlat

Forráskód formázási szabályok

RIA Rich Internet Application

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Programozás II. labor

és az instanceof operátor

Globális operátor overloading

Szoftvergyártás: gyártásvezérlés kód-figyeléssel

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Származtatási mechanizmus a C++ nyelvben

Delegátumok C#-ban Krizsán Zoltán iit

KROMESCH SÁNDOR APP FELHŐ. API-k és Webszolgáltatások a Cloudban. Magyarországi Web Konferencia November 8.

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

S z á m í t ó g é p e s a l a p i s m e r e t e k

Abstract osztályok és interface-ek. 7-dik gyakorlat

Webes alkalmazások fejlesztése

Collections. Összetett adatstruktúrák

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

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

Segédanyag: Java alkalmazások gyakorlat

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Java és web programozás

Debreceni Egyetem Matematikai és Informatikai Intézet. 13. Védelem

Átírás:

PHP alapjai II. Vincze Dávid Miskolci Egyetem, IIT vincze.david@iit.uni-miskolc.hu

PHP fájl feltöltés <form enctype="multipart/form-data" action="fogado.php" method="post" /> <input type="hidden" name="max_file_size" value="3000000" /> <input type="file" name="beton" /> <input type="submit" name="submit" value="feltölt" /> MAX_FILE_SIZE: sokat nem ér, nem itt kell ezzel foglalkozni

PHP fájl feltöltés $filenev = $_FILES['beton']['name']; // eredeti nev $tempnev = $_FILES['beton']['tmp_name']; // hova kerult ideiglenesen a file $meret = $_FILES['beton']['size']; $tipus = $_FILES['beton']['type']; move_uploaded_file($tempnev, "feltoltottek/". $filenev);

PHP Cookie kezelés Perzisztens adattárolás a kliensen cookie süti név (kulcs), érték, lejárat if(!$_cookie["nezegeto"]) { echo "Teged nem ismerlek!"; setcookie ("nezegeto", "Ismeretlen Ember", 3600+time() ); else { echo "Mar ismerlek.";

PHP Session kezelés Alapvetően a HTTP állapotmentes azonosítók hozzárendelésével követhető így kvázi elfedhető az állapotmentesség session_start(); if (!isset($_session['belepve'])) { $_SESSION['belepve'] = 1; else { $_SESSION['belepve']=0;

PHP Session kezelés A $_SESSION szuperglobális asszociatív tömbben tetszőleges kulcsok és értékek adhatóak meg A rendszeren ez legtöbbször fájl alapon tárolódik Létezik több fajta session handler Adatbázis, osztott memória, memcached, stb...

PHP Session kezelés Pl. file handler esetén: (default) cat /tmp/sess_vjeddon96hlmvmg88q1serntd0 securimage_code_value s:4:"h5f4"; Maguktól ezek nem szűnnek meg garbage collector max. lifetime gc meghívásának valószínűsége aztán majd töröl ha úgy gondolja

PHP GD graf. könyvtár LibGD2 Ingyenes grafikai manipulációs függvénytár gd néven szerepel a modulok között gyakori pl. feltöltött képek méretének lekérdezés generálni valamilyen egyszerű képet formátum / méret konverzió

PHP GD graf. könyvtár header("content-type: image/jpeg"); $kep = imagecreate(250,250); $zold = imagecolorallocate($kep,0,255,0); $kek = imagecolorallocate($kep,0,0,255); imageline($kep, 0, 0, 140, 140, $kek); imagejpeg($kep);

NoSQL No SQL, Not Only SQL Kulcs-érték tárolók, mint egy nagy asszociatív tömb Nyilván kisebb funkcionalitás, de pl. weboldalaknál bőven elegendő Ezért jóval gyorsabb Több fajta implementáció, megközelítés Mi a Memcached-et nézzük meg

NoSQL Több fajta implementáció, megközelítés Cél, hogy levegyük a terhelést az RDBMS-ről Mi most a Memcached-et nézzük meg (meg kicsit a MongoDB-t) Kulcs-érték tároló (objektum), mint egy nagy asszociatív tömb Nyilván kisebb funkcionalitás, de pl. weboldalaknál bőven elegendő Ezért jóval gyorsabb

NoSQL - Memcached Sokan használják: YouTube, FB, Amazon, stb. Jól skálázódik Unix domain socket / TCP socket Egyszerű protokoll GET/SET PHP API memcache extension Implementálja a protokollt CONNECT/GET/SET egyszerű fgvek

NoSQL - Memcached Nem perzisztens! Restart, shutdown, crash = adatvesztés Ezért is inkább csak cache-lésre használják Tipikus: Megvizsgálni, hogy van-e már az adott obj. MC-ben Ha van, azt használjuk Ha nincs, előállítjuk a tartalmat RDBMS-ből Betesszük MC-be az új tartalmat RDBMS-be íráskor is frissíthetjük MC-ben

NoSQL - Memcached De nem is fontos perzisztensnek lennek minden esetben. Pl. kik vannak épp az oldalon... Vagy időzítve szinkronizálhatjuk háttértárra Nézzunk példa kódót!

NoSQL - Memcached $mc = memcache_connect('host', 11211); memcache_set($mc, 'kulcs'); $ertek = memcache_get($mc, 'kulcs'); memcache_increment($mc, 'szamlalo', 1); memcache_decrement($mc, 'szamlalo', 1); memcache_delete($mc, 'kulcs'); memcache_flush($mc); memcache_close($mc);

NoSQL - Memcached Ha nincs ilyen kulcs használva, akkor NULL-t ad vissza a get(). increment() és decrement() atomi operáciok! Előfordulhat, hogy RDBMS query gyorsabb. Ilyenkor azt kell használni :) (Maga az RDBMS is cache-lhet...)

NoSQL - MongoDB Dokumentum orientált JSON JavaScript Object Notation Példa a Wikipediaról: { "firstname": "John", "lastname": "Smith", "age": 25, "address": { "streetaddress": "21 2nd Street", "city": "New York", "state": "NY", "postalcode": "10021", "phonenumber": [ { "type": "home", "number": "212 555-1234", { "type": "fax", "number": "646 555-4567" ]

NoSQL - MongoDB Nem kell előre definiálni a DB-t, csak használatba kell venni Ha nem volt még, akkor létrehozza DB-n belül objektumokat látunk Van nekik saját egyedi azonosítójuk A DB-n belül objektum gyűjtemény -ek vannak Nem szigorúan kötött a szerkezet

NoSQL - MongoDB Példa a doksiból: > use things >j = { name : "mongo" ; {"name" : "mongo" > t = { x : 3 ; { "x" : 3 > db.things.save(j); > db.things.save(t); > db.things.find(); { "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" { "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3

NoSQL - MongoDB Másik példa: > db.gyujtemeny.save({ mezo_nev: "mezo_ertek"); > db.gyujtemeny.save({ mezo_nev_masik: "mezo_ertek_valami2", szammezo: 1 ); > db.gyujtemeny.find(); { "_id" : ObjectId("c11f83a19c724ac61aee150e53a56ecb"), "mezo_nev" : "mezo_ertek" { "_id" : ObjectId("c11f83a19c724ac61aee150e53a56ecc"), "mezo_nev_masik" : "mezo_ertek_valami2", "szammezo" : 1 > db.gyujtemeny.find(szammezo:1); { "_id" : ObjectId("c11f83a19c724ac61aee150e53a56ecc"), "mezo_nev_masik" : "mezo_ertek_valami2", "szammezo" : 1

PHP OOP PHP 5 normálisan támogat OOP-t Procedurális programozás helyett struktrúrába rendezett kód és hozzá tartozó adatszerkezet. Modulárisabb, áttekinthetőbb, stb. No more bloat, csináljunk egy osztályt: class myclass { function myclass(){

PHP OOP class myclass { public $x; function myclass(){ // konstruktor $x=7; function construct(){ function kiir(){ echo('valami'); $obj=new myclass(); $obj->kiir();

PHP OOP private / public / protected adattagok/metódus $this saját magára mutat $this->kiir(); $this->x=8; construct() public function construct($elso, $masodik) new ojjekt('valami',77) destruct() Nem lehet argumentuma

PHP OOP class Customer { private $first_name; private $last_name; private $outstanding_amount; public function construct($first_name, $last_name, $outstanding_amount) { $this->setdata($first_name, $last_name, $outstanding_amount); public function setdata($first_name, $last_name, $outstanding_amount){ $this->first_name = $first_name; $this->last_name = $last_name; $this->outstanding_amount = $outstanding_amount; public function printdata() { echo "Name : ". $first_name. " ". $this->last_name. "\n"; echo "Outstanding Amount : ". $this->outstanding_amount. "\n"; $c1 = new Customer("Sunil","Bhatia",0);

PHP OOP public function tostring() { return Valtozom1:. $this->valt1., valt2 =. $this->valt2; echo Ojjektum print:. $ojj;

PHP OOP Öröklődés class MyOtherClass extends MyClass { Scope operátor :: Statikus elérése osztály tagjának Példányosítás nélkül pl. osztaly::tag(); pl. örökölődés után egy felülírt fgv. helyett az eredetit használni az eredeti osztályban

PHP OOP class Ember { public $nev; $e = new Ember(); $e->nev = Jancsi ; // $name publikus,beallitodik $e->email = email@domain.com ; // nem volt definialva, megis beallitodik

PHP OOP class Customer { public $name; private $data = array(); public function set($dt, $vl) { $this->data[$dt] = $vl; public function get($dt) { return $this->data[$dt]; $c = new Customer(); $c->name = Jancsi ; $c->email = email@domain.com ; // beallit echo $c->email;

NoSQL Memcached OOP $memcache = new Memcache; $memcache->connect('localhost', 11211) or die ("Could not connect"); $memcache->set('kulcs','nagyertek',0,3600); $ertek = $memcache->get('kulcs'); $memcache->flush(); $memcache->delete('kulcs'); $memcache->increase('kulcs'); $memcache->decrease('kulcs');

PHP exceptions try { $error = 'Dobok, figyelj!'; throw new Exception($error); echo('ez itt sosem fog lefutni.'); catch (Exception $e) { echo('kivetelt kaptam: ',$e->getmessage()); // Tovabb megyunk echo('tovabb...');

PHPMailer A mail()-t miért is nem szeretjük? :) Helyette: PHPMailer Nem PHP extension, hanem PHP-ben írt fgvkönyvtár/osztály Támogat mindent, ami kellhet Letöltés, kicsomagolás, kész. Használjunk SMTP-t (localhost-ra)

PHPMailer require("class.phpmailer.php"); $mail = new PHPMailer(); $mail->issmtp(); // hasznalj SMTP-t $mail->host = "localhost"; $mail->from = "user@iit.uni-miskolc.hu"; $mail->fromname = "Egyes User"; $mail->addaddress("user2@iit.unimiskolc.hu"); $mail->subject = "Levelke"; $mail->body = "Szia!\n\nEzt PHPMailer-rel kultem. udv.";

PHPMailer if(!$mail->send()) { echo 'Hat ez nem ment el.'; echo 'Hiba: '. $mail->errorinfo; else { echo 'Sikeresen elkuldve.';

PHPMailer AddAttachment($path,$name,$encoding,$type); Path: maga a fájl Name: ilyen néven jelenjen meg a levélben Encoding: lehet több fajta, többnyire base64 az alap Type: MIME típus AddEmbeddedImage(filename, cid, name); Belső attachment, cid-el azonosítva