Sunteți pe pagina 1din 131

MANUELA CARPEN * ROXANA ASANDULUI * MIHAIELA TUNEA

CARMEN-AFRODITA GIOCAȘ * CERASELA-DANIELA CARDAȘ

PHP

GHID DE PROGRAMARE WEB

PENTRU ÎNCEPĂTORI

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Carte elaborată în cadrul proiectului Erasmus + Acquisition of professional web programming skills for

an earlier integration in the labor marketnr. ref. 2015-

1-RO01-A102-014297.

Colaboratori:

Conținuturi capitolele 1, 2 : Ralph-Müller Lucanus

Conținuturi capitolul 3 : Mihaela-Liliana Prăjinariu

Conținuturi capitolul 4 : Vlad Batalan Copertă : Andra-Mălina Cardaș

2

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Cuprins

1. Introducere

5

Ce este PHP?

5

De ce să alegi programare în PHP?

6

2. Programarea web în limbajul PHP

16

Elemente de sintaxă ale limbajului

PHP

16

Variabile PHP

18

Crearea (declararea ) variabilelor PHP

18

Variabile de ieșire

19

Domeniul de vizibilitate al variabilelor

20

Domeniul Global și Local

20

Specificatorul global

21

Instrucțiunile echo și print

22

Stringuri PHP

23

Constante PHP

23

Operatori PHP

24

Structuri de control

24

Instrucțiuni de decizie

24

Instrucțiuni de ciclare în PHP

25

Funcții PHP

25

Funcții definite de utilizator în limbajul PHP

25

Tablouri PHP

26

Sortarea tablourilor

27

Variabile globale și superglobale în PHP

27

Gestionarea formularelor în PHP

27

Formulare HTML simple

28

3

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

 

Metoda

HTTP

POST

și

variabila

superglobală

$_POST

28

 

GET versus POST

 

29

Validarea datelor din formulare

30

Câmpuri obligatorii în formulare PHP

32

Afișarea

mesajelor

de

eroare

la completarea

câmpurilor unui formular

 

33

Cookies în limbajul PHP

34

Crearea unui cookie în PHP

 

34

Sesiuni

35

Deschiderea unei sesiuni PHP

36

Obținerea valorilor variabilelor sesiune

36

Baze de date

39

Ce reprezintă MySQL?

 

40

Exemple de scripturi care utili zează MySQLi

41

PhpMyAdmin

 

50

Etapele creării unei baze de date MySQL

51

Gestionarea fișierelor pe server

 

51

3. Fișe de lucru

60

4. Crearea unui website dinamic utilizând PHP

79

Webografie

131

4

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

1. Introducere

Limbajele

HTML ( Hyper Text Markup Language) pentru definirea conținuturilor paginilor web

CSS ( Cascading Style Sheets)- pentru definirea aspectului paginilor web

JavaScript- pentru programarea evenimentelor din paginile web, pentru a adăuga interactivitate paginilor web Tutoriale :

pe care se bazează PHP sunt :

HTML Tutorial

[http://www.w3schools.com/cssref/default.asp]

CSS Reference

[http://www.w3schools.com/cssref/default.asp]

JavaScript Reference

[http://www.w3schools.com/jsref/default.asp]

Alte resurse utile:

Ce este PHP?

… un acronim pentru “PHP: Hypertext Preprocessor”

un limbaj de programare open-source, cu o largă răspândire în domeniul IT

… gratis pentru a fi descărcat și utilizat

De ce este un limbaj atât de atractiv și popular?

pentru că este suficient de puternic pentru a fi în centrul celui mai mare sistem de blogging pe web (WordPress)!

pentru că este suficient de complex pentru a rula cea mai mare rețea socială (Facebook)!

de asemenea, este destul de ușor să fii un programator începător de server-side!

PHP

Fișierele PHP pot conține text, coduri HTML, CSS, JavaScript și coduri PHP

codurile PHP sunt executate pe server, iar rezult atul este returnat în browser ca un cod HTML simplu

Fișierele PHP au extensia ".php"

5

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Vă prezentăm un exemplu de cod PHP (introduction.php)

<!DOCTYPE html> <html> <body> <?php echo "My first PHP script!"; ?> </body> </html>

Ce avem de făcut? Server side:

La început pornim serverul web (localhost).

Apoi scriem codul de mai sus într-un editor de text, cum ar fi Notepad++ .

Salvăm fișierul cu numele „introduction.php“ în directorul „C:/xampp/htdocs“.

Client side:

După

salvarea fișierului îl deschidem în browser

(http://localhost/introduction.php) și analizăm conținutul paginii web afișate în browser.

se pot realiza următoarele operații:

generare de pagini cu conținut dinamic creare, deschidere, citire, scriere, ștergere și închidere de

În PHP

fișiere de pe server colectarea datelor din formulare trimiterea și primirea cookie-urilor

adăugarea,

ștergerea, actualizarea datelor din baza de date

controlul accesului utilizatorilor criptarea datelor PHP nu te limitează în privința obiectelor afișate prin pagini web: pot fi afișate imagini, fișiere PDF, video Flash, texte XHTML sau XML.

De ce să alegi programare în PHP?

PHP rulează pe diferite platforme (Windows, Linux, Unix, Mac OS X, etc.)

PHP este compatibil cu aproape toate serverele utilizate în prezent (Apache, IIS etc.)

PHP suportă o gamă largă de baze de date

6

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

PHP

www.php.net

este

gratuit.

Descărcați-l

din

resursa

oficială

PHP:

PHP este ușor de învățat și rulează eficient pe partea de server

De ce anume avem nevoie? Pentru a începe să utilizați PHP, parcurgeți pașii de mai jos:

Identificați o gazdă web PHP gazdă și suport MySQL

Instalați un server web pe propriul PC, apoi instalați PHP și MySQL

Urmați instrucțiunile de instalare de pe situl oficial http://php.net/manual/en/install.php

De ce avem cu adevărat nevoie în acest curs?

Un server web XAMPP ( Apache), un interpretor PHP și un SBGD (MySQL)

Un editor de text

Un browser (Firefox)

(Notepad++)

În cadrul acestui seminar, vom configura PHP pe propriul PC prin utilizarea XAMPP (inclusiv Apache și PHP, MySQL).

Site-ul oficial PHP (PHP.net) are instrucțiuni de instalare pentru PHP:

http://php.net/manual/en/install.php

Exemplul următor evidențiază modul în care PHP lucrează cu HTML, CSS și JavaScript:

Ce vom realiza?

vom crea un fișier *.php dintr-un fișier *.html deja existent

vom adăuga stiluri utilizând CSS

vom adăuga/include pagini dinamice (fișiere *.php)

vom inc lude un subsol, conținut ș i un me n iu de navigare în paginile web.

Fișierele

basis.html

și

basis.css

au

fost

create

și

au

următorul

conținut:

basis.css

*

{

margin: 0px;

padding: 0px;

}

body { font-size: 12pt;

7

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

font-family: Verdana,Arial,sans-serif;

}

/* General fonts

ul, li { margin-top: 0px; list-style-type: none;

*/

}

p

{ font-family: Verdana,Arial,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: normal; padding: 0px;

}

h1 { font: 1.25em Verdana,Arial,sans-serif; font-weight: bold; padding-bottom: 10px;

}

h2 { font: 1.25em Verdana,Arial,sans-serif;

font-weight: bold; padding-bottom: 10px; color: red;

}

h3 { font: 1.25em Verdana,Arial,sans-serif; font-weight: bold; padding-bottom: 10px;

}

img {

border: none;

}

/* Container */ #container { width: 970px; margin-top: 20px; margin-right: auto; margin-bottom: auto; margin-left: auto;

}

8

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

/* Header Components */ #header { border: 1px solid #999999; width: 970px; height: 115px;

}

/*

Logo

*/

#logo {

float: left;

}

/* Slogan

#slogan { position: absolute; width: auto; height: 30px; margin-top: 20px; margin-left: 280px; font-size: 2.3em; font-weight: bold;

*/

}

/* Search bar

*/

#search { float: right; margin-top: 30px; clear: right; font-size: 0.8em;

}

/* Rootline

*/

#rootline { font: normal 10px Verdana,Arial,sans-serif; padding-top: 5px; padding-bottom: 0px;

margin-left: 0px;

}

/*

Left part

*/

#left { float: left; min-height: 590px; padding-bottom: 0px; padding-top: 0px;

position: relative;

9

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

width: 200px; border: 1px solid #999999; margin-top: 10px; font-size: 1.1em;

}

/* Language

*/

#languages { padding-top: 5px; padding-left: 16px; padding-bottom: 20px;

}

/* Meniu stanga

#left-menu { text-align: left; margin-top: 40px; list-style-type: none; margin-left: 8px;

}

#left-menu a { text-decoration: none;

}

#left-menu a:hover {

*/

color: #666;

}

/*

The main part of the page

*/

#middle { float: left; height: 580px; margin-left: 10px; width: 520px; border: 1px solid #999999; margin-top: 10px; padding: 5px 5px 5px 10px; overflow: auto;

}

/*

Right

*/

#right { width: 202px; padding-top: 5px; padding-left: 5px; padding-right: 5px; padding-bottom: 0px;

10

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

min-height: 585px; float: right; text-align: left; font-weight: normal; font-family: Verdana,Arial,sans-serif; border: 1px solid #999999; margin-top: 10px; position: relative; font-size: 0.8em;

}

/* Footer

*/

#footer { position: relative; top: 15px; font-family: Verdana,Arial,sans-serif;

clear: both; text-align: right; color: #333; height: 25px; width: 970px; text-decoration: none; border: 1px solid #999999; font-size: 0.9em; padding-top: 5px; }

basis.html

<html>

<head> <link rel="stylesheet" type="text/css" href="css/basis.css"> </head>

<body> <div id="container">

<div id="header"> <div id="logo">###LOGO###</div> <div id="slogan">###SLOGAN###</div> <div id="search">###SEARCH###</div> </div>

<div id="rootline">###ROOTLINE###</div>

<div id="left">

11

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

<div id="languages">###LANGUAGES###</div> <div id="left-menu">###LEFT-MENU###</div>

<div

id="motto">###MOTTO### </div>

</div>

<div id="middle"> ###MIDDLE###</div>

<div id="right"> ###RIGHT### <div id="topnews">###TOPNEWS###</div> </div>

<div id="footer"> ###FOOTER### </div>

</div>

</body>

</html>

12

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Primii pași:

Creați un nou folder în directorul "C: / xampp /" (denumit

"day_1")

Copiați "basis.html" cu numele "basis.php" în directorul "C: / xampp / htdocs / day_1"

Creați un folder denumit "css" în "C: / xampp / htdocs / day_1" și copiați "basis.ccs" în "C: / xampp / htdocs / day_1 / css"

Creați fișierele pe care le veți include în fișierul .php (Footer, Content, Navigation)

Pentru a include fișierele în "basis.php", utilizați instrucțiunea include. Pentru o organizare optimă a fișierelor pe disc vă propunem următoarea structură de directoare și fișiere :

propunem următoarea structură de directoare și fișiere : Figura de mai jos evidențiază ce se întâmplă

Figura de mai jos evidențiază ce se întâmplă la execuția pe server a fișierului basis.php:

13

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI Ce este World Wide Web (www) ? • Termenul

Ce este World Wide Web (www) ?

Termenul World Wide Web este un sistem de documente și informații de tip hipertext legate între ele care pot fi accesate prin rețeaua mondială de Internet. Documentele, care rezidă în diferite locații pe diverse calculatoare server, pot fi regăsite cu ajutorul unui identificator univoc numit URI. Hipertextul inclusiv imagini etc. este afișat cu ajutorul unui program de navigare în web numit browser, care descarcă paginile web de pe un server web și le afișează pe un terminal „client” la utilizator.

Toate calculatoarele folosesc un protocol de comunicare numit HTTP

calculatoarele folosesc un protocol de comunicare numit HTTP Cum funcționează www? • Informațiile web sunt stoc

Cum funcționează www?

Informațiile web sunt stocate în documente numite pagini web

Web

Paginile

sunt

fișiere

stocate pe

computere

numite

servere web

Calculatoarele care

14

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

”citesc” paginile web sunt numite clienți web

Clienții web vizualizează paginile cu un program numit browser web

Cele mai populare browsere sunt Google Chrome, Firefox și Internet Explorer

brow sere sunt Google Chrome, Firefox și Internet Explorer sursa imaginii: Wikipedia Figura de mai s

sursa imaginii: Wikipedia Figura de mai s us evidențiază comunicarea ”statică” în www.

Interpretorul PHP acționează ca o extensie a serverului web care

este invocată

de ori câte

ori

o

pagina

PHP

este

accesată(imaginea din dreapta ).

Această componentă procesează codul-sursa din pagină și apoi transmite rezultatul înapoi la web-server, ajungând în final în browserele utilizatorilor.

Modul

interpretorului PHP este ilustrat de figura din dreapta și de figura din pagina următoare :

al

de

funcționare

interpretorului PHP este ilustrat de figura din dreapta ș i de figura din pagina urm ă

15

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2. P rogramarea web în limbajul PHP Elemente de

2. Programarea web în limbajul PHP

Elemente de sintaxă ale limbajului PHP

Un script PHP poate fi plasat oriunde în interiorul unui fișier HTML. Scriptul PHP începe cu <?php și se termină cu ?>:

<?php // cod scris în PHP ?>

Extensia predefinită a unui fișier PHP este " .php". În mod obișnuit , un fișier PHP conține taguri HTML și instrucțiuni de cod PHP.

<!DOCTYPE html> <html> <body> <h1>My first PHP page</h1> <?php echo "Hello World!"; ?>

</body>

</html>

Notă : Instrucțiunile PHP se încheie cu simbolul ”;”.

Comentarii Un comentariu în cod PHP e ste o linie care nu este citită / executată ca parte a programului. Singurul său scop este de a fi citit de către cineva care analizează codul. Comentariile pot fi folosite pentru:

16

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Alte persoane să înțeleagă scopul în care au fost scrise anumite linii de cod

Autorul codului/ programatorul să își poată aminti de ce a scris respectivele instrucțiuni. Cei mai mulți programatori trăiesc experiența de a reveni la propria lor munc ă un an sau doi mai târziu și de a constata că au uitat de ce au scris anumite linii de cod .

Există mai multe posibilități de a realiza comentarii în PHP:

<!DOCTYPE html>

<html>

<body>

<?php // Acesta este un comentariu uni-linie # Acesta este de asemenea un comentariu uni-linie /* Acesta este format din mai multe linii de comentariu bloc care se întinde pe mai multe linii */ // Comentariile pot fi folosite pentru a ”anula” //anumite secvențe de cod $x = 5 /* + 15 */ + 5; echo $x; ?>

</body>

</html>

Case-sensitivity în PHP În PHP, toate cuvintele cheie (de exemplu if, else, while, echo, etc.), clase, funcții și funcții definite de utilizator nu sunt sensibile la scrierea cu litere mici sau cu litere mari. În exemplul de mai jos, cele 3 instrucțiuni echo sunt corecte (și echivalente, ca rezultat):

Exemplu:

<!DOCTYPE html> <html> <body> <?php ECHO "Hello World!<br>"; echo "Hello World!<br>"; EcHo "Hello World!<br>"; ?> </body> </html>

Cu toate acestea, identificatorii de variabile sunt case -sensitive .

17

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

În exemplul de mai jos doar prima instrucțiune va afișa valoarea variabilei $color, deoarece $color, $COLOR și $coLOR sunt tratate ca variabile distincte.

Exemplu:

<!DOCTYPE html> <html> <body> <?php $color = "red"; echo "My car is " . $color . "<br>"; echo "My house is " . $COLOR . "<br>"; echo "My boat is " . $coLOR . "<br>"; ?> </body> </html>

Notă: Identificatorii

de variabile sunt case -sensitive.

Variabile PHP

Variabilele reprezintă ”containere” pentru memorarea informațiilor.

Crearea (declararea ) variabilelor PHP În PHP, un identificator de variabilă începe cu simbolul $, urmat de numele propriu-zis al variabilei:

Exemplu:

<?php $txt = "Hello world!"; $x = 5; $y = 10.5; ?>

După execuția instrucțiunilor de mai sus, variabila $txt va memora valoarea Hello world!, variabila $x va memora valoarea 5, iar variabila $y va memora valoarea 10.5. Notă: La atribuirea unei valori de tip șir de caractere, valoarea trebuie încadrată între ghilimele.

Spre deosebire de alte limbaje de programare, în PHP nu există o instrucțiune de declarare a variabilelor. Aceasta este creată în momentul în care i se atribuie prima valoare.

Tratați variabilele ca și containere pentru stocarea informațiilor!

18

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Un identificator de variabilă poate fi scurt(x sau y) sau poate fi descriptiv(age, carname, total_volume).

Reguli pentru identificatorii de variabile PHP:

Identificatorul variabilei începe cu simbolul $, urmat de numele variabilei

literă sau cu

Numele variabilei

trebuie

înceapă

cu

o

simbolul ”_”

Numele variabilei

nu poate să înceapă cu o cifră

Numele variabilei poate conține doar caractere alfa-numerice (A -z, 0-9) și simbolul ”_”

Numele de variabile sunt case-sensitive ($age și $AGE reprezintă variabile distincte)

Variabile de ieșire Instrucțiunea echo este adesea utilizată pentru a afișa date pe ecran. Următorul exemplu evidențiază modul în care se va afișa un text și valoarea unei variabile pe ecran:

<?php $txt = "PHP-Schools"; echo "I love $txt!"; ?>

Următorul exemplu produce același rezultat ca exemplul anterior:

<?php $txt = "PHP-Schools"; echo "I love " . $txt . "!"; ?>

Exemplul de mai jos va afișa suma valorilor stocate în 2 variabile x și y:

<?php $x = 5; $y = 4; echo $x + $y; ?>

Mai

multe

informații

găsiți

la

adresa:

În limbajul PHP tipurile de date nu sunt foarte clar utilizate!

Limbajul PHP nu necesită declararea tipurilor de date. În exemplul de mai sus, observați că variabilele x și y nu au fost

declarate înaintea utilizării lor, nu acestor variabile.

au

fost asociate tipuri de date

19

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

PHP convertește automat variabila la tipul corect de date, în

funcție

În alte limbaje, cum ar fi C, C++ și Java, programat orii trebuie să

declare numele și tipul de date al variabilei înainte de a o utiliza. PHP suportă următoarele tipuri de date:

de valoarea care i -a fost atribuită.

String

Integer

Float

Boolean

Array

Object

Null

Resource

În PHP, funcția var_dump() returnează tipul de date și valoarea unei

variabile:

<?php $x = 5985; var_dump(); ?>

link-ul:

Domeniul de vizibilitate al variabilelor În PHP, variabilele pot fi declarate oriunde în interiorul scriptului. Domeniul de vizibilitate al unei variabile este zona din script în care variabila poate fi referită / utilizată. În PHP există trei domenii distincte de vizibilitate a variabilelor:

Pentru

mai

multe

informații,

accesați

Local | Static (în interiorul unei funcții)

Global

( în afara unei funcții)

Super Global

(toate domeniile)

Domeniul Global și Local

O variabilă

vizibilitate GLOBAL și poate fi accesată doar în afara unei funcții:

domeniu

declarată

în

afara

unei

funcții

are

un

de

<?php $x = 5; // domeniu gl obal function myTest() { // utilizarea variabilei x în interiorul funcției va genera eroare echo "<p>Variable x inside function is: $x</p>";

}

20

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

myTest(); echo "<p>Variable x outside function is: $x</p>"; ?>

O variabilă declarată în cadrul unei funcții are un domeniu de vizibilitate LOCAL și poate fi accesată numai în această funcție:

<?php function myTest() { $x = 5; // domeniu local echo "<p>Variable x inside function is:$x </p>";

}

myTest(); // utilizarea variabilei x în a fara funcției va genera eroare echo "<p>Variable x outside function is:$x</p>"; ?>

Notă: Puteți avea variabile locale cu același nume, în diferite funcții, deoarece variabilele locale sunt recunoscute numai de funcția în care acestea sunt declarate.

Specificatorul global

Specificatorul global este utilizat pentru a accesa o variabilă globală din cadrul unei funcții. Pentru a realiza acest lucru, utilizați specificatorul global înaintea variabilei (în interiorul funcției):

<?php $x = 5; $y = 10;

function myTest() { global $x, $y; $y = $x + $y;

}

myTest(); echo $y; // afișează 15 ?>

PHP stochează, de asemenea, toate variabilele globale într-o matrice numita $GLOBALS [index]. Indicele are numele variabilei. De asemenea, această matrice este accesibilă din funcții și poate fi utilizată pentru a actualiza în mod direct variabilele globale.

<?php $x = 5;

21

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

$y = 10;

function myTest() { $GLOBALS['y'] = $GLOBALS['x']+$GLOBALS['y'];

}

myTest(); echo $y; // outputs 15 ?>

În mod normal, atunci când o funcție este executată, toate variabilele sale sunt șterse. Cu toate acestea, uneori, ne dorim ca o variabilă locală să NU fie eliminată pentru a o utiliza într-o altă secvență de instrucțiuni. Pentru a nu fi eliminată din memorie se utilizează specificatorul static la prima declarare a variabilei:

<?php function myTest() { static $x = 0; echo $x; $x++;

}

myTest();

myTest();

myTest();

?>

Apoi, de fiecare dată când funcția este apelată, acea variabilă va memora în continuare informațiile pe care le conținea la u ltimul apel. Notă: Variabila este locală funcției.

Instrucțiunile echo și print În PHP există două moduri de bază pentru afișare: echo și print. Instrucțiunile echo și print sunt mai mult sau mai puțin asemănătoare. Ambele sunt utilizate pentru afișarea datelor pe ecran. Diferențele care pot fi semnalate sunt:

echo nu returnează nici o valoare, în timp ce print returnează 1, astfel încât poate fi utilizată în cadrul expresiilor.

echo poate avea parametri multipli (mai rar), în timp ce print are un parametru unic.

echo este o instrucțiune relativ mai rapidă decât print.

22

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Pentru

Stringuri PHP

Un string reprezintă un șir de caractere, cum ar fi “Hello World!“.

Funcții PHP specifice lucrului cu șiruri de caractere:

mai

multe

informații,

accesați

link-ul:

Lungimea unui șir de caractere: funcția strlen() returnează numărul de caractere al unui string. Exemplu:

<?php echo strlen(“Hello World!“); // afișează 12 ?>

Numărul de cuvinte al unui ș ir de caractere: Funcția str_word_count() returnează numărul de cuvinte al stringului primit ca parametru

Inversarea unui ș ir de caractere: Funcția PHP strrev() inversează stringul.

Căutarea unui text specific din cadrul unui șir: Funcția

strpos () caută un text specific într-un șir de caractere.

Înlocuirea unui subșir într-un șir: Funcția PHP str_replace() înlocuiește unele caractere cu alte caractere dintr-un șir de caractere.

http://www.

Pentru mai multe informații, accesați link-ul:

w3schools.com/ php/ php_ref_string.asp

Constante PHP

O constantă este un identificator (nume) pentru o valoare simplă. Valoarea nu poate fi modificată în timpul execuției scriptului. Un identificator valid de constantă începe cu o literă sau cu simbolul ”_” (nu se utilizează simbolul $). Notă: Spre deosebire de variabile, constantele sunt vizibile global în cadrul scriptului. Pentru crearea unei constante se utilizează funcția define(). Modul de utilizare a funcției define():

define(nume, valoare, case-insensitive) Parametrii funcției și semnificația acestora:

nume: specifică numele constantei

valoarea: specifică valoarea constantei

23

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

case-insensitive: specifică dacă numele constantei este sau nu sensibilă la scrierea cu majuscule. Implicit acest parametru are valoarea fals.

În

exemplul

de

mai

jos

se

creează

constanta GREETING,

case-

insensitive :

 

<?php define("GREETING","Welcome to alfatraining!", true); echo GREETING; ?>

Operatori PHP

Operatorii sunt utilizați pentru a realiza diferite operații cu variabile și valori constante. Operatorii în limbajul PHP se clasifică astfel:

Operatori aritmetici (+, -, *, /, %, **)

Operatori de atribuire (=, +=, -=, *=, /=, %=)

Operatori relaționali (==, ===, !=, <>, !==, >, <, >=, <=)

Operatori de incrementare/decrementare (++$x, $x++, --$x, $x--)

Operatori logici (and, or, xor, &&, |, !)

Operatori pe stringuri (., .=)

Operatori pe tablouri (+, ==, ===, !=, <>, !==)

multe

Pentru

mai

informații

accesați

linkul:

Structuri de control

Instrucțiuni de decizie

Instrucțiunile condiționale (de decizie) sunt utilizate pentru a executa anumite acțiuni bazate pe condiții. Foarte des atunci când scriem cod, dorim să efectuăm acțiuni diferite pentru diferite condiții. În PHP există următoarele instrucțiuni de decizie:

if – execută o secvență de cod dacă o condiție logică este adevărată

if

este adevărată și execută altă secvență de cod dacă condiția

este falsă

else

- execută o secvență de cod dacă o condiție logică

24

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

if

sau mai multe condiții logice

elseif

else

– execută diferite secvențe de cod pentru două

switch – selectează o secvență de cod care va fi executată în funcție de valoarea unei expresii-selector

Pentru sintaxă și exemple accesați linkurile

Instrucțiuni de ciclare în PHP

Instrucțiunile de ciclare (repetitive) PHP execută o secvență de cod cât timp o condiție logică este adevărată. De multe ori, atunci când scriem cod, aceeași secvență de cod dorim să se execute de mai multe ori. Pentru a evita scrierea de linii de cod identice în mod repetat, putem utiliza instrucțiuni de ciclare.

În PHP avem următoarele instrucțiuni de ciclare:

while - execută o secvență de cod cât timp o condiție logică este adevărată.

- execută o secvență de cod o dată, apoi repetă

do

while

execuția secvenței cât timp o condiție logică este adevărată.

for - execută o secvență de cod de un număr de ori specificat

foreach - execută o secvență de cod pentru fiecare element al unui tablou

linkurile:

Pentru

sintaxă

și

exemple

accesați

Funcții PHP

Adevărata putere a limbajului PHP derivă din funcțiile sale, limbajul încorporează peste 1000 de funcții predefinite.

Funcții definite de utilizator în limbajul PHP

În afară de funcțiile predefinite ale limbajului, ne putem crea propriile noastre funcții.

Funcția reprezintă un bloc de instrucțiuni care poate fi executat în mod repetat în cadrul unui program.

Funcția nu se va executa imediat ce se încarcă pagina în browser, aceasta se va executa doar în urma unui apel.

Crearea unei funcții definite de utilizator în PHP:

O funcție definită de utilizator începe cu cuvântul rezervat "function":

25

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Sintaxa:

function functionName() { code to be executed;

}

Notă: Numele unei funcții începe cu o literă sau simbolul ”_”, nu poate începe cu o cifră. Alegeți nume sugestive pentru funcții care să reflecte scopul acesteia. Numele de funcții nu sunt case-sensitive. Pentru mai multe detalii accesați:

Tablouri PHP

Un tablou reprezintă o structură de date care memorează într-o singură variabilă o mulțime de valori.

Exemplu:

<?php $cars = array("Volvo","BMW", "Toyota"); echo "I like ".$cars[0].",".$cars[1] ."and"

.$cars[2].".";

?>

Dacă aveți de memorat o listă de valori (de exemplu numele unor mașini), memorarea acestor date ar arăta în modul următor:

$cars1 = "Volvo"; $cars2 = "BMW"; $cars3 = "Toyota"; Dacă ar trebui să scrieți un cod pentru identificarea une i anumite mașini dintr-o mulțime de 3 sau 300 de mașini, cum ar arăta codul?

Soluția în acest caz este să creați un tablou.

Un tablou poate stoca o mulțime de valori, utilizând un nume unic, iar regăsirea unei valori se va realiza prin referirea la un anumit index(poziția ocupată de valoare ).

Pentru crearea unui tablou în PHP se utilizează funcția array(). În PHP, există 3 tipuri de tablouri:

Tablouri indexate tablouri indexate numeric

Tablouri asociative – tablouri în care identificarea unui element se realizează pe baza unei chei

Tablouri multidimensionale – tablouri care conțin unul sau mai multe tablouri

26

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Sortarea tablourilor

sort() – sortează tablourile în ordine crescătoare

rsort() - sortează tablourile în ordine descrescătoare

asort() - sortează tablourile asociative în ordine crescătoare, în funcție de o valoare dată

ksort() - sortează tablourile asociative în ordine crescătoare, în funcție de o cheie dată

arsort() - sortează tablourile asociative în ordine descrescătoare, în funcție de o valoare dată

krsort() - sortează tablourile asociative în ordine descrescătoare, în funcție de o cheie dată

Pentru mai multe detalii accesați linkurile:

Variabile globale și superglobale în PHP

Variabilele superglobale, "superglobals", au fost introduse o dată cu versiunea PHP 4.1.0 și reprezintă variabile predefinite ale limbajului care sunt întotdeauna accesibile, indiferent de domeniul de vizibilitate - și pot fi accesate din orice funcție, clasă sau fișier, fără a fi nevoie de alte instrucțiuni.

Variabilele

superglobale în PHP sunt:

$GLOBA LS

$_SERVER

$_REQUEST

$_POST

$_GET

$_FILES

$_ENV

$_COOKIE

$_SESSION

Detalii legate de semnificația fiecărei astfel de variabile găsiți la adresa : http://www.w3schools.com/php/php_superglobals.asp

Gestionarea formularelor în PHP

Variabilele superglobale $_GET și $_POST sunt utilizate pentru colectarea datelor în formulare de date.

27

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Formulare HTML simple Exemplul de mai jos prezintă un formular HTML simplu, cu două câmpuri și un buton de ”submit”.

Exemplu:

<html>

<body>

<form action="welcome.php" method="post"> Name: <input type="text" name="name"><br> E-mail: <input type="text" name="email"><br> <input type="submit"> </form>

</body>

</html>

Atunci când utilizatorul completează formularul de mai sus și dă clic pe butonul de trimitere, datele din formular sunt trimise pentru procesare într-un fișier PHP denumit "welcome.php". Datele din formular sunt trimise prin metoda HTTP POST.

Metoda HTTP POST și variabila superglobală $_POST

Pentru

afișarea datelor trimise prin

intermediul formularu lui putem

utiliza

variabila

superglobală

$_POST și instrucțiuni de afișare a

diferitelor componente ale acesteia. Fișierul "welcome.php" va arăta astfel:

<html>

<body>

Welcome <?php echo $_POST["name"]; ?><br> Your email address is: <?php echo $_POST["email"]; ?> </body> </html>

Pe ecran vor fi afișate următoarele date:

Welcome John Your email address is john.doe@example.com

Rezultate identice cu cele din scriptul anterior se obțin utilizând metoda HTTP GET:

<html>

<body>

28

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

<form action="welcome_get.php" method="get"> Name: <input type="text" name="name"><br> E-mail: <input type="text" name="email"><br> <input type="submit"> </form>

</body>

</html>

Fișierul "welcome_get.php" va avea următorul conținut:

<html>

<body>

Welcome <?php echo $_GET["name"]; ?><br> Your email address is: <?php echo $_GET["email"]; ?>

</body>

</html>

procesarea formularelor este importantă SECURITATEA datelor

transmise!

GET versus POST

Ambele metode GET și POST creează un tablou de forma (cheie1 =>

în care cheile reprezintă numele

câmpurilor din formular, iar valorile reprezintă datele introduse de utilizator în aceste câmpuri. Informațiile trimise prin metodele GET și POST se recuperează prin

intermediul variabilelor superglobale $_POST și $_GET . $_GET este un tablou de variabile transferat scriptului curent prin parametri URL. $_POST este un tablou de variabile transferat scriptului curent prin metoda HTTP POST. Programatorii preferă metoda POST pentru trimiterea datelor din formulare.

valoare1, cheie2 => valoare2,

În

),

29

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Când să utilizăm metoda GET? Informațiile transmise dintr-un formular prin metoda GET sunt vizibile tuturor( toate numele și valorile variabilelor sunt afișate în URL).

GET este o metodă care restricționează volumul de informație trimis la aproximativ 2000 de caractere. Datorită faptului că variab ilele sunt afișate în URL, este posibil să marcăm pagina, lucru util în anumite situații.

Metoda

importante. Notă: Metoda GET nu trebuie utilizată pentru trimiterea parolelor sau a altor informații importante!

Când anume utilizăm metoda POST? Informațiile transmise dintr-un formular prin metoda POST nu sunt vizibile altor persoane(numele/valorile sunt încorporate în cadrul unei cereri HTTP) și nu există limitări din punct de vedere al volumului de informație transmis. În plus, metoda POST oferă o funcționalitate avansată cum ar fi suport pentru operația de încărcare a fișierelor pe server în format binar. Deoarece variabilele nu sunt afișate în URL marca rea paginii care conține formularul nu este posibilă.

Pentru mai multe informații accesați link-ul :

Validarea datelor din formulare Pentru protejarea datelor dintr-un formular trebuie să realizați o validare corectă a datelor care să protejeze formularul împotriva atacurilor provocat de hackeri sau a spam-urilor.

Ce este funcția htmlspecialchars()? Funcția htmlspecialchars() convertește caracterele spec iale în entități HTML. De exemplu, caractere ca ” < ” și ” >” vor fi înlocuite cu &lt; și &gt;. Acest lucru împiedică atacatorii să exploateze codul prin inserarea de coduri HTML sau Javascrip t în formulare (atacuri de tip Cross -site Scripting).

Notă : Foarte important în securitatea unui formular PHP – Variabila $_SERVER["PHP_SELF"] poate fi utilizată de hackeri! Dacă utilizați în pagină parametrul PHP_SELF atunci un hacker poate introduce în cod un simbol ”/” și comenzi de tip Cross Site Scripting (XSS) pentru a exploata datele.

30

GET

poate

fi

utilizată

în

transmiterea

datelor mai puțin

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Cum

$_SERVER["PHP_SELF"] în propriile pagini? Prin utilizarea funcției htmlspecialchars().

vulnerabilitatea variabilei

putem

evita

Codul din pagina care conține formularul ar arăta astfel:

<form method="post" action=" <?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Dacă un hacker ar încerca să exploateze variabila PHP_SELF, rezultatul ar fi următorul:

<form method=”post” action=”test_form.php/&quot;&gt;&lt;script&gt;alert( ‚hacked‟)&lt;/script&gt;”>

Atacul asupra paginii ar eșua!

Regula care trebuie respectată este cea în care variabilele trebuie transmise prin funcția htmlspecialchars(). Dacă un hacker în cearcă să insereze în pagină scriptul următor:

<script>location.href('http://www.hacked.com')

</script>

acesta nu va fi executat, deoarece codul se va transforma astfel:

&lt;script&gt;location.href('http://www.hacked.com')&lt;/script&gt;

În aceste condiții, datele formularului pot fi afișate în siguranță într -o pagină sau în cadrul unui email. De asemenea, trebuie realizat e următoarele operații la transmiterea datelor unui formular:

1. Eliminați caracterele inutile ( space, tab, newline) din datele de intrare cu ajutorul funcției trim()

2. Eliminați caracterele backslash (\)din datele de intrare cu ajutorul funcției stripslashes ().

Următorul pas este cel de a crea o funcție care realizează toate verificările datelor introduse în formular. Vom numi această funcție test_input(). Vom verifica fiecare variabilă $_POST cu această funcție. Conținutul funcției este prezentat mai jos:

<?php // definim și inițializăm variabilele asociate câmpurilor cu șirul vid $name = $email = $gender = $comment = $website =

"";

31

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = test_input($_POST["name"]); $email = test_input($_POST["email"]); $website = test_input($_POST["website"]); $comment = test_input($_POST["comment"]); $gender = test_input($_POST["gender"]);

}

function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data;

}

?>

Câmpuri obligatorii în formulare PHP Toate câmpurile din formularul de mai sus sunt opționale. Pentru a obține câmpuri obligatorii vom utiliza o funcție și variabile suplimentare. În următorul exemplu vom adăuga variabile noi: $nameErr, $emailErr, $genderErr, and $websiteErr. Rolul acestor variabile este de a memora mesaje care vor fi afișate pentru câmpurile obligatorii. Adăugăm de asemenea, o instrucțiune if-else pentru fiecare variabilă $_POST. Aceasta va verifica dacă variabila $_POST este vidă ( cu ajutorul funcției PHP empty()). Dacă variabila este vidă un mesaj de eroare va fi memorat în variabila de eroare asociată respectivului câmp, în caz contrar, variabila asociată câmpului din formular va stoca rezultatul returnat de funcția test_input().

<?php // definim și inițializăm variabilel e de eroare cu șirul vid $nameErr = $emailErr = $genderErr = $websiteErr = ""; // definim și inițializăm variabilele asociate câmpurilor cu șirul vid $name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["name"])) { $nameErr = "Name is required"; } else { $name = test_input($_POST["name"]);

}

32

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

if (empty($_POST["email"])) { $emailErr = "Email is required"; } else { $email = test_input($_POST["email"]);

}

}

?>

Apoi, în formularul HTML adăugăm un mic script după fiecare câmp care generează mesajul de eroare corespunzător. Acest mesaj va fi afișat dacă utilizatorul încearcă să trimită datele fără a completa unul dintre câmpurile obligatorii.

Afișarea mesajelor de eroare la c ompletarea câmpurilor unui formular Exemplu

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Name:

<input type="text" name="name"> <span class="error">* <?php echo $nameErr;?></span> <br><br> E-mail:

<input type="text" name="email"> <span class="error">* <?php echo $emailErr;?></span> <br><br> <input type="submit" name="submit" value="Submit"> </form>

Validarea datelor din câmpul

Codul de mai jos exemplifică un mod simplu de a verifica dacă câmpul name conține numai litere și caractere albe. Dacă valoarea din câmpul

name nu este validă, se va stoca un mesaj de eroare în variabila $nameErr.

”Name”

$name = test_input($_POST["name"]); if (!preg_match("/^[a -zA-Z ]*$/",$name)) { $nameErr = "Only letters and white space allowed";

}

Funcția preg_match() returnează true dacă toate c aracterele stocate în variabila $name aparțin mulțimii de caractere șablon dată ca parametru al funcției și fals în caz contrar.

33

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Validarea datelor din câmpul ”Email” Cel mai simplu mod de a valida o adresă de email este utilizarea funcției PHP filter_var(). În codul de mai jos se verifică corectitudinea adresei de email. În cazul în care textul nu este valid se va stoca în variabila $emailErr un mesaj de eroare:

$email = test_input($_POST["email"]); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Invalid email format";

}

Validarea datelor din câmpul

În codul de mai jos se verifică corectitu dinea adresei URL (expresia

permite, de asemenea, utilizarea cratimelor în cadrul URL). În cazul în

care textul nu este valid se va stoca în variabila de eroare:

$websiteErr un mesaj

”URL”

$website = test_input($_POST["website"]); if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[- a-z0-9+&@#\/%?=~_|!:,.;]*[ -a-z0- 9+&@#\/%=~_|]/i",$website)) { $websiteErr = "Invalid URL";

}

Cookies în limbajul PHP

Un cookie este utilizat pentru identificarea unui utilizator. Un cookie reprezintă un mic fișier stocat pe computerul utilizatorului.

De fiecare dată când de pe un computer se execută o cerere de încărcare a unei pagini în browser va fi trimis serverului fișierul cookie

pentru

crea sau regăsi valori cookie.

Crearea unui cookie în PHP

Un cookie se creează cu ajutorul funcției setcookie(). În exemplul următor se creează un cookie numit "user" cu valoarea "John Doe". Acest cookie va expira în 30 zile(86400 * 30). Simbolul "/" arată că cookie va fi disponibil în toate paginile sit e-ului. Pentru identificarea unui cookie "user" utilizăm variabila globală $_COOKIE. Funcția isset() verifică dacă cookie a fost creat:

identificarea utilizatorului. Cu ajutorul limbajului PHP puteți

34

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Exemplu:

<?php $cookie_name = "user"; $cookie_value = "John Doe";

setcookie($cookie_name, $cookie_value, time()+

(86400 * 30), "/"); ?> <html> <body>

// 86400 = 1 zi

<?php if(!isset($_COOKIE[$cookie_name])) { echo "Cookie named '" . $cookie_name . "' is not set!"; } else { echo "Cookie '" . $cookie_name . "' is set!<br>"; echo "Value is: " . $_COOKIE[$cookie_name];

}

?>

</body>

</html>

Funcția setcookie() trebuie să apară înaintea tagului <html>. Pentru a afla detalii legate de operații cu cookie accesați linkul

Sesiuni

Sesiunea rep rezintă o metodă de stocare în variabile a informațiilor astfel încât acestea să poată fi utilizate în mai multe pagini web. Spre deosebire de un cookie, informațiile nu sunt stocate pe computerul utilizatorului. O sesiune durează atât timp cât utilizatorul accesează un site și se încheie o dată cu închiderea browserului. Accesarea unei pagini web este o operație de sine stătătoare, orice accesare ulterioară a aceleiași pagini (spre exemplu un refresh) se va face fără ca serverul "să știe" de accesările ant erioare. La fel se întâmplă atunci când sunt accesate mai multe pagini diferite una după alta.

Variabilele sesiune rezolvă această problemă prin stocarea informațiilor legate de utilizator și utilizarea lor în cadrul mai multor pagini vizitate de acesta. (de exemplu: username, favorite color, etc).

35

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Implicit, variabilele sesiune sunt stocate pe server până la închiderea browserului.

Notă: Pentru memorarea permanentă a datelor unui utilizator există opțiunea memorării acestora într-o bază de date.

Deschiderea unei sesiuni PHP O sesiune începe la apelul funcției session_start(). Variabilele sesiune sunt setate cu variabila globală $_SESSION.

Vom crea o pagină numită "demo_session1.php", în care vom deschide o nouă sesiune și vom seta câteva variabile de tip ses iune. Notă: Funcția session_start() trebuie apelată la începutul paginii, înaintea oricăror taguri HTML.

<?php // deschide sesiunea session_start(); ?> <!DOCTYPE html> <html> <body>

<?php // Atribuirea de valori variabilelor de tip sesiune $_SESSION["favcolor"] = "green"; $_SESSION["favanimal"] = "cat"; echo "Session variables are set."; ?>

</body>

</html>

Obținerea valorilor variabilelor sesiune

Vom crea o altă pagină numită "demo_session2.php". Din această pagină vom accesa informațiile variabilelor ses iune din pagina creată anterior ("demo_session1.php"). Observați că variabilele sesiune nu sunt transmise în mod individual pentru fiecare pagină nouă, în schimb, acestea sunt preluate din sesiunea deschisă la începutul fiecărei pagini (session_start ()). De asemenea, observați că toate valorile variabilelor sesiune sunt stocate în variabila globală $_SESSION:

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

?>

<!DOCTYPE html>

<html>

<body>

<?php // Se afișează valorile variabilelor sesiune setate în pagina anterioară echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>"; echo "Favorite animal is " . $_SESSION["favanimal"] . "."; ?>

</body>

</html>

Figura de mai jos ilustrează fluxul de date în sesiunile existente în paginile web:

fluxul de date în sesiunile existente în paginile web: Cele patru fișiere .php sunt prezentate în

Cele patru fișiere .php sunt prezentate în paginile următoare. Pagina session_login.php conține următorul cod:

<?php /*before destroying the Session you have to receive the session */ session_start();

// destroy the session

37

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

session_destroy(); $_SESSION = array(); ?>

<html> <body>

<h3>Login-Pages</h3>

<form action="intro.php" method="post"> <p><input name="name" /> Name</p> <p><input type="password" name="password" /> Password</p> <p><input type ="submit" value="login" /></p> </form> </body> </html>

Pagina intro.php conține următorul cod:

<?php // deschiderea sesiunii session_start();

// verifică dacă există apel din pagina session_login.php if(isset($_POST["name"])) {

// verifică dacă numele și parola sunt corecte

if ($_POST["name"] == "Marina" && $_POST["password"] == "elefant" || $_POST["name"] == "Andra" && $_POST["password"] == "castle")

{

// numele și parola sunt corecte $_SESSION['name'] = $_POST["name"];

}

}

// check if inside the session include "control.inc.php"; ?>

<html><body> <h3>Intro Page</h3>

<?php echo "<p>Hello " . $_SESSION['name'] . "</p>"; ?>

38

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

<p><a href="other.php">Go to another Page </a></p> <p><a href="session_login.php">Log off </a></p> </body></html>

Pagina other.php conține următorul cod:

<?php // deschiderea sesiunii session_start(); // check if you are inside the session include "control.inc.php";

?> <html> <body> <h3>This is the other page</h3> <?php

echo "<p>Hello " . $_SESSION['name'] . "</P>"; ?> <p> <a href ="intro.php"> Go to Intro-Page</a></p> <p> <a href ="session_login.php"> Log off</a></p>

</body>

</html>

Pagina control.inc.php conține următorul cod:

<?php

// control if inside the session if (!isset($_SESSION["name"]))

{

echo "<p>no entry</p>"; echo "<p><a href ='session_login.php'>Go to Login </a></p>"; echo "</body></html>"; exit; }?>

Baze de date

O bază de date reprezintă o colecție de date organizată astfel încât un program să poată selecta rapid datele necesare la un moment dat.

39

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Putem asocia conceptul de bază de date celui de sistem de arhivare electronică a datelor.

de date celui de sistem de arhivare electronică a datelor. Bazele de date tradiționale sunt organizate

Bazele de date tradiționale sunt organizate în câmpuri și înregistrări memorate în tabele(fișiere). Câmpul reprezintă un atribut al informației, înregistrarea este alcătuită dintr-o mulțime de câmpuri , iar tabela reprezintă o colecție de înregistrări Pentru a accesa date stocate într-o bază de date este necesar un sistem de gestiune a bazelor de date (DBMS). Acesta reprezintă o colecție de programe care permit memorarea, organizarea și regăsirea datelor din baza de date. PHP permite conexiunea la o bază de date. MySQL este cel mai popular sistem de gestiune a bazelor de date cu ajutorul limbajului PHP.

Ce reprezintă MySQL?

MySQL este un sistem de baze de date utilizat pe web

MySQL este un sistem de baze de date care rulează pe un server

MySQL este ideal pentru aplicații mici și mari

MySQL este foarte rapid, fiabil și ușor de utilizat

MySQL utilizează standardul SQL

MySQL compilează pe o varietate de platforme

MySQL este open source, poate fi descărcat și folosit

MySQL este dezvoltat, distribuit și susținut de Oracle Corporation

MySQL este numit My, după fiica co-fondatorului său Monty Widenius

Datele dintr-o bază de date MySQL sunt organizate în tabele. Tabelele reprezintă o colecții de date relaționate, organizate pe linii și coloane.

40

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Pentru mai multe informații accesați link-ul:

MySQL este sistemul de baze de date standard pentru website-uri cu volume mari atât de date, cât și de utilizatori finali (cum ar fi Facebook, Twitter și Wikipedia). PHP 5 poate lucra cu o bază de date MySQL utilizând:

extensia MySQLi ("i" provine de la ”improved”)

PDO (PHP Data Objects)

Atât MySQLi, cât și PDO au propriile avantaje:

PDO lucrează cu 12 sisteme diferite de baze de date, pe când MySQLi lucrează doar cu baze de date MySQL.

Așa încât, dacă vrei ca proiectul tău să utilizeze altă bază de date, PDO face ca acest proces să fie simplu. Trebuie modificat doar stringul de conectare și câteva interogări. Cu MySQLi va trebui să rescrii întregul cod sau interogările incluse.

Ambele extensii sunt orientate pe obiect, dar MySQLi oferă în plus o interfață procedurală API.

Ambele suportă conceptul de Prepared Statements (șabloane compilate pentru SQL care pot fi rulate şi care pot fi particularizate folosind ca parametri diverse variabile). Aceste șabloane sunt foarte importante pentru securitatea aplicației web.

Exemple de scripturi care utilizează MySQLi

1. Deschiderea unei conexiuni la MySQL

<?php $servername = “localhost“; $username = “root“; $password = ““;

// Crearea conexiunii $conn = mysqli_connect($servername, $username, $password);

// verificarea conexiunii If (!$conn) {

41

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

die (“Connection failed: “ . Mysqli_connect_error());

}

echo “Connected successfully“;

?>

2. Închiderea unei conexiuni

mysqli_close($conn);

Pentru crearea sau ștergerea unei baze de date sunt necesare privilegii de tip CREATE.

3. Crearea unei baze de date MySQL utilizând MySQLi

Comanda CREATE DATABASE este utilizată pentru crearea unei baze de date în MySQL. În exemplul următor se creează o bază de date cu numele “myDB“:

<?php $servername = “localhost“; $username = “root“; $password = ““; // Crearea conexiunii $conn = mysqli_connect($servername, $username, $password); // verificarea conexiunii If (!$conn) { die (“Connection failed: “ . mysqli_connect_error());

}

// Crearea bazei de date $sql = “CREATE DATABASE myDB“; if (mysqli_query($conn, $sql)) {

echo “Database created successfully“; else { echo “Error creating database: “ . mysqli_error($conn);

}

}

mysqli_close($conn);

?>

Comanda CREATE TABLE e ste utilizată în MySQL pentru crearea unei tabele.

4. Crearea tabelei MyGuests

Tabela va conține 5 coloane "id", "firstname", "lastname", "email" și "reg_date":

42

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

CREATE TABLE MyGuests ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), reg_date TIMESTAMP

)

Tipul de date specifică ce tip de date va stoca un câmp al tabelei. Există câteva atribute opționale care pot fi specificate pentru fiecare câmp al tabelei:

NOT NULL Fiecare înregistrare trebuie să conțină o valoare pentru acel câmp, valorile nule nu sunt permise

DEFAULT valoare – setează o valoare predefinită care va fi memorată automat în tabelă, de fiecare dată când câmpul respectiv nu este completat

UNSIGNED utilizat pentru tipuri numerice, permite stocarea doar de valori pozitive, inclusiv zero

AUTO INCREMENT - MySQL incrementează automat cu 1 valoarea câmpului de fiecare dată când este adăugată o nouă înregistrare

PRIMARY KEY – utilizat pentru identificarea unică a înregistrărilor din tabelă. Coloana PRIMARY KEY este,

atributul

deseori, un câmp AUTO_INCREMENT

numeric

ID

setat

cu

Notă: Fiecare tabelă trebuie să conțină o coloană de tip cheie primară, cu valori unice pentru fiecare înregistrare.

5. Crearea unei baze de date numite myDB și a tabelei MyGuests.

<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "myDB";

// crearea conexiunii $conn = mysqli_connect($servername, $username, $password, $dbname); // verificarea conexiunii if (!$conn) { die("Connection failed: " . mysqli_connect_error());

}

43

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

// sql to create table $sql = "CREATE TABLE MyGuests ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), reg_date TIMESTAMP )";

if (mysqli_query($conn, $sql)) {

echo "Table MyGuests created successfully"; } else { echo "Error creating table: " . mysqli_error($conn);

}

mysqli_close($conn);

?>

După crearea bazei de date și a tabelei, putem adăuga date.

6. Inserarea datelor în tabele MySQL

Reguli care trebuie respectate la inserarea datelor în tabele:

Interogarea SQL trebuie să fie încadrată între ghilimele în PHP

Stringurile din interiorul unei interogări trebuie să fie delimitate de ghilimele

Valorile numerice nu se scriu între ghilimele

Cuvântul NULL nu se scrie între ghilimele

Comanda INSERT INTO este utilizată pentru adăugarea de noi înregistrări într-o tabelă MySQL:

Sintaxa:

INSERT INTO table_name (column1, column2, )

VALUES (value1, value2, value3,

column3,

)

Notă: Dacă o coloană are unul dintre atributele AUTO_INCREMENT sau TIMESTAMP nu este necesar ca aceste coloane să apară în interogare; MySQL va adăuga automat valori în aceste câmpuri.

În

nouă înregistrare în tabela

"MyGuests" creată în scriptul precedent.

exemplul

următor

vom adăuga

o

<?php $servername = "localhost"; $username = „root"; $password = ""; $dbname = "myDB";

44

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

// Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error());

}

$sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com')";

if (mysqli_query($conn, $sql)) {

echo "New record created successfully"; } else {

echo "Error: " . $sql mysqli_error($conn);

. "<br>" .

}

mysqli_close($conn);

?>

Dacă se execută o comandă INSERT sau UPDATE într-o tabelă cu un câmp ID cu atributul AUTO_INCREMENT, putem obține valoarea din câmpul ID al ultimei înregistrări inserate/actualizate.

7. Obținerea ID-ului ultimei înregistrări inserate în tabelă

<?php $servername = "localhost"; $username = „root"; $password = ""; $dbname = "myDB";

// Crearea conexiunii $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error());

}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)

45

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

VALUES ('John', 'Doe', 'john@example.com')";

if (mysqli_query($conn, $sql)) { $last_id = mysqli_insert_id($conn);

echo "New record created successfully. Last inserted ID is: " . $last_id;

else { echo "Error: " . $sql . "<br>" . mysqli_error($conn);

}

}

mysqli_close($conn);

?>

8.

Inserarea unui grup de înregistrări în MySQL

<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB";

// Crearea conexiunii $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error());

}

$sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com');"; $sql .= "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('Mary', 'Moe', 'mary@example.com');"; $sql .= "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('Julie', 'Dooley', 'julie@example.com')";

if (mysqli_multi_query($conn, $sql)) { echo "New records created successfully";

} else { echo "Error: " . $sql . "<br>" . mysqli_error($conn);

}

46

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

mysqli_close($conn);

?>

9. Interogarea datelor dintr -o bază de date MySQL

Comanda SELECT este utilizată pentru interogarea uneia sau mai multor tabele :

Sintaxa:

SELECT column_name(s) FROM table_name

Putem utiliza caracterul ’ * ’ pentru a selecta toate coloanele unei tabele:

Sintaxa:

SELECT * FROM table_name

<?php $servername = "localhost"; $username = „root"; $password = ""; $dbname = "myDB";

// Crearea conexiunii $conn = mysqli_connect($servername, $username, $password, $dbname); // Verificarea conexiunii if (!$conn) { die("Connection failed: " . mysqli_connect_error());

}

$sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) { // afișează datele fiecărei înregistrări while($row = mysqli_fetch_assoc($result)) { echo "id: " . $row["id"]. " - Name: " .

$row["firstname"]. " " . $row["lastn ame"]. "<br>";

}

} else { echo "0 results";

}

mysqli_close($conn);

?>

47

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

10. Ștergerea datelor în MySQL

Comanda

DELETE

este

utilizată

pentru

ștergerea

datelor

dintr-o

tabelă:

Sintaxa:

DELETE FROM table_name WHERE some_column = some_value

Notă: Clauza WHERE specifică care înregistrare va fi ștearsă. Dacă această clauză nu apare, vor fi șterse toate înregistrările.

<?php $servername = "localhost"; $username = „root"; $password = ""; $dbname = "myDB";

// Crearea conexiunii $conn = mysqli_connect($servername, $username, $password, $dbname); // Verificarea conexiunii if (!$conn) { die("Connection failed: " . mysqli_connect_error());

}

// sql va șterge înregistrarea cu ID -ul 3 $sql = "DELETE FROM MyGuests WHERE id=3";

if (mysqli_query($conn, $sql)) { echo "Record deleted successfully"; } else { echo "Error deleting record: " . mysqli_error($conn);

}

mysqli_close($conn);

?>

11. Actualizarea datelor în tabele MySQL

Comanda UPDATE este utilizată pentru actualizarea datelor dintr-o tabelă:

Sintaxa:

UPDATE table_name SET column1=value, column2=value2, WHERE some_column=some_value

48

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Notă: Clauza WHERE specifică care înregistrare/înregistrări va/vor fi actualizată/actualizate. Dacă se omite această clauză, toate înregistrările vor fi actualizate.

<?php $servername = "localhost"; $username = “root"; $password = ""; $dbname = "myDB";

// Crearea conexiunii

$conn = mysqli_connect($servername, $username, $password, $dbname); // verificarea conexiunii if (!$conn) { die("Connection failed: " . mysqli_connect_error());

}

$sql = "UPDATE MyGuests SET lastname=„Travolta' WHERE id=2";

if (mysqli_query($conn, $sql)) { echo "Record updated successfully"; } else { echo "Error updating record: " . mysqli_error($conn);

}

mysqli_close($conn);

?>

12. Limitarea selecției datelor în MySQL

Clauza LIMIT este folosită în comanda MySQL SELECT pentru a limita numărul de înregistrări returnate în urma interogării care urmează să fie afișate. Poate avea unul sau două argumente, acestea fiind numere întregi pozitive sau zero.

Clauza LIMIT este utilă în obținerea rezultatelor din tabele foarte mari ca volum, selectarea unui număr foarte mare de înregistrări afectând performanța.

Dacă trebuie să interogăm date din tabela "Orders" din primele 30 de înregistrări, interogarea SQL arată ca în exemplul de mai jos:

$sql = "SELECT * FROM Orders LIMIT 30";

Dar dacă ar trebui interogate înregistrările cu ID-ul cuprins între 16 și 25 ?

49

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

MySQL oferă o soluție în acest caz: utilizarea clauzei OFFSET. Interogarea SQL de mai jos se poate traduce astfel "returnează numai 10 înregistrări, începând cu înregistrarea 16 (OFFSET 15)":

$sql = "SELECT * FROM Orders LIMIT 10 OFFSET

15";

Pentru același rezultat se poate utiliza și comanda de mai jos:

$sql = "SELECT * FROM Orders LIMIT 15, 10";

Observați că numerele trebuie inversate când sunt separate cu virgula.

PhpMyAdmin PhpMyAdmin este un sistem de gestiune a bazelor de date MySQL free, open source, scris în PHP și destinat administrării bazelor de date prin intermediul unui browser web. Prin phpMyAdmin se pot întreprinde diverse operații cum ar fi crearea, modificarea sau ștergerea bazelor de date, tabelelor, câmpurilor sau rândurilor; executarea de comenzi (interogări) SQL și administrarea utilizatorilor și privilegiilor.

În PhpMyAdmin sunt posibile u rmătoarele operații:

Crearea și ștergerea unei baze de date

Crearea

/

ștergerea/

modificarea

tabelelor

virtuale (views)

și

a

tabelelor

Ștergerea / editarea / adăugarea câmpurilor în tabele

Execuția oricărei instrucțiune SQL

Gestionarea cheilor asociate câmpurilor

Gestionarea privilegiilor

Gestionarea declanșatoarelor și a procedurilor stocate

exportul datelor în diferite formate (CSV, SQL, XML, PDF … )

PhpMyAdmin este disponibil în 62 de limbi.

Pentru documentație detaliată

accesați link-ul:

50

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI Etapele creării unei baze de date MySQL Gestionarea fișierelor

Etapele creării unei baze de date MySQL

PENTRU ÎNCEPĂTORI Etapele creării unei baze de date MySQL Gestionarea fișierelor pe server În acest capitol

Gestionarea fișierelor pe server

În acest capitol veți învăța să deschideți, să accesați pentru citire și să închideți fișiere stocate pe server.

51

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Deschiderea unui fișier în PHP utilizând funcția fopen() Funcția fopen() permite deschiderea unui fișier de pe server și oferă mai multe opțiuni față de funcția readfile(). Vom utiliza fișierul "webdictionary.txt", fișier care are conținutul de mai jos:

AJAX = Asynchronous JavaScript and XML CSS = Cascading Style Sheets HTML = Hyper Text Markup Language PHP = PHP Hypertext Preprocessor SQL = Structured Query Language SVG = Scalable Vector Graphics XML = EXtensible Markup Language

Primul parametru al funcției fopen() specifică numele fișierului, iar al doilea parametru reprezintă modul de deschidere a fișierului.

<?php $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!"); echo fread($myfile,filesize("webdictionary.txt")); fclose($myfile); ?>

Moduri de deschidere a unui fișier

Mod

 

Descriere

r

Deschidere doar pentru citire. Pointerul la inceputul fișierului. Modul se mai numește și mod citire

r+

Deschidere atât pentru citire, cât și pentru scriere. Pointer la începutul fișierului.

w

Des chidere doar pentru scriere. Pointerul este la începutul fișierului, iar tot conținutul fișierului este șters în momentul deschiderii. În caz că fișierul nu există, acesta va fi creat. Modul se mai numește și mod scriere.

w+

Deschidere atât pentru scriere, cât și pentru citire. Pointerul

este la începutul fișierului, iar tot conținutul fișierului este

șters

în momentul deschiderii. În caz că fișierul nu există,

acesta va fi creat.

a

Deschidere doar pentru scriere. Pointerul este la sfârșitul fișierului. Dacă fișierul nu există, acesta va fi creat. Modul se mai numește și mod adăugare.

a+

Deschidere atât pentru scriere, cât și pentru citire. Pointerul este la sfârșitul fișierului. Dacă fiș ierul nu există, acesta va fi

52

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

 

creat.

x

Fișierul este creat și desch is pentru scriere. Pointerul la începutul fișierului. În caz că fișierul există se generează o eroare de tip E_WARNING, iar funcția fopen () returnează false.

x+

Fișierul este creat și deschis pentru scriere și citire. Pointerul la începutul fișierului. În caz că fișierul există se generează o eroare de tip E_WARNING, iar funcția fopen () returnează false.

Citirea dintr-un fișier Funcția fread() citește date dintr-un fișier.

Primul parametru al funcției fread() conține numele fișierului, iar cel de-al doilea parametru specifică numărul maxim de octeți care va fi citit.

În

citește

fișierului

"webdictionary.txt" :

următorul

exemplu

se

întreg

conținutul

fread($myfile,filesize("webdictionary.txt"));

Închiderea unui fișier Funcția fclose() este utilizată pentru închiderea unui fișier. Notă: O practică corectă este cea de a închide toate fișierele după finalizarea operațiilor de prelucrare a datelor, pentru a nu fi distruse accidental. Funcția fclose() necesită ca parametru numele fișierului care va fi închis:

<?php $myfile = fopen("webdictionary.txt", "r"); // cod ce va fi executat fclose($myfile); ?>

Citirea linie cu linie dintr-un fișier Funcția fgets() este utilizată pentru citirea unei linii din fișier. În exemplul de mai jos se afișează prima linie din fiș ierul "webdictionary.txt":

<?php $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!"); echo fgets($myfile); fclose($myfile); ?>

53

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Notă: După apelul funcției fgets() , pointerul de fișier se mută la începutul celei de-a doua linii din fișier.

Verificarea sfârșitului de fișier Funcția feof() function verifică dacă pointerul a ajuns la sfârșitul fișierului. Funcția feof() este utilă în parcurgerea fișierelor a căror dimensiune nu se cunoaște. În exemplul de mai jos, fiecare linie din fișierul "webdictionary.txt" este citită și afișată pe ecran, până când se întâlnește marcajul de sfârșit de fișier:

<?php $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");

// se afișează linie cu linie while(!feof($myfile)) { echo fgets($myfile) . "<br>";

}

fclose($myfile);

?>

Citirea unui caracter din fișier Funcția fgetc() citește un singur caracter din fișierul dat ca parametru.

În

conținutul fișierului "webdictionary.txt":

exemplul de mai jos, se afișează pe ecran caracter cu caracter

<?php $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");

// afișează fiecare caracter din fișier while(!feof($myfile)) { echo fgetc($myfile);

}

fclose($myfile);

?>

Notă: După apelul funcției fgetc() , pointerul de fișier se mut ă pe următorul caracter.

54

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Crearea și scrierea în fișiere stocate pe server Funcția fopen() este utilizată în PHP fie pentru deschiderea unui fișier, fie pentru crearea lui. Pentru crearea unui fișier, modul de deschidere al acestuia va fi pentru scriere(w) sau pentru adăugare(a).

În exemplul următor se va crea fișierul "testfile.txt", în același director în care este salvat fișierul .php care conține codul pentru crearea fișierului:

$myfile = fopen("testfile.txt", "w");

Notă: Dacă aveți erori atunci când încercați codul de mai sus, verificați mai întâi dacă aveți drepturi de scriere pe hard disk. Scrierea într-un fișier Funcția fwrite() scrie date în fișierul specificat în primul parametru. Al doilea parametru al funcției va conține șirul de caractere ce urmează a fi scris în fișier.

În exemplul de mai jos, se vor scrie pe linii separate numele a două persoane("John Doe" , "Jane Doe") în fișierul "newfile.txt":

<?php $myfile = fopen("newfile.txt", "w") or die("Unable to open file!"); $txt = "John Doe\n"; fwrite($myfile, $txt); $txt = "Jane Doe\n"; fwrite($myfile, $txt); fclose($myfile); ?>

Fișierul

scriptului:

"newfile.txt"

va

avea

următorul

conținut,

după

execuția

John Doe

Jane Doe

Suprascrierea într-un fișier În exemplul următor deschidem fișierul "ne wfile.txt" în modul de deschidere pentru scriere (w) și scriem numele a două persoane pe primele 2 linii de fișier:

<?php $myfile = fopen("newfile.txt", "w") or die("Unable to open file!"); $txt = "Mickey Mouse\n"; fwrite($myfile, $txt);

55

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

$txt = "Minnie Mouse\n"; fwrite($myfile, $txt); fclose($myfile); ?>

Datele stocate în fișier înaintea execuției acestui script s -au pierdut și fișierul are acum următorul conținut:

Mickey Mouse

Minnie Mouse

Upload-ul fișierelor pe server În PHP operația de upload este facilă, cu toate acestea trebuie să fim precauți în momentul în care executăm această operație. Configurarea fișierului "php.ini" Primul pas este cel în care PHP va fi configurat să permită operația de upload. În fișierul "php.ini" directiva file_uploads va fi setată pe On:

file_uploads = On

Fișierul „php.ini“ este localizat în „c:/xampp/php/php.ini“.

În continuare, creăm un formular HTML care permite utilizatorilor să aleagă imaginea care doresc să o încarce pe server:

<html>

<body>

<form action="upload.php" method="post" enctype="multipart/form-data"> Select image to upload:

<input type="file" name="fileToUpload" id="fileToUpload"> <input type="submit" value="Upload Image" name="submit"> </form>

</body>

</html>

Reguli care trebuie respectate la crearea formularului HTML de mai sus:

Metoda utilizată în formular trebuie să fie "post"

Un atribut obligatoriu este enctype="multipart/form-data". Acesta specifică tipul conținutului utilizat la trimiterea formularului.

56

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Notă:

Atributul type="file" al tagului <input> setează câmpul din formular ca fiind un control de tip file -select, care va afișa în formular un buton "Browse"

În continuare, creăm un fișier "upload.php".

<?php $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

// Verifica daca fisierul este intr-adevar o imagine if(isset($_POST["submit"])) { $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); if($check !== false) { echo "File is an image - ". $check["mime"]. "."; $uploadOk = 1;

}

else {

echo "File is not an image."; $uploadOk = 0;

}

?>

}

Notă: Fișierul "upload.php" va fi salvat anterior. În continuare, adăugăm câteva restricții.

Verificarea existenței unui fișier Mai întâi verificăm dacă fișierul upload.php există în directorul uploads. În caz contrar, va fi afișat un mesaj de eroare și variabila $uploadOk va fi setată pe 0:

în directorul uploads creat

// Verificăm dacă există fișierul if (file_exists($target_file)) { echo "Sorry, file already exists."; $uploadOk = 0;

}

57

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Restricționarea dimensiunii unui fișier pentru upload În exemplul de mai jos câmpul din formular se numește "fileToUpload". Dacă dimensiunea fișierului este mai mare de 500KB, va fi afișat un mesaj de eroare și variabila $uploadOk va fi setată pe 0:

// verificăm dimensiunea fișierului if ($_FILES["fileToUpload"]["size"] > 500000) { echo "Sorry, your file is too large."; $uploadOk = 0;

}

Restricționarea formatului unui fișier pentru upload În exemplul de mai jos este permis upload -ul doar pentru fișiere de tip JPG, JPEG, PNG, și GIF. Pentru toate celelalte formate de fișier va fi afișat un mesaj de eroare și variabila $uploadOk va fi setată pe 0:

// permite anumite formate pentru fișierul de upload if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; $uploadOk = 0;

}

Forma finală a scriptului PHP pentru upload-ul

unui fișier

<?php $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

// Check if image file is a actual image or fake image if(isset($_POST["submit"])) { $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); if($check !== false) { echo "File is an image - " . $check["mime"]

. ".";

$uploadOk = 1; } else { echo "File is not an image."; $uploadOk = 0;

58

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

}

}

// verificăm dacă fișierul există în directorul uploads

if (file_exists($target_file)) { echo "Sorry, file already exists."; $uploadOk = 0;

}

// verificăm dimensiunea fișierului if ($_FILES["fileToUpload"]["size"] > 500000) { echo "Sorry, your file is too large."; $uploadOk = 0;

}

// Verificăm formatele de fișier

if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; $uploadOk = 0;

}

// Verificăm starea variabilei $uploadOk if ($uploadOk == 0) { echo "Sorry, your file was not uploaded.";

// dacă totul este OK atunci încercăm upload-ul pe server } else { if (move_uploaded_file($_FILES["fileToUpload"]["tmp_na m e"], $target_file)) { echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded."; } else { echo "Sorry, there was an error uploading your file.";

}

?>

}

59

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

3. Fișe de lucru

FIȘA DE LUCRU NR.1- instalarea produselor software

 

1. Download-ați pachetul web XAMPP compatibil cu sistemul de operare instalat pe computerul vostru de la adresa https://www.apachefriends.org/ro/download.html și acceptați setările implicite pentru instalare.

2. Navigați

în

Windows

și

localizați

directorul

C:/XAMPP

cu

subdirectorul htdocs.

 

3. Porniți aplicația XAMPP - Control Panel fișierul xampp-control.exe.

lansând în execuție

FIȘA DE LUCRU NR.2- crearea fișierelor html, css și p hp

1. Creați un nou director numit „day_1“ în directorul „C:/xampp/“. 2.

Copiați

fișierul

“basis.html

în

directorul

„C:/xampp

/htdocs/day_1“și redenumiți-l „basis.php“;

 

3. Creați

directorul

„css“

în

„C:/xampp/htdocs/day_1“

și

copiați

„basis.css“ în „C:/xampp/h tdocs/day_1/css“;

 

4. Modificați fișierul .css, prin aplicarea de noi stiluri pentru font și background;

5. Creați o listă ne-ordonată pentru a o utiliza în secțiunea de meniu;

6. Creați un fișier “menu.php” care va conține tagurile pentru crearea listei ne-ordonate

<?php echo '<ul> <li><a href="">Home</a></li> <li><a href="http://www.w3schools.com /php/ default.asp"> PHP-Tutorial</a></li> <li><a href="http:// www.w3schools.com/html/ default.asp">HTML-Tutorial</a></li> <li><a href="http:// www.w3schools.com/ css/ default.asp"> CSS-Tutorial</a></li> <li><a href="http:// www.w3schools.com /js/ default.asp" >JavaScript-Tutorial</a></li> </ul>'; ?>

60

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

FIȘA DE LUCRU NR.3- transformarea paginilor statice în pagini dinamice

În directorul Day_1 există fișierele basis.html și basis.css

1. Scrieți în basis.html codul PHP pentru includerea codului PHP în pagina html

2. Creați fișierele pentru secțiunile paginii web, de tip include-files (Footer, Content, Navigation)

3. Pentru includerea fișierelor create mai sus în “basis.php“ utilizaț i instrucțiunea include

<html> <head> <link rel="stylesheet" type="text/css" href="css /basis.css"> </head> <body> <div id="container"> <div id="header"> <div id="logo">###LOGO###</div> <div id="slogan">###SLOGAN###</div> <div id="search">###SEARCH###</div> </div> <div id="rootline">###ROOTLINE###</div> <div id="left"> <div id="languages">###LANGUAGES###</div> <div id="left-menu">###LEFT-MENU###</div> <div id="motto">###MOTTO###</div> <div id="left-menu"> <?PHP include 'menu.php'; ?> </div> </div> <div id="middle"> <h1>Welcome to my webpage</h1> <?php include 'vars.php'; echo "I have $number $color $car. "; ?> </div> <div id="right"> ###RIGHT### <div id="topnews">###TOPNEWS###</div> </div> <div id="footer">

<?PHP

61

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

include 'footer.php'; ?> </div> </div> </body> </html>

FIȘA DE LUCRU NR.4- utilizarea instrucțiunii de afișare în PHP

1.

Creați

în

directorul

“day_1”

scripturi

php

pentru

obținerea

următoarelor rezultate:

 

Afișarea în browser a mesajului “Welcome to Alfatraining”

 
 

<html> <body> <?php echo " Welcome to Alfatraining!"; ?> </body> </html>

 

2. Adăugați comentarii liniilor de cod PHP

 

3. Studiați proprietatea non case-sensitivity a instrucțiunilor PHP

FIȘA DE LUCRU NR.5- utilizarea variabilelor

 

Creați

în

directorul

“day_1”

scripturi

php

pentru

obținerea

următoarelor rezultate:

 

1. Declararea variabilelor color, car, house și atribuirea de valori

 

<?php $number = 100; $color = 'silver'; $car = 'Peugeot 206'; ?>

 

2. Afișarea valorilor memorate în variabile și a tipurilor de date ale acestora utilizând funcția var_dump().

 

<?php $x = 4569; var_dump($x); ?>

 

3. Modificați numele variabilelor în instrucțiunea de afișare pentru a observa proprietatea case-sensitivity a variabilelor.

 

<html>

 

62

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

<body> <?php $color = "red"; echo " My car is " . " . $color . "; echo " My house is" . " . $COLOR. "; echo " My boat is" . " . $CoLoR."; ?> </body> </html>

FIȘA DE LUCRU NR.6- utilizarea structurilor de control

Creați în directorul “day_1” scripturi php pentru a testa rezultatele structurilor de control în PHP.

1. Structurile de decizie if, if else și if elseif

<?php $t = date("H"); if ($t < "10") { echo "Have a good morning!";

}

else {

if ($t < 20) { echo "Have a good day!";

}

else {

echo "Have a good night!";

}

}

?>

2. Structurile repetitive for, while, do while, foreach

<?php $colors=array("red","green","blue","yellow"); foreach($colors as $value){ echo "$value <br>";

}

?>

FIȘA DE LUCRU NR.7- crearea și utilizarea tablourilor

1. Declarați și inițializați un tablou numit cars care să memoreze mărcile a trei mașini. Afișați datele memorate în tablou utilizând instrucțiunea foreach.

<?php $cars = array("Volvo", "BMW", "Toyota");

63

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

foreach($cars as $car) echo "I like " . $car. "<br>"; ?> 2. Declarați și inițializați
foreach($cars as $car)
echo "I like " . $car. "<br>";
?>
2. Declarați
și
inițializați
un
tablou
numit
cars
în
care memorați
mărcile a 3 mașini. Sortați crescător tabloul și afișați datele.
<?php
$cars = array("Volvo", "BMW", "Toyota");
sort($cars);
foreach($cars as $car)
{
echo $car;
echo "<br>";
}
?>

FIȘA DE LUCRU NR.8- transformarea paginilor statice în pagini dinamice

1. În directorul “Day 2/static_HTML” identificați fișierele resurse ale unui website (fișiere .html, imagine, .css, etc).

2. Creați fișierele .php necesare pentru toate secțiunile unei pagini web (header, menu, footer). Menu.php

<?php echo "<ul id='main_menu'>"; echo"<li"; if(basename($_SERVER['PHP_SELF'])=="aktuell.ph

p")

echo " class='selected'"; echo "><a href='aktuell.php'>Aktuelles</a></li>"; echo "<li"; if(basename($_SERVER['PHP_SELF'])=="ueber_uns.

php")

echo " class='selected'"; echo "><a href='ueber_uns.php'>Über uns</a></li>"; echo "<li"; if(basename($_SERVER['PHP_SELF'])=="leistungen

.php")

echo " class='selected'"; echo "><a href='leistungen.php'>Leistungen</a></li>"; echo "<li";

64

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

if(basename($_SERVER['PHP_SELF'])=="team.php") echo " class='selected'"; echo "><a href='team.php'>Team und Kontakt</a></li>"; echo "<li"; if(basename($_SERVER['PHP_SELF'])=="impressum.

php")

echo " class='selected'"; echo "><a href='impressum.php'>Impressum</a></li>"; echo "</ul>"; ?>

3. Ștergeți fișierele html.

FIȘA DE LUCRU NR.9- Crearea funcțiilor și studiul comportamentului variabilelor în diferite domenii de vizib ilitate

1.

Creați o funcție myTest care conține variabila locală x

<?php function myTest() { $x = 5; //variabilă locală echo "<p> Variable x inside function is

$x </p>";

 

}

myTest(); //utilizarea variabilei x în exteriorul funcției //va genera eroare echo "<p> Variable x outside function is $x

 

</p>";

?>

2. Creați o funcție myTest2 care conține variabila locală statică x.

 

<?php function Mytest2 () { static $x =0; echo $x ." <br>"; $x++;

}

Mytest2 ();

Mytest2 ();

Mytest2 ();

?>

3. Creați o funcție myTest3 și o variabilă globală x.

65

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

<?php $x = 5; //variabila globală function Mytest3() { //utilizarea variabilei x în interiorul funcției //va genera o eroare echo "<p>Variable x inside function is : $x

</p>";

}

Mytest3();

echo "<p>Variable x outside function is:

$x</p>";

?>

4. Creați o funcție myTest4 și variabilele globale x și y.

<?php $x = 5; $y = 10; function Mytest4(){

$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];

}

Mytest4();

echo $y;//se afișează valoarea 15 ?>

FIȘA DE LUCRU NR. 10- Crearea unui formular utilizând metodele GET și POST

1. Creați un fișier HTML care afișează un formular cu două câmpuri și un buton submit, utilizând metoda POST.

Exemplul

nr.1

<html> <body> Welcome <b><?php echo $_POST["name"];?></b>

<br>

Your e-mail adress is: <b><?php echo $_POST["e-mail"]; ?></b><br> Your website is: <b><?php echo $_POST["website"]; ?><br></b> You say: <b><?php echo $_POST["comment"]; ?><br></b> And you are a : <b><?php echo $_POST["gender"]; ?></b> </body>

66

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

</html>

Exemplul

nr. 2

<html> <body> <form action = "welcome.php" method="post"> Name: <input type="text" name="name" ><span style="color:red">*</span><br> E-mail: <input type="text" name="e-mail"><span style="color:red">*</span><br> WebSite: <input type="text" name="website"><br> Comment: <textarea name="comment" rows="5"

cols="40"></textarea><br>

<input type="radio" name="gender" value="female">Female <input type="radio" name="gender" value="male">Male<br> <input type="submit"> </form> <p style="color:red">* required field</p> </body> </html>

2. Creați un fișier HTML care afișează un formular cu două câmpuri

și

datelor.

un

buton

Exemplul

nr.1

submit, utilizând metoda GET pentru transmiterea

<html> <body> Welcome <?php echo $_GET["name"];?> <br> Your e-mail address is: <?php echo $_GET["e- mail"]; ?> </body> </html>

Exemplul

nr.2

<html> <body> <form action = "welcome_get.php" method="get"> Name: <input type="text" name="name" ><br> E-mail: <input type="text" name="e-mail"><br> <input type="submit"> </form> </body> </html>

67

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

FIȘA DE LUCRU NR. 11 - Crearea unui formular cu câmpuri obligatorii și validarea datelor din câmpuri

1. În fișierul “form_handling.php” există un script care generează un formular. Scrieți instrucțiunile necesare validării datelor din toate câmpurile formularului.

2. Eliminați caracterele inutile (space, tab, newline) utilizând funcția PHP trim().

3. Eliminați

caracterele

backslash

(\)utilizând

funcția

PHP

stripslashes().

 

4. Creați o funcție test_input() care să realizeze toate verificările.

 

5. variabilele

Adăugați

$nameErr,

$emailErr,

$genderErr

și

$websiteErr.

 

6. Adăugați o instrucțiune if pentru fiecare variabilă $_POST.

 

7. Verificați data introdusă în fiecare câmp din formular și afișați un mesaj corespunzător de eroare în cazul în care într-un câmp nu s -au introdus date.

8. Validați datele introduse, afișând mesaje ca "Does the Name field contain only letters and whitespace?", "Does the E-mail field contain a valid e-mail address syntax?", "Does the Website field contain a valid URL?".

<!DOCTYPE HTML>

 

<html>

<head>

</head>

<body>

<?php // declară și inițizează variabilele folosite //pentru afișarea mesajelor de eroare $name = $email = $gender = $comment = $website

= "";

$nameErr = $emailErr = $genderErr = $websiteErr = $commentErr ="";

 

if ($_SERVER["REQUEST_METHOD"] == "POST") { if(empty($_POST["name"]))

 

{

 

$nameErr="Name is required";

 
 

}

68

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

else

{

$name=test_input($_POST["name"]);

}

if(empty($_POST["email"]))

{

$emailErr="Email is required";

}

else

{

$email=test_input($_POST["email"]);

}

if(empty($_POST["website"]))

{

$websiteErr="Website is required";

}

else

{

$website=test_input($_POST["website"]);

}

if(empty($_POST["comment"]))

{

$commentErr="Comment is required";

}

else

{

$comment=test_input($_POST["comment"]);

}

if(empty($_POST["gender"]))

{

$genderErr="Gender is required";

}

else

{

$gender=test_input($_POST["gender"]);

}

}

function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data;

}

69

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

?>