Sunteți pe pagina 1din 87

Tehnologii Web

Dr. Sabin Buragawww.purl.org/net/busaco


Programare Web – supliment

PHP: o prezentare generala

detalii in [AW, 13-70, 237-246] [SWC, 357-361]


Dr. Sabin Buragawww.purl.org/net/busaco
“E mediocru ucenicul
care nu-si depaseste maestrul.”

Leonardo da Vinci
php: istoric

Dr. Sabin Buragawww.purl.org/net/busaco


Personal Home Page Tools
(1994-1995) – Rasmus Lerdorf
PHP/FI 2.0 (1995)
PHP 3 (1998) – incepe sa fie dezvoltat de Zend
Zeev Suraski & Andi Gutmans
PHP 4 (2000) – motor de procesare Zend
PHP 4.3 (2002-2003) – motor de procesare Zend 2.0
PHP 5 (2004) – multe facilitati inspirate din Java
PHP 6 (in dezvoltare)
php: caracterizare

Dr. Sabin Buragawww.purl.org/net/busaco


Server de aplicatii Web

ofera un limbaj de programare


de tip script, interpretat

poate fi inclus direct si in cadrul documentelor HTML


php: caracterizare

Dr. Sabin Buragawww.purl.org/net/busaco


Limbajul PHP este procedural, oferind suport si
pentru programarea orientata-obiect

sintaxa inspirata de C/C++, Perl si Java – case sensitive

paginile incluzind cod PHP au extensia .php


php: caracterizare

Dr. Sabin Buragawww.purl.org/net/busaco


Disponibil gratuit – open source – pentru
diverse platforme (UNIX/Linux, Windows, Mac OS X)
si servere Web: Apache, IIS, lighttpd,…
php: caracterizare

Dr. Sabin Buragawww.purl.org/net/busaco


Maniera de functionare a procesorului (engine-ului) PHP
php: caracterizare

Dr. Sabin Buragawww.purl.org/net/busaco


Faciliteaza interactiunea cu utilizatorul:
formulare Web, cookie-uri, sesiuni, integrare cu Apache

Suport pentru manipularea bazelor de date:


MySQL, ODBC, Oracle, PostgreSQL, SQLite,…

Procesarea continutului resurselor:


arhive, PDF, fisiere grafice, certificate digitale,…
php: caracterizare

Dr. Sabin Buragawww.purl.org/net/busaco


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

Faciliteaza dezvoltarea de servicii Web


prin SOAP/REST
php: caracterizare

Dr. Sabin Buragawww.purl.org/net/busaco


Pot fi incluse extensii (module) diverse

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

Dr. Sabin Buragawww.purl.org/net/busaco


Variabile create “din zbor”
Tipuri scalare: integer, double, boolean, string
Tipuri 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

Dr. Sabin Buragawww.purl.org/net/busaco


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

Dr. Sabin Buragawww.purl.org/net/busaco


<?php
// umplem un tablou cu valori de la 1 la 10
for ($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 browserului
echo ("<p>Suma de la 1 la 10 este: <em>" . $suma . "</em></p>");
?>
php: caracterizare

Dr. Sabin Buragawww.purl.org/net/busaco


Invocarea (rularea) programului PHP direct
din linia de comanda:
salvam codul intr-un fisier text .php – valori.php
apelam interpretorul PHP din linia de comanda
php: caracterizare

Dr. Sabin Buragawww.purl.org/net/busaco


Invocarea (rularea) programului PHP
folosind tehnologiile Web:
Plasam fisierul intr-un director al serverului Web
In navigator, indicam URL-ul catre program
pentru a-l invoca via HTTP

rezultatul generat
de script
php: caracterizare

Dr. Sabin Buragawww.purl.org/net/busaco


Constante predefinite: PHP_VERSION, CHAR_MAX,…

Operatori – ca si cei din limbajul C/Perl


(e.g., concatenarea sirurilor cu “.”)
php: caracterizare

Dr. Sabin Buragawww.purl.org/net/busaco


Functii definite de utilizator:

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


// corp…
} parametri cu
valori implicite
<?php
function patrat ($numar) { // functia de ridicare la patrat

Dr. Sabin Buragawww.purl.org/net/busaco


return $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 patratul


echo "<p>$numar la patrat este " . patrat ($numar) . "</p>";
} // final de while
?>
php: caracterizare

Dr. Sabin Buragawww.purl.org/net/busaco


Functii predefinite (built-in):
matematice & de conversie
de manipulare a sirurilor de caractere
de prelucrare a tablourilor
de acces la resurse si de lucru cu fisiere
de manipulare a bazelor de date
privitoare la conexiunile de retea
pentru accesarea resurselor XML, PDF, JPEG,...
specifice sistemului de operare
generale
php: caracterizare

Dr. Sabin Buragawww.purl.org/net/busaco


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

Dr. Sabin Buragawww.purl.org/net/busaco


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

Dr. Sabin Buragawww.purl.org/net/busaco


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

Dr. Sabin Buragawww.purl.org/net/busaco


Functii predefinite (built-in) – de manipulare
a caracterelor:
ctype_digit(), ctype_xdigit(), ctype_print(),
ctype_punct(), ctype_space(),…
ctype_alpha(), ctype_alnum(), ctype_lower(),
ctype_upper()
php: caracterizare

Dr. Sabin Buragawww.purl.org/net/busaco


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

Dr. Sabin Buragawww.purl.org/net/busaco


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

Dr. Sabin Buragawww.purl.org/net/busaco


Functii predefinite (built-in) – URL-uri:
urldecode(), urlencode(), parse_url()
base64_decode(), base64_encode()
php: caracterizare

Dr. Sabin Buragawww.purl.org/net/busaco


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: alte facilitati

Dr. Sabin Buragawww.purl.org/net/busaco


SPL (Standard PHP Library)

acces la metode standard de prelucrare a datelor


php: alte facilitati

Dr. Sabin Buragawww.purl.org/net/busaco


Rularea din linie de comanda
PHP CLI (Command Line Interface)
sau ca modul Apache – mod_php
php: alte facilitati

Dr. Sabin Buragawww.purl.org/net/busaco


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

Suport pentru Internet si Web:


FTP, HTTP, IMAP, LDAP, POP3, SNMP, SOAP etc.
php: interactiune web

Dr. Sabin Buragawww.purl.org/net/busaco


Datele transmite de client (browser) se regasesc
in 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

Dr. Sabin Buragawww.purl.org/net/busaco


Alte variabile globale utile:

$_SERVER[ ] – datele oferite de serverul Web


$_SERVER['PHP_SELF'] indica numele scriptului PHP

$_ENV[ ] – datele oferite de mediu (environment)

$_FILES[ ] – datele despre fisierele primite prin upload


php: interactiune web

Dr. Sabin Buragawww.purl.org/net/busaco


Formularul Web:
<form action="afiseaza.php" method="post">
<input type="text" name="nume" />
<input type="text" name="virsta" />
<input type="submit“ value="Trimite" />
</form>
php: interactiune web

Dr. Sabin Buragawww.purl.org/net/busaco


Formularul Web:
<form action="afiseaza.php" method="post">
<input type="text" name="nume" />
<input type="text" name="virsta" />
<input type="submit“ value="Trimite" />
</form>

Script-ul afiseaza.php:
<?php if (!$_REQUEST["nume"]) {
?>
<p class="eroare">Nu ati specificat numele!</p>
<?php } else {
echo ("Numele este" . $_REQUEST["nume"]);
}
?>
php: obiecte

Dr. Sabin Buragawww.purl.org/net/busaco


Programare obiectuala – incapsularea:
<?php
class Student { // specificarea unei clase
var $an;
Se pot accesa direct,
var $nume;
nefiind privati in PHP4
var $email;
// metode
function seteazaAn ($un_an) { $this->an = $un_an; }
function furnizeazaAn () { return $this->an; }
}
$stud = new Student; // instantierea unui obiect
?>
php: obiecte

Dr. Sabin Buragawww.purl.org/net/busaco


Programare obiectuala – mostenirea:
class StudentDestept extends Student {
var $note; // notele obtinute (data membru)
// metode
function 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

Dr. Sabin Buragawww.purl.org/net/busaco


Functii de manipulare a claselor si obiectelor
get_class() va returna numele unui obiect,
instanţă a unei clase
get_parent_class() furnizează clasa părinte
din care provine un anumit obiect
method_exists() testează dacă există o metodă
pentru un anumit obiect specificat
class_exists() testează existenţa unei clase
is_subclass_of() va determina existenţa
unei relaţii de moştenire dintre două clase
php: obiecte

Dr. Sabin Buragawww.purl.org/net/busaco


Programare obiectuala – PHP 5:

constructorii sunt numiti __construct()

destructorii sunt denumiti __destruct()


php: obiecte

Dr. Sabin Buragawww.purl.org/net/busaco


Programare obiectuala – PHP 5:

membrii pot fi
publici (public)
privati (private)
protejati (protected)
php: obiecte

Dr. Sabin Buragawww.purl.org/net/busaco


Programare obiectuala – PHP 5:

accesul la clasa parinte se face prin parent::


php: obiecte

Dr. Sabin Buragawww.purl.org/net/busaco


Programare obiectuala – PHP 5:

se permit clase/metode abstracte: abstract


php: obiecte

Dr. Sabin Buragawww.purl.org/net/busaco


Programare obiectuala – PHP 5:

obiectele pot fi “clonate” via clone

obiectele se pot compara folosind ===


php: obiecte

Dr. Sabin Buragawww.purl.org/net/busaco


Programare obiectuala – PHP 5:

pot fi declarate si interfete (in stilul Java)

se permite si introspectia via clasa Reflection


Programare obiectuala – PHP 5:

Dr. Sabin Buragawww.purl.org/net/busaco


class Student { // clasa privitoare la un student
private $an; // date-membru (private/publice)
public $nume;
public $email;
// constructor
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>';
}
}
Dr. Sabin Buragawww.purl.org/net/busaco
Programare obiectuala – PHP 5:
// folosim introspectia
// cream o instanta a clasei predefinite ReflectionClass
$clasa = new ReflectionClass ('StudentDestept');
// afisam informatii despre clasa specificata
printf ("<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 ()
);
baze de date

Dr. Sabin Buragawww.purl.org/net/busaco


Organizarea si regasirea facila a informatiilor, conduc la
stocarea acestora in baze de date (relationale)
Fiecare baza de date contine mai multe tabele
O 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 si
indecsi, conform valorilor unui/unor cimp(uri)
Intre tabelele unei baze de date se pot defini relatii
baze de date

Dr. Sabin Buragawww.purl.org/net/busaco


Ansamblul de aplicatii care realizeaza
managementul bazelor de date se numeste
sistem de baze de date relational
Relational DataBase Management System –RDBMS

DB2
Microsoft SQL Server
MySQL
Oracle
PostgreSQL

baze de date

Dr. Sabin Buragawww.purl.org/net/busaco


Operatiile asupra bazelor de date, tabelelor,
valorilor inregistrarilor etc. se specifica
intr-un limbaj declarativ:
SQL (Structured Query Language)
baze de date

Dr. Sabin Buragawww.purl.org/net/busaco


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 date


se realizeaza via un client
MySQL

Dr. Sabin Buragawww.purl.org/net/busaco


Arhitectura open source

Foarte rapid, optimizat pentru acces la date

www.mysql.com

Larg folosit in cadrul solutiilor de comert electronic


(e.g., aplicatii Web de tip e-shop)
si software de tip CMS (Content Management System)
MySQL

Dr. Sabin Buragawww.purl.org/net/busaco


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

API-uri disponibile in majoritatea limbajelor


de programare (C, C++, Perl, PHP, Python,…)

Documentatii:
http://dev.mysql.com/doc/mysql/en
MySQL

Dr. Sabin Buragawww.purl.org/net/busaco


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

replicarea datelor

paleta larga de functii, operatori si structuri de control

suport pentru triggers si clusters

…multe altele
MySQL

Dr. Sabin Buragawww.purl.org/net/busaco


Accesul la server via un client in linie de comanda:

mysql [ optiuni ] [ nume_baza_de_date ]


MySQL

Dr. Sabin Buragawww.purl.org/net/busaco


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


MySQL: exemplu

Dr. Sabin Buragawww.purl.org/net/busaco


(infoiasi)$ mysql –u tux –p
Enter 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 names
Database changed
MySQL: exemplu

Dr. Sabin Buragawww.purl.org/net/busaco


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)
MySQL: exemplu

Dr. Sabin Buragawww.purl.org/net/busaco


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

Dr. Sabin Buragawww.purl.org/net/busaco


Alte operatii uzuale:
insert
update
delete
create database
create table
drop table
grant
MySQL: exemplu

Dr. Sabin Buragawww.purl.org/net/busaco


mysql> create database studenti;
Query OK, 1 row affected (0.00 sec)
mysql> use studenti;
Database changed
mysql> 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", "tux@pinguin.info",
2, 10);
Query OK, 1 row affected (0.00 sec)

am creat o baza de date, iar in cadrul ei o tabela


MySQL: exemplu

Dr. Sabin Buragawww.purl.org/net/busaco


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


MySQL

Dr. Sabin Buragawww.purl.org/net/busaco


Accesul la server via un client Web folosind
aplicatia 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
Dr. Sabin Buragawww.purl.org/net/busaco
php: bd

Dr. Sabin Buragawww.purl.org/net/busaco


PHP ofera suport pentru o multitudine
de servere/tehnologii de baze de date:
MySQL – functiile mysql_*(), mysqli_*()
PostgreSQL – functiile pg_*()
SQLite – functiile sqlite_*()
Oracle – functiile ora_*()
ODBC (Open DataBase Connectivity)
etc.
php: bd

Dr. Sabin Buragawww.purl.org/net/busaco


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

Dr. Sabin Buragawww.purl.org/net/busaco


php: bd – exemplu

Dr. Sabin Buragawww.purl.org/net/busaco


Pentru inceput, vom crea un cont MySQL care
sa asigure acces autentificat din programele PHP
asupra bazei de date students:
(infoiasi)$ mysql –u root mysql
mysql> 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

Dr. Sabin Buragawww.purl.org/net/busaco


Folosind mysql in linia de comanda sau
PHPMyAdmin, 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=latin1
AUTO_INCREMENT=1;
cream tabela

Dr. Sabin Buragawww.purl.org/net/busaco


generam
structura

Dr. Sabin Buragawww.purl.org/net/busaco


crearii
confirmarea

Dr. Sabin Buragawww.purl.org/net/busaco


eventual,
inseram o
inregistrare

Dr. Sabin Buragawww.purl.org/net/busaco


// conectarea la serverul MySQL
$conexiune = mysql_connect ('localhost', 'tux', 'p@rola');

Dr. Sabin Buragawww.purl.org/net/busaco


// deschidem baza de date
mysql_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); afisam numele
while ($inreg) { studentilor
echo ('<p>Studentul ' . $inreg['name'] . din anul 2
' este in anul ' . $inreg['year'] . '</p>');
$inreg = mysql_fetch_array ($interog);
}
mysql_close ($conexiune);
php: bd – extensia mysqli

Dr. Sabin Buragawww.purl.org/net/busaco


Scop: acces usor si flexibil la MySQL >4
din programele PHP5

faciliteaza mentalibilitatea codului

compatibilitate cu API-ul MySQL

detalii la www.php.net/mysqli
php: bd – extensia mysqli

Dr. Sabin Buragawww.purl.org/net/busaco


Abordare procedurala sau orientata-obiect

Viteza mai mare de procesare + securitate

Metode importante:
initierea unei conexiuni cu serverul MySQL – mysqli ( )
interogari SQL – query ( ), prepare ( ), execute ( )
procesarea raspunsului – fetch ( ), fetch_assoc ( )
inchiderea conexiunii – close ( )
etc.
php: bd – extensia mysqli

Dr. Sabin Buragawww.purl.org/net/busaco


// instantiem obiectul mysqli
$mysql = new mysqli ('localhost', 'tux', 'p@rola', 'students');
if (mysqli_connect_errno ()) {
die ('Conexiunea a esuat...');
}

// formulam o interogare si o executam


if (!($rez = $mysql->query ('select name, year from students'))) {
die ('A survenit o eroare la interogare');
}
php: bd – extensia mysqli

Dr. Sabin Buragawww.purl.org/net/busaco


// generam o lista numerotata cu datele despre studenti
// (cod HTML)
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 ();
php: bd

Dr. Sabin Buragawww.purl.org/net/busaco


SQLite
Extensie PHP pentru acces la biblioteca SQLite
baza de date este stocata ca fisier obisnuit,
fara a fi necesara conectarea la un server de baze de date
extern se ofera suport pentru interogari SQL

http://sqlite.org/

exista posibilitatea administrarii via PHPSQLiteAdmin:


http://phpsqliteadmin.sourceforge.net
php: bd – exemplu

Dr. Sabin Buragawww.purl.org/net/busaco


// 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 inregistrare
sqlite_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>';
}
instrumente

Dr. Sabin Buragawww.purl.org/net/busaco


XAMPP – mediu pre-configurat de dezvoltare Web
(Apache, PHP, MySQL,…)

PHPMyAdmin – aplicatie Web scrisa in PHP


pentru administrarea facila a bazelor de date MySQL

Smarty – faciliteaza realizarea de template-uri


de redare a continutului Web – http://smarty.php.net/
instrumente

Dr. Sabin Buragawww.purl.org/net/busaco


PEAR (PHP Extension and Application Repository)
clase/module care extind functionalitatile PHP

http://pear.php.net/

e.g.: Image_Barcode, Net_URL, Text_CAPTCHA, XML_RSS,...


instrumente

Dr. Sabin Buragawww.purl.org/net/busaco


PHP plugin for Aptana Studio/Eclipse
extensie Aptana Studio/Eclipse
facilitind scrierea de cod PHP

Zend Studio
platforma comerciala de dezvoltare
a aplicatiilor PHP de anvergura
instrumente

Dr. Sabin Buragawww.purl.org/net/busaco


Zend Framework
biblioteca open source de clase PHP5
focalizata pentru dezvoltare Web de calitate

exploatare facila, bazata pe oferirea de solutii:


MVC, acces la baze de date,
validare & filtrare a datelor de intrare, autentificare,
controlul accesului, management de sesiuni, caching etc.

http://framework.zend.com/
instrumente

Dr. Sabin Buragawww.purl.org/net/busaco


CakePHP, CodeIgniter, Symfony
framework-uri reprezentative – incurajeaza MVC

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

JPSpan & Xajax


alte framework-uri – focalizate spre Ajax
resurse

Dr. Sabin Buragawww.purl.org/net/busaco


T. Anghel, Programarea in PHP, Polirom, 2005

S. Buraga, Tehnologii XML, Polirom, 2006

K. McArthur, Pro PHP:


Patterns, Frameworks, Testing and More, Apress, 2008

L. Ullman, PHP 6 and MySQL 5 for Dynamic Web Sites,


Peachpit Press, 2008

M. Zandstra, PHP Objects, Patterns, and Practice


(2nd Edition), Apress, 2008
resurse

Dr. Sabin Buragawww.purl.org/net/busaco


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/
rezumat

Programare Web in PHP

Dr. Sabin Buragawww.purl.org/net/busaco


?

Dr. Sabin Buragawww.purl.org/net/busaco

S-ar putea să vă placă și