web - php

71
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/ Tehnologii Tehnologii Web Web <?xml version=“1.0” ?> <curs desc=“…” /> Tehnologii Web Dr. SabinCorneliu Buraga Facultatea de Informatica Universitatea “A.I.Cuza” – Iasi, Romania http://www.infoiasi.ro/~busaco/

Upload: sabin-buraga

Post on 29-Nov-2014

1.479 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Tehnologii Web

Dr. Sabin­Corneliu BuragaFacultatea de Informatica

Universitatea “A.I.Cuza” – Iasi, Romania

http://www.infoiasi.ro/~busaco/

Page 2: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Programare Web

PHP: o prezentare generala

Detalii in [AW, 13‐70, 237‐246] [SWC, 357‐361]

Page 3: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

PHP (PHP: Hypertext Preprocessor)Evolutie

CaracterizareInteractiunea cu utilizatorulProgramare obiectuala in PHP

Prelucrarea bazelor de date in PHPInstrumente & resurse

cuprins

Page 4: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Personal Home Page Tools(1994‐1995) – Rasmus Lerdorf

PHP/FI 2.0 (1995)PHP 3 (1998) – incepe sa fie dezvoltat de ZendZeev Suraski & Andi Gutmans

PHP 4 (2000) – motor de procesare ZendPHP 4.3 (2002‐2003) – motor de procesare Zend 2.0PHP 5 (2004) – multe facilitati inspirate din JavaPHP 6 (in dezvoltare)

php: istoric

Page 5: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Limbaj de programare de tip script, interpretat, poate fi inclus direct in cadrul documentelor HTML 

Procedural, oferind si suport pentru programareaorientata‐obiect

Sintaxa inspirata de C/C++, Perl si Java – case sensitivePaginile incluzind cod PHP au extensia .php(in trecut .php3, .phtml)

php: caracterizare

Page 6: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Disponibil gratuit (open source) pentru diverse platforme(UNIX/Linux, Windows, Mac OS X) si servere Web

(Apache, IIS, lighttpd,…)

php: caracterizare

Page 7: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Maniera de functionare a procesorului (engine‐ului) PHP

php: caracterizare

Page 8: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Faciliteaza interactiunea cu utilizatorul(formulare Web, cookie‐uri, sesiuni, integrare Apache)

Suport pentru manipularea bazelor de date(MySQL, ODBC, Oracle, PostgreSQL, SQLite,…)

Procesarea continutului resurselor(tipuri de arhive, PDF, fisiere grafice, certificate digitale,…)

php: caracterizare

Page 9: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Suport pentru tehnologiile XML(procesari SAX, DOM, simplificate; transformari, validari;

servicii Web prin SOAP/REST)

Include extensii (module) diverse

Documentatia oficiala: www.php.net/docs.php

php: caracterizare

Page 10: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Variabile create “din zbor” Tipuri scalare: integer, double, boolean, stringTipuri complexe: tablouri (indexate/asociative) & obiecte

Tipuri speciale: resursa, referinta, nul (NULL)

$ani = 21; /* o variabila obisnuita */ $conectat = TRUE; # variabila logica$prefer["culoare"] = "gri"; // tablou asociativ

php: caracterizare

Page 11: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Structuri de control – similare celor din C (if, switch, while, do, for, break, continue)

if (!$nume) { echo ("Nu ati precizat numele!");

} else {echo ("Bine ai venit, " . $nume . "!\n");

}

php: caracterizare

Page 12: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

<?php// umplem un tablou cu valori de la 1 la 10for ($contor = 1; $contor <= 10; $contor++) {$valori[$contor] = $contor;

} // realizam suma valorilor$suma = 0;foreach ($valori as $element) $suma += $element;

// afisam suma obtinute la iesirea standard // pentru a fi trimisa browseruluiecho ("<p>Suma de la 1 la 10 este: <em>" . $suma . "</em></p>");

?>

php: caracterizare

Page 13: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

php: caracterizare

Invocarea (rularea) programului PHP direct din linia de comanda:

Salvam codul intr‐un fisier text .php – valori.phpApelam interpretorul PHP din linia de comanda

Page 14: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

php: caracterizare

Invocarea (rularea) programului PHPfolosind tehnologiile Web:

Plasam fisierul intr‐un director al serverului WebDin browser, indicam URL‐ul catre program pentru a‐l invoca via HTTP

Rezultatulgenerat de script

Page 15: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Constante predefinite: PHP_VERSION, CHAR_MAX,…Operatori – ca si cei din limbajul C/Perl (e.g., concatenarea sirurilor cu “.”)

Functii‐utilizator:

function trimite_mesaj ( $from="", $to="", $subject="Web"){// corp…

}

php: caracterizare

Parametri cu valori implicite

Page 16: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

<?phpfunction patrat ($numar) { // functia de ridicare la patratreturn $numar * $numar;

}$numar = 0;while ($numar < 10) {$numar++; // incrementam numarul

if ($numar % 2) // e numar impar...continue; // continuam cu urmatoarea iteratie

// e numar par, deci afisam patratulecho "<p>$numar la patrat este " . patrat($numar) . "</p>";

} // final de while?>

php: caracterizare

Page 17: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Functii predefinite (built­in):matematice & de conversiede manipulare a sirurilor de caracterede prelucrare a tablourilorde acces la resurse si de lucru cu fisierede manipulare a bazelor de dateprivitoare la conexiunile de reteapentru accesarea resurselor XML, PDF, JPEG,...specifice sistemului de operaregenerale

php: caracterizare

Page 18: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Functii predefinite (built­in) – matematice:abs(), mod(), fmod()ceil(), floor(), round(), max(), min()exp(), log10(), log()pow(), sqrt()sin(), cos(), tan(), asin(), …, sinh(), …, pi()rand(), srand()bindec(), octdec(), dechex(),…, base_convert()is_finite(), is_infinite(), is_nan()

php: caracterizare

Page 19: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Functii predefinite (built­in) – siruri de caractere:echo(), print(), printf(), sprintf() etc.strlen(), chr(), ord(), substr(), strstr(), strpos(),…strcmp(), strcasecmp(), strnatcmp() etc. strcat(), str_replace(), str_ireplace(), strrev() etc.trim(), ltrim(), rtrim() explode(), implode(), split(), join(), strtok() nl2br(), htmlentities(), htmlspecialchars(), strip_tags(),…

php: caracterizare

Page 20: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Functii predefinite (built­in) – tablouri:array_count_values(), array_search(), array_filter(), array_slice(), array_chunk() 

array_fill(), array_combine(), array_shift(), array_reverse(), array_multisort(), array_sum(),…

array_merge(), array_intersect(), array_diff()array_keys(), array_key_exists()array_push(), array_pop() 

php: caracterizare

Page 21: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Functii predefinite (built­in) – de manipularea caracterelor:ctype_digit(), ctype_xdigit(), ctype_print(), ctype_punct(), ctype_space(),…

ctype_alpha(), ctype_alnum(), ctype_lower(), ctype_upper()

php: caracterizare

Page 22: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Functii predefinite (built­in) – timp & data:getdate(), localtime(), gettimeofday(), time() etc.date(), idate(), gmdate(),…checkdate() strftime(), strtotime()

php: caracterizare

Page 23: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Functii predefinite (built­in) – fisiere/directoare:Folosind tipul de date FILE: fopen(), fread(), fscanf(), fgets(), fwrite(), fprintf(), fseek(), ftell(), feof(), fclose(), ftruncate(), fstat(), flock()

file(), copy(), rename(), delete(), move_uploaded_file(), tmpfile() 

file_exists(), filesize(), filetype(), fileperms(),…, stat()is_dir(), is_file(), is_readable(), is_writeable(),…chdir(), mkdir(), rmdir()disk_free_space(), disk_total_space()   

php: caracterizare

Page 24: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Functii predefinite (built­in) – URL‐uri:urldecode(), urlencode(), parse_url()base64_decode(), base64_encode()

php: caracterizare

Page 25: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Functii predefinite (built­in) – variabile PHP:is_bool(), is_int(), is_float(),…, is_array(), is_null(), is_resource(), is_scalar(), is_string()

gettype(), settype()empty(), isset(), unset()strval(), print_r(), var_dump() serialize(), unserialize() 

php: caracterizare

Page 26: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Alte facilitati:SPL (Standard PHP Library) – acces la metodestandard de prelucrare a datelor

Rularea din linie de comanda: PHP CLI (Command Line Interface) sau ca modul Apache

Crearea de interfete grafice (aplicatii desktop): PHP‐GTK – http://gtk.php.net/

Inter‐conectivitatea cu alte tehnologii/platforme(COM, Flash, Java, .NET)

Suport pentru Internet/Web (FTP, HTTP, IMAP, LDAP, NNTP, POP3, SNMP, SOAP, XML‐RPC)

php: caracterizare

Page 27: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Datele transmite de client (browser) se regasescin tablouri asociative predefinite (si globale):

$_GET[] – datele transmise prin GET$_POST[] – datele transmise prin POST$_COOKIE[] – cookie‐urile receptate$_REQUEST[] – datele primite de la client (continutul lui $_GET, $_POST si $_COOKIE)

$_SESSION[] – datele de tip sesiune

php: interactiune web

Page 28: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Alte variabile globale utile:$_SERVER[] – datele oferite de serverul Web

$_SERVER['PHP_SELF'] numele scriptului PHP$_ENV[] – datele oferite de mediu (environment)$_FILES[] – datele despre fisierele primiteprin upload

php: interactiune web

Page 29: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Formularul Web:<form action="afiseaza.php" method="post">

<input type="text" name="nume" /> <input type="text" name="virsta" /> <input type="submit“ value="Trimite" />

</form> Scriptul afiseaza.php:<?php if (!$_REQUEST["nume"]) {?>

<p style="color: red">Nu ati specificat numele!</p> <?php } else {

echo (“Numele este “ . $_REQUEST[“nume”]); }

?>

php: interactiune web

Page 30: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Programare obiectuala – incapsularea:<?phpclass Student { // specificarea unei clasevar $an; var $nume; var $email; // metodefunction seteazaAn ($un_an) { $this->an = $un_an; }function furnizeazaAn () { return $this->an; }

}$stud = new Student; // instantierea unui obiect?>

Se pot accesa direct, nefiind privati in PHP4

php: obiecte

Page 31: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Programare obiectuala – mostenirea:

class StudentDestept extends Student {var $note; // notele obtinute (data membru)// metodefunction seteazaNote ($n) { $this->note = (array) $n; } function furnizeazaNote () { return (array) $this->note; }

}$alt_stud = new StudentDestept;$alt_stud->seteazaAn (2); // apel de metodă din clasa de bază$alt_stud->seteazaNote ($niste_note);

// apel de metodă din clasa derivată

php: obiecte

Page 32: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Programare obiectuala – constructori:class Student {var $an, $nume, $email; // date-membru

function Student ($a, $n, $e = '') { // constructor$this->an = $a;$this->nume = $n;$this->email = $e;

} // alte metode…

}$stud = new Student (2, "Ping Uinix");

php: obiecte

Destructorinu existain PHP 4!

Page 33: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Functii de manipulare a claselor si obiectelorget_class() va returna numele unui obiect, instanță a unei clase

get_parent_class() furnizează clasa părintedin care provine un anumit obiect

method_exists() testează dacă există o metodăpentru un anumit obiect specificat

class_exists() testează existența unei claseis_subclass_of() va determina existențaunei relații de moştenire dintre două clase

php: obiecte

Page 34: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Programare obiectuala – PHP 5:Constructorii sunt numiti __construct()Destructorii sunt denumiti __destruct()Accesul la clasa parinte parent::Membrii pot fi publici (public), privati (private) sau protejati (protected)

Se permit clase/metode abstracte: abstractObiectele pot fi “clonate” via cloneObiectele pot fi comparate folosind ===Pot fi declarate si interfete (in stilul Java)Se permite si introspectia via clasa Reflection

php: obiecte

Page 35: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Programare obiectuala – PHP 5:class Student { // clasa privitoare la un student

private $an; // date-membru (private/publice)public $nume; public $email;// constructor (in stilul nou) function __construct($a = 1, $n = '', $e = '') {

$this->an = $a; $this->nume = $n; $this->email = $e;

} function __destruct() { // destructor

print '<p>L-am distrus pe ' . $this->nume . '!</p>'; }

}

php: obiecte

Page 36: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Programare obiectuala – PHP 5:// folosim introspectia// cream o instanta a clasei predefinite ReflectionClass$clasa = new ReflectionClass ('StudentDestept');// afisam informatii despre clasa specificataprintf("<p>Clasa <em>%s</em> extinde %s si

e declarata in fisierul <tt>%s</tt>.</p>", $clasa->getName(), var_export ($clasa->getParentClass(), 1), $clasa->getFileName()

);

php: obiecte

Page 37: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

baze de date

Organizarea si regasirea facila a informatiilor, conduc lastocarea acestora in baze de date (relationale)

Fiecare baza de date contine mai multe tabeleO tabela este structurata în coloane (cimpuri)si rânduri (înregistrari)

Fiecare cimp se desemnat de un nume si un tip de date (numeric, sir de caractere, data,...)

Pentru facilitarea cautarii/sortarii pot fi asociati siindecsi, conform valorilor unui/unor cimp(uri)

Intre tabelele unei baze de date se pot defini relatii

Page 38: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

baze de date

Ansamblul de aplicatii care realizeazamanagementul bazelor de date se numeste

sistem de baze de date relationalRelational DataBase Management System –RDBMS

DB2Informix

Microsoft SQL ServerMySQLOracle

PostgreSQL…

Page 39: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

baze de date

Operatiile asupra bazelor de date, tabelelor, valorilor inregistrarilor etc. se specifica

intr‐un limbaj declarativ:SQL (Structured Query Language)

Accesul la un server de gestiune a bazelor de datese realizeaza via un client

Page 40: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

MySQL

Arhitectura open sourceFoarte rapid, optimizat pentru acces la datewww.mysql.comLarg folosit in cadrul solutiilor de comert electronic (e.g., aplicatii Web de tip e­shop)

API‐uri disponibile in majoritatea limbajelorde programare (C, C++, Perl, PHP, Python,…)

Componente: server (mysqld) + client (e.g., mysql, PHPMyAdmin, script CGI, program PHP, servlet Java)

Manualul: http://dev.mysql.com/doc/mysql/en

Page 41: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

MySQL

Alte facilitati:Crearea “din zbor” de variabile ce pot fi ulterior refolosite in interogari

Replicarea datelorPaleta larga de functii, operatorisi structuri de control

Suport pentru triggers si clusters Multe altele

Page 42: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

MySQL

Accesul la server via un client in linie de comanda: mysql [ optiuni ] [ nume_baza_de_date ]

Optiuni uzuale:‐h masina (numele masinii/serverului)‐p [ parola ] (parola pentru autentificare)

‐u utilizator (numele utilizatorului)

Exemplu: mysql –u tux –p

Alte detalii: info mysql (in UNIX/Linux)

Page 43: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

MySQL: exemplu

(infoiasi)$ mysql –u tux –pEnter password: *******Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 7 to server version: 5.0.18-nt-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.mysql> use clienti;Reading table information for completion of table and column namesDatabase changed

Page 44: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

MySQL: exemplu

mysql> select nume, prenume from comenzi;+---------+---------+| nume | prenume |+---------+---------+| Savon | Buritin || Vigoniu | Bonzui || Nilla | Sapo || Lzian | Xi || Tin | Debre |+---------+---------+5 rows in set (0.01 sec)

Page 45: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

MySQL: exemplu

mysql> select nume from comenzi where id > 3;+-------+| nume |+-------+| Lzian || Tin |+-------+2 rows in set (0.11 sec)

Page 46: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

MySQL

Alte operatii uzuale:insertupdatedelete

create databasecreate tabledrop tablegrant

Page 47: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

MySQL: exemplu

mysql> create database studenti;Query OK, 1 row affected (0.00 sec)mysql> use studenti;Database changedmysql> create table note (

-> nume char (40),-> adresa char(40),-> grupa integer,-> nota integer not null);

Query OK, 0 rows affected (0.01 sec)mysql> insert into note values

-> ("Ping Uinix", "[email protected]",2, 10);

Query OK, 1 row affected (0.00 sec)

Am creat o baza de date, iar in cadrul ei o tabela.

Page 48: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

MySQL: exemplu

mysql> grant usage on studenti.* to tux@localhost;

Query OK, 0 rows affected (0.00 sec)mysql> grant select, insert, delete on studenti.* to tux@localhost;

Query OK, 0 rows affected (0.00 sec)

Am acordat permisiuni de utilizare a bazei de date.

Page 49: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

MySQL

Accesul la server via un client Web folosindaplicatia PHPMyAdmin

Instrument Web de management al serverului MySQL:crearea si invocare de interogari SQL,export/import in/din diverse formate,interfata atractiva in multe limbi etc.

www.phpmyadmin.net

Page 50: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Page 51: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

PHP ofera suport pentru o multitudinede servere/tehnologii de baze de date: 

MySQL – functiilemysql_*(), mysqli_*()PostgreSQL – functiile pg_*()SQLite – functiile sqlite_*()Oracle – functiile ora_*()ODBC (Open DataBase Connectivity) etc.

php: bd

Page 52: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Functii/metode pentru accesul la MySQL:Conectare la serverul MySQL: mysql_connect ()Selectare (utilizare) baza de date: mysql_select_db ()Executia unei interogari: mysql_query ()Raportare de erori: mysql_errno (),mysql_error ()Preluarea rezultatelor intr‐un tablou: 

mysql_fetch_array ()Multe altele…

php: bd

Page 53: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

php: bd

Page 54: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Pentru inceput, vom crea un cont MySQL care sa asigure acces autentificat din programele PHPasupra bazei de date students:(infoiasi)$ mysql –u root mysqlmysql> GRANT SELECT, INSERT, UPDATE, DELETE,

CREATE, DROP ON students.* TO 'tux'@'localhost' IDENTIFIED BY 'p@rola' WITH GRANT OPTION;

Query OK, 0 rows affected (0.11 sec)

php: bd – exemplu

Page 55: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Folosind mysql in linia de comanda sauPHPMyAdmin, cream tabela students cu structura:CREATE TABLE IF NOT EXISTS `students` (

`name` varchar(50) NOT NULL default '', `year` enum('1','2','3') NOT NULL default '1', `id` int(11) NOT NULL auto_increment, `age` smallint(2) unsigned zerofill NOT NULL default '00', PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1AUTO_INCREMENT=1;

php: bd – exemplu

Page 56: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Cream tabela

Page 57: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Generam structura

Page 58: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Confirmarea crearii

Page 59: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Eventual, inseram o inregistrare

Page 60: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

// conectarea la serverul MySQL$conexiune = mysql_connect ('localhost', 'tux', 'p@rola'); // deschidem baza de datemysql_select_db ('students', $conexiune) // formulam o interogare & o executam$sql = "select name, year from students where year = 2"; $interog = mysql_query ($sql, $conexiune); // salvam într-un tablou înregistrarile gasite$inreg = mysql_fetch_array ($interog); while ($inreg) { echo ('<p>Studentul ' . $inreg['name'] .

' este in anul ' . $inreg['year'] . '</p>'); $inreg = mysql_fetch_array ($interog);

} mysql_close ($conexiune);

php: bd – exemplu

Afisam numelestudentilordin anul 2

Page 61: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

php: bd – extensia mysqli

Scop: crearea unei extensii pentru acces facilsi flexibil la MySQL >4 din programele PHP5

Faciliteazamentalibilitatea codului,compatibilitatea cu API‐ul MySQL, abordarea procedurala sau orientata‐obiect

Vitezamai mare de procesare + securitateMetode importante: mysqli (), query (), prepare (), 

execute (), fetch (), fetch_assoc (), close () etc.Detalii la www.php.net/mysqli

Page 62: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

php: bd – extensia mysqli

// instantiem obiectul mysqli$mysql = new mysqli ('localhost', 'tux', 'p@rola', 'students'); if (mysqli_connect_errno()) { die ('Conexiunea a esuat...'; } // formulam o interogare si o executamif (!($rez = $mysql->query ('select name, year from students'))) {

die ('A survenit o eroare la interogare'); } echo ('<ol>'); while ($inreg = $rez->fetch_assoc()) {

echo ('<li>Studentul ' . $inreg['name'] . ' este in anul ' . $inreg['year'] . '</li>');

} echo ('</ol>'); // inchidem conexiunea cu serverul MySQL$mysql->close();

Page 63: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

SQLiteExtensie PHP pentru acces la biblioteca SQLite

Baza de date este stocata ca fisier obisnuit, fara a finecesara conectarea la un server de baze de date extern

Se ofera suport pentru interogari SQL

Detalii la http://sqlite.org/

Exista posibilitatea administrarii via PHPSQLiteAdmin:http://phpsqliteadmin.sourceforge.net

php: bd

Page 64: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

// deschidem o baza de date SQLite (daca nu exista, va fi creata)if (($bd = sqlite_open ('studenti', 0666, $er)) === FALSE) { die ($er); }// cream o tabela & inseram o inregistraresqlite_exec ('CREATE TABLE studs (name varchar(50), age smallint(2))',

$bd);sqlite_exec ("INSERT INTO studs VALUES ('…'," . rand(10, 90) . ')', $bd);// selectam studentii cu virste intre 20 si 50$rez = sqlite_query ('SELECT * FROM studs WHERE age < 50 and

age > 20 ORDER BY age desc', $bd);// afisam…while ($r = sqlite_fetch_array ($rez)) {

echo '<p>' . $r['name'] . ' are ' . $r['age'] . ' de ani.</p>'; }

php: bd – exemplu

Page 65: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Apache2Triad & XAMPP – medii pre‐configurate de dezvoltareWeb (Apache, PHP, MySQL,…)

PHPMyAdmin – aplicatie Web scrisa in PHP pentruadministrarea facila a bazelor de date MySQL

Smarty – faciliteaza realizarea de template‐uri de redarea continutului Web

PEAR (PHP Extension and Application Repository) – clase/module care extind functionalitatile PHP: http://pear.php.net/

instrumente

Page 66: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

PHP Designer – editor Web avansatZend Studio – platforma comerciala de dezvoltarea aplicatiilor PHP de anvergura

PHP plugin for Eclipse – extensie Eclipse facilitinddezvoltarea de cod PHP

instrumente

Page 67: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Zend Framework – http://framework.zend.com/Biblioteca open source de clase PHP5 focalizatapentru dezvoltareWeb de calitate

Exploatare facila, bazata pe oferirea de solutii: MVC, acces la baze de date, validare & filtrarea datelor de intrare, autentificare, controlulaccesului, management de sesiuni, caching etc.

PRADO – framework PHP5 permitind interactiuni Web conduse de evenimente in stilul .NET

JPSpan, Symfony & Xajax – framework‐uri AJAX

instrumente

Page 68: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

T. Anghel, Programarea in PHP, Polirom, 2005

S. Buraga (coord.), Aplicatii Web la cheie, Polirom, 2003

S. Buraga (coord.), Situri Web la cheie, Polirom, 2004

S. Buraga, Tehnologii XML, Polirom, 2006

L. Alboaie, S. Buraga, Servicii Web, Polirom, 2006

resurse

Page 69: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Situl PHP oficial: www.php.net/PHP Builder: www.phpbuilder.com/PHP Classes: www.phpclasses.org/

PHP Developer: www.phpdeveloper.org/PHP Freaks: www.phpfreaks.com/

Zend: www.zend.com/

resurse

Page 70: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

PHP (PHP: Hypertext Preprocessor)Evolutie

CaracterizareProgramare obiectuala in PHPInteractiunea cu utilizatorul

Prelucrarea bazelor de date in PHPInstrumente & resurse

rezumat

Page 71: Web - PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

??