+ All Categories
Home > Documents > PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE...

PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE...

Date post: 18-Jan-2021
Category:
Upload: others
View: 6 times
Download: 0 times
Share this document with a friend
131
MANUELA CARPEN * ROXANA ASANDULUI * MIHAIELA TUNEA CARMEN-AFRODITA GIOCAȘ * CERASELA-DANIELA CARDAȘ PHP GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
Transcript
Page 1: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

MANUELA CARPEN * ROXANA ASANDULUI * MIHAIELA TUNEA CARMEN-AFRODITA GIOCAȘ * CERASELA-DANIELA CARDAȘ

PHP

GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

Page 2: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

2

Carte elaborată în cadrul proiectului Erasmus + ”Acquisition of professional web programming skills for an earlier integration in the labor market” nr. 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ș

Page 3: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

3

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

Page 4: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

4

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 utilizează 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

Page 5: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

5

1. Introducere

Limbajele pe care se bazează PHP sunt :

• 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 :

• 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:

• http://php.net/manual/ro/

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 rezultatul este

returnat în browser ca un cod HTML simplu

• Fișierele PHP au extensia ".php"

Page 6: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

6

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.

În PHP se pot realiza următoarele operații:

... generare de pagini cu conținut dinamic

... creare, deschidere, citire, scriere, ștergere și închidere de

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

Page 7: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

7

• PHP este gratuit. Descărcați-l din resursa oficială PHP:

www.php.net

• 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 (Notepad++)

• Un browser (Firefox)

Î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 include un subsol, conținut ș i un meniu 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;

Page 8: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

8

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;

}

Page 9: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

9

/* 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;

Page 10: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

10

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;

Page 11: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

11

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">

Page 12: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

12

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

Page 13: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

13

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 :

Figura de mai jos evidențiază ce se întâmplă la execuția pe server a

fișierului basis.php:

Page 14: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

14

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

Cum funcționează www?

• Informațiile web sunt

stocate în documente

numite pagini web

• Paginile Web sunt

fișiere stocate pe

computere numite

servere web

• Calculatoarele care

Page 15: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

15

”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

sursa imaginii: Wikipedia

Figura de mai sus 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 de funcționare al

interpretorului PHP este ilustrat

de figura din dreapta și de figura

din pagina următoare :

Page 16: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

16

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 este 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:

Page 17: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

17

• 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.

Page 18: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

18

Î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!

Page 19: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

19

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

• Numele variabilei trebuie să înceapă cu o literă sau cu

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:

http://www.w3schools.com/php/php_variables.asp

Î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 au fost asociate tipuri de date

acestor variabile.

Page 20: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

20

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

funcție de valoarea care i-a fost atribuită.

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

declare numele și tipul de date al variabilei înainte de a o utiliza.

PHP suportă următoarele tipuri de date:

• 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();

?>

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

http://www.w3schools.com/php/php_datatypes.asp

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:

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

• Global ( în afara unei funcții)

• Super Global (toate domeniile)

Domeniul Global și Local

O variabilă declarată în afara unei funcții are un domeniu de

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

$x = 5; // domeniu global

function myTest() {

// utilizarea variabilei x în interiorul funcției va

genera eroare

echo "<p>Variable x inside function is: $x</p>";

}

Page 21: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

21

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 afara 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;

Page 22: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

22

$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.

Page 23: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

23

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

http://www.w3schools.com/php/php_echo_print.asp

Stringuri PHP

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

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

• 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.

Pentru mai multe informații, accesați link-ul: http://www.

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

Page 24: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

24

• 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 (+, ==, ===, !=, <>, !==)

Pentru mai multe informații accesați linkul:

http://www.w3schools.com/php/php_operators.asp

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...else - execută o secvență de cod dacă o condiție logică

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

este falsă

Page 25: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

25

• if...elseif....else – execută diferite secvențe de cod pentru două

sau mai multe condiții logice

• 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

http://www.w3schools.com/php/php_if_else.asp

http://www.w3schools.com/php/php_switch.asp

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ă.

• do...while - execută o secvență de cod o dată, apoi repetă

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

Pentru sintaxă și exemple accesați linkurile:

http://www.w3schools.com/php/php_looping.asp

http://www.w3schools.com/php/php_looping_for.asp

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":

Page 26: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

26

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:

http://php.net/manual/en/functions.user-defined.php

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

Page 27: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

27

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:

http://www.w3schools.com/php/php_arrays.asp

http://www.w3schools.com/php/php_arrays_sort.asp

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.

Page 28: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

28

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 [email protected]

Rezultate identice cu cele din scriptul anterior se obțin utilizând

metoda HTTP GET:

<html>

<body>

Page 29: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

29

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

În procesarea formularelor este importantă SECURITATEA datelor

transmise!

GET versus POST

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

valoare1, cheie2 => valoare2,....), î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.

Page 30: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

30

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 GET poate fi utilizată în transmiterea datelor mai puțin

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 marcarea paginii care

conține formularul nu este posibilă.

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

http://www.w3schools.com/php/php_forms.aspf

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 Javascript î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.

Page 31: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

31

Cum putem evita vulnerabilitatea variabilei

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

htmlspecialchars().

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 încearcă 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 realizate 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 =

"";

Page 32: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

32

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 variabilele 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"]);

}

Page 33: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

33

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 completarea 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 ”Name”

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 = 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 caracterele stocate în

variabila $name aparțin mulțimii de caractere șablon dată ca parametru

al funcției și fals în caz contrar.

Page 34: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

34

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 ”URL”

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

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

care textul nu este valid se va stoca în variabila $websiteErr un mesaj

de eroare:

$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 identificarea utilizatorului. Cu ajutorul limbajului PHP puteți

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 site-ului.

Pentru identificarea unui cookie "user" utilizăm variabila globală

$_COOKIE.

Funcția isset() verifică dacă cookie a fost creat:

Page 35: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

35

Exemplu:

<?php

$cookie_name = "user";

$cookie_value = "John Doe";

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

(86400 * 30), "/"); // 86400 = 1 zi

?>

<html>

<body>

<?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

http://www.w3schools.com/php/php_cookies.asp

Sesiuni

Sesiunea reprezintă 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 anterioare. 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).

Page 36: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

36

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

session_start();

Page 37: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

37

?>

<!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:

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

Page 38: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

38

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>";

?>

Page 39: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

39

<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.

Page 40: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

40

Putem asocia conceptul de bază de date celui de sistem de arhivare

electronică a datelor.

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.

Page 41: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

41

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

http://www.w3schools.com/php/php_mysql_intro.asp

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) {

Page 42: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

42

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 este utilizată în MySQL pentru crearea

unei tabele.

4. Crearea tabelei MyGuests

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

"reg_date":

Page 43: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

43

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,

deseori, un câmp numeric ID setat cu atributul

AUTO_INCREMENT

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());

}

Page 44: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

44

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

column3,...)

VALUES (value1, value2, value3,...)

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 exemplul următor vom adăuga o nouă înregistrare în tabela

"MyGuests" creată în scriptul precedent.

<?php

$servername = "localhost";

$username = „root";

$password = "";

$dbname = "myDB";

Page 45: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

45

// 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', '[email protected]')";

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

echo "New record created successfully";

} else {

echo "Error: " . $sql . "<br>" .

mysqli_error($conn);

}

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)

Page 46: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

46

VALUES ('John', 'Doe', '[email protected]')";

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', '[email protected]');";

$sql .= "INSERT INTO MyGuests (firstname, lastname,

email)

VALUES ('Mary', 'Moe', '[email protected]');";

$sql .= "INSERT INTO MyGuests (firstname, lastname,

email)

VALUES ('Julie', 'Dooley', '[email protected]')";

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

echo "New records created successfully";

} else {

echo "Error: " . $sql . "<br>" .

mysqli_error($conn);

}

Page 47: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

47

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["lastname"]. "<br>";

}

} else {

echo "0 results";

}

mysqli_close($conn);

?>

Page 48: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

48

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

Page 49: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

49

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 ?

Page 50: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

50

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 următoarele operații:

• Crearea și ștergerea unei baze de date

• Crearea / ștergerea/ modificarea tabelelor și a tabelelor

virtuale (views)

• Ș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:

https://www.phpmyadmin.net/docs/

Page 51: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

51

Etapele creării unei baze de date MySQL

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.

Page 52: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

52

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 Deschidere 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

Page 53: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

53

creat.

x Fișierul este creat și deschis 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 următorul exemplu se citește întreg conținutul fișierului

"webdictionary.txt" : 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); ?>

Page 54: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

54

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 exemplul de mai jos, se afișează pe ecran caracter cu caracter

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

<?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.

Page 55: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

55

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 "newfile.txt" va avea următorul conținut, după execuția

scriptului:

John Doe

Jane Doe

Suprascrierea într-un fișier

În exemplul următor deschidem fișierul "newfile.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);

Page 56: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

56

$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.

Page 57: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

57

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 în directorul uploads creat

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:

// Verificăm dacă există fișierul

if (file_exists($target_file)) {

echo "Sorry, file already exists.";

$uploadOk = 0;

}

Page 58: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

58

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;

Page 59: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

59

}

}

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

e"], $target_file)) {

echo "The file ". basename(

$_FILES["fileToUpload"]["name"]). " has been

uploaded.";

} else {

echo "Sorry, there was an error uploading

your file.";

}

}

?>

Page 60: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

60

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 lansând în execuție

fișierul xampp-control.exe.

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

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/htdocs/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>';

?>

Page 61: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

61

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

Page 62: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

62

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>

Page 63: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

63

<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");

Page 64: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

64

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";

Page 65: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

65

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.

Page 66: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

66

<?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>

Page 67: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

67

</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 un buton submit, utilizând metoda GET pentru transmiterea

datelor.

Exemplul nr.1 <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>

Page 68: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

68

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. Adăugați variabilele $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";

}

Page 69: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

69

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;

}

Page 70: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

70

?>

<h2>PHP Form Validation Example</h2>

<form method="post" action="<?php echo

htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Name: <input type="text" name="name">

<?php echo $nameErr; ?> <br><br>

E-mail: <input type="text" name="email">

<?php echo $emailErr;?> <br><br>

Website: <input type="text" name="website">

<?php echo $websiteErr;?> <br><br>

Comment: <textarea name="comment" rows="5"

cols="40"></textarea>

<?php echo $commentErr;?> <br><br>

Gender: <input type="radio" name="gender"

value="female">Female

<input type="radio" name="gender"

value="male">Male

<?php echo $genderErr;?> <br><br>

<input type="submit" name="submit" value="Submit">

</form>

<?php

echo "<h2>Your Input:</h2>";

echo $name;

echo "<br>";

echo $email;

echo "<br>";

echo $website;

echo "<br>";

echo $comment;

echo "<br>";

echo $gender;

?>

</body>

</html>

FIȘA DE LUCRU NR. 12- Crearea, modificarea și ștergerea unui

cookie

1. Creați un cookie numit "user" care să memoreze valoarea "John

Page 71: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

71

Doe". Cookie-ul va expira după 30 de zile (86400 * 30). Simbolul

"/" semnifică faptul că cookie-ul va fi vizibil în întreg site-ul.

Determinarea valorii memorate de cookie se realizează cu ajutorul

variabilei globale. Utilizați funcția isset() pentru a verifica dacă au

fost făcute setările pentru cookie. <?php

$cookie_name="user";

$cookie_value="John Doe";

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

(86400*30) ,"/");

?>

<html>

<body>

<?php

if(!isset($_COOKIE[$cookie_name])){

echo "Cookie named '".$cookie_name."'is

not set!";

}

else{

echo "Cookie named '".$cookie_name."'

is set!<br>";

echo "Value is:

".$_COOKIE[$cookie_name];

}

?>

</body>

</html>

2. Ștergeți cookie-ul “user”, utilizând funcția setcookie() pentru

setarea orei de expirare cu o oră în urmă față de ora curentă. <?php

//setăm ora de expirare cu o oră în urmă

//față de ora curentă

setcookie("user","",time()-3600);

?>

<html>

<body>

<?php

echo "Cookie 'user' is deleted ";

?>

</body>

</html>

3. Verificați dacă un cookie este activ. Mai întâi, creați un cookie

utilizând funcția setcookie(), apoi verificați numărul de cookies

active folosind funcția count().

Page 72: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

72

<?php

setcookie("test_cookie", "test", time() +

3600, '/');

?>

<html>

<body>

<?php

if(count($_COOKIE)>0) {

echo "Cookies are enabled.";

}

else {

echo "Cookies are disabled.";

}

?>

</body>

</html>

FIȘA DE LUCRU NR. 13 - Crearea, modificarea și ștergerea

sesiunilor

1. Creați o sesiune care să conțină variabilele favcolor și favanimal <?php

//începerea sesiunii

session_start();

?>

<html>

<body>

<?php

// Setarea datelor sesiunii

$_SESSION["favcolor"] = "none";

$_SESSION["favanimal"] = "dog (Golden

Retriever)";

echo "Session variables are set.";

?>

</body>

</html>

Page 73: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

73

2. Utilizați instrucțiunea print_r pentru a afișa valorile variabilelor

sesiunii curente. <?php

session_start()

?>

<html>

<body>

<?php

print_r($_SESSION);

?>

</body>

</html>

3. Scrieți un script PHP pentru a modifica valoarea variabilei favcolor

a sesiunii curente prin suprascriere <?php

session_start()

?>

<html>

<body>

<?php

//modificăm variabila sesiune prin

suprascriere

$_SESSION["favcolor"] = "fuchsia";

print_r($_SESSION);

?>

</body>

</html>

4. Scrieți un script PHP pentru eliminarea tuturor datelor unei sesiuni <?php

session_start()

?>

<html>

<body>

<php session_unset();

session_destroy(); ?></body>

</html>

Page 74: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

74

FIȘA DE LUCRU NR. 14- MySQL-Crearea conexiunii la baza de

date, crearea bazei de date și a tabelelor

1. Scrieți un script PHP pentru conexiunea la baza de date. <?php

$servername="localhost";

$username="root";

$password="";

$conn=mysqli_connect($servername,$username,$pa

ssword);

if(!$conn)

{

die("connection

failed".mysqli_connect_error());

}

else

echo "Connected succeded";

?>

2. Scrieți un script PHP pentru a crea baza de date myDB <?php

$servername="localhost";

$username="root";

$password="";

$conn=mysqli_connect($servername,$username,$pa

ssword);

if(!$conn)

{

die("connection

failed".mysqli_connect_error());

}

// echo "Connected succeded";

$sql = "CREATE DATABASE myDB";

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

echo "Database created successfully";

} else {

echo "Error creating database: " .

mysqli_error($conn);

}

mysqli_close($conn); ?>

Page 75: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

75

3. Scrieți un script PHP care creează tabela Myguests în interiorul

bazei de date myDB. <?php

$servername="localhost";

$username="root";

$password="";

$dbname="myDB";

$conn=mysqli_connect($servername,$username,$pa

ssword,$dbname);

if(!$conn)

{

die("connection

failed".mysqli_connect_error());

}

// echo "Connected succeded";

$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 with

success!";

}

else {

echo "Error creating

table!".mysqli_error($conn);

}

mysqli_close($conn);

?>

FIȘA DE LUCRU NR. 15 - MySQL - Utilizarea comenzilor INSERT

și UPDATE

1. Scrieți un script PHP care înserează în tabela Myguests o

înregistrare nouă cu numele John Doe și email-ul

[email protected]. <?php

$servername="localhost";

$username="root";

$password="";

$dbname="myDB";

Page 76: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

76

$conn=mysqli_connect($servername,$username,$pa

ssword,$dbname);

if(!$conn)

{

die("connection

failed".mysqli_connect_error());

}

// echo "Connected succeded";

$sql="INSERT INTO MyGuests (firstname,

lastname, email)

VALUES ('John', 'Doe', '[email protected]')";

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

echo "New recorded created with

success!";

}

else {

echo

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

}

mysqli_close($conn);

?>

2. Scrieți un script PHP care înserează în tabela Myguests trei

înregistrări. <?php

$servername = "localhost";

$username = "username";

$password = "password";

$dbname = "myDB";

$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', '[email protected]');";

$sql .= "INSERT INTO MyGuests (firstname,

lastname, email)

VALUES ('Mary', 'Moe', '[email protected]');";

$sql .= "INSERT INTO MyGuests (firstname,

Page 77: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

77

lastname, email)

VALUES ('Julie', 'Dooley',

'[email protected]')";

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

echo "New records created successfully";

} else {

echo "Error: " . $sql . "<br>" .

mysqli_error($conn);

}

mysqli_close($conn);

?>

FIȘA DE LUCRU NR. 16- MySQL- afișarea datelor unui utilizator

stocate în baza de date în cadrul unui script de login la site

1. Scrieți un script PHP care să permită conectarea unui utilizator la

baza de date cu ajutorul datelor introduse într-un formular. <?php

//start session or take session

session_start();

//Connection with database project

$servername="localhost";

$username="root";

$password="";

$dbname="project";

//create connection

$conn = mysqli_connect($servername, $username,

$password, $dbname);

if(!$conn)

die("Connection failed ".

mysqli_connect_error());

$sql="SELECT * FROM person Where

Lastname LIKE '" . $_POST["name"]. "' AND

Password LIKE '" .$_POST["password"]. "' ";

$result=mysqli_query($conn, $sql);

if(mysqli_num_rows ($result) > 0){

$row = mysqli_fetch_assoc($result);

$_SESSION["name"] = $_POST["name"];

$_SESSION["firstname"]=$row["firstname"

];

$_SESSION["role"]=$row["role"];

$_SESSION["gender"]=$row["gender"];

Page 78: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

78

$_SESSION["email"]=$row["email"];

}

?>

<?php

include 'control.inc.php';

?>

<html>

<body>

<h3>Intro page</h3>

<?php

echo "<p>Hello ". $_SESSION["name"]. " !

</p>";

echo "<h3>You are a ". $_SESSION['role'].

"</h3>";

echo "<h3>And you are a " .$_SESSION['gender']

. "</h3>";

echo "<h3>Your email is " . $_SESSION['email']

. "</h3>";

?>

<p><a href="http://localhost/Day_5/other.php">

Go to another page </a></p>

<p><a

href="http://localhost/Day_5/logoff.php"> Log off

</a></p>

</body>

</html>

Page 79: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

79

4. Crearea unui website dinamic utilizând PHP

Magazin online

Proiectul MAGAZIN ONLINE constă în realizarea unui webs ite de

comenzi virtuale pentru rechizite școlare folosind cunoştinţe de html,

css , php și mysql.

Pentru început se va crea un șablon pentru site.

Paginile html, vor avea secțiunile: antet, subsol, meniul principal si

porțiunea în care va fi afișat conținutul, secțiuni realizate folosind div-

uri.

Site-ul conține un meniu cu următoarele opțiuni:

• Home,

• Descriere

• Produse

• Contact

Pentru realizarea unui design cât mai atractiv au fost create mai multe

fișiere .css pentru formatarea paginilor site-ului.

Astfel:

• în login.css este inclus codul folosit la pagina de logare

• style-cos.css include codul folosit la coșul de cumpărături

• style-home.css include stilul pentru pagina de Start și pentru

pagina principală

• style-item.css creează un stil pentru obiectele, imaginile site-

ului

• style-contact.css asigură stilul paginii de contact

• style-descriere.css conferă paginii de descriere un aspect mai

complex

• în style-produse.css este creat stilul paginii produse.php

Conținutul fișierului home.php este următorul:

<html>

<head>

<title> magazinonline.ro </title>

<?php

// se specifica includerea fisierului php.

include 'include/include_start.php';

?>

<!-- se specifica includerea fisierului css -->

<link rel='stylesheet' href='css/style-

home.css'>

Page 80: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

80

</head>

<body style='background-image:

url("img/background.jpg");'>

<?php

include 'include/user-bar.php';

?>

<div class='container'>

<?php

include 'include/menu.php';

?>

<div class='content'><img src='img/main.jpg'></div>

</div>

<?php

include 'include/footer.php';

?>

</body>

</html>

Conținutul fișierului style-home.css:

body{

margin: 0px;

padding: 0px;

}

.container {

margin-bottom:100px;

overflow:hidden;

margin-top: 40px;

}

.content {

width: 900px;

height: 480px;

margin: auto;

margin-top: 10px;

}

.content img{

width:900px;

height: 480px;

}

Page 81: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

81

Fișierul style-produse.css:

body{

margin: 0px;

padding: 0px;

}

.container {

margin-bottom:100px;

overflow:hidden;

margin-top: 40px;

}

.search {

width: 400px;

margin-top: 10px;

margin-left: 20px;

}

.search input{

width: 100%;

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

padding: 5px;

}

.left-bar {

float: left;

width: 300px;

background-color: #E6E6E6;

margin-top: 50px;

margin-left: 50px;

display: inline-block;

}

.left-bar ul{

margin-left: 0px;

}

.left-bar ul li{

padding: 5px;

border-bottom: 1px solid white;

}

.left-bar ul li a{

text-decoration: none;

color: black;

}

Page 82: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

82

.left-bar ul li a:hover {

color: blue;

padding: 10px;

font-size: 20px;

}

.category-header{

background-color: #11A1D1;

height: 30px;

line-height: 40px;

color: white;

padding-left: 30px;

}

.content {

background-color: #D3F5BC;

float: right;

width: 800px;

margin-right: 50px;

margin-top: 50px;

display: inline-block;

}

.imagine-produs{

width: 234px;

height: 300px;

padding: 5px;

margin: 10px;

float: left;

border: 1px solid black;

}

.imagine-produs img{

width: 228px;

height: 228px;

margin: 5px;

}

.imagine-produs a{

text-decoration: none;

color: black;

}

Page 83: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

83

Continutul fișierului login.css este:

html, body{

margin: 0;

padding: 0;

}

.container{

width: 720px;

margin: auto;

margin-top: 40px;

margin-bottom: 100px;

}

.login{

float: left;

background-color: #3AE8B7;

width: 300px;

height: 200px;

margin-top: 40px;

margin-bottom: 100px;

padding: 20px;

}

.sign-up{

float: right;

background-color: #3AE8B7;

width: 300px;

height: 350px;

margin-top: 40px;

margin-bottom: 100px;

padding: 20px;

}

h1 {

text-align: center;

color: black;

}

.form {

width: 250px;

margin: auto;

}

.error {

color: red;

text-align: center;

}

Page 84: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

84

Fișierul style-item.css cu următorul conținut formatează imaginile

inserate în pagini:

html body{

margin: 0;

padding: 0;

}

.container{

background-color: #9BF2D8;

margin: auto;

width: 1000px;

margin-top: 100px;

height: 500px;

margin-bottom: 100px;

}

.image{

float: left;

width: 300px;

height: 300px;

margin: 20px;

}

.image img{

width: 100%;

height: 100%;

border: 1px solid black;

}

.content {

padding-top: 50px;

padding-left: 400px;

padding-bottom: 120px

}

Fișierul style-descriere.css:

html, body{

padding: 0px;

margin: 0px;

}

.content{

width: 800px;

background-color: #b3ffcc;

margin: auto;

height: 400px;

Page 85: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

85

margin-top: 50px;

border: 5px dotted black;

}

.descriere{

padding: 30px;

}

.descriere h1{

color: #ff3300;

font-family:"Lucida Sans Unicode", "Lucida

Grande", sans-serif;

text-align: center;

}

descrie ul{

list-style-type: circle;

}

.descriere li{

color: #00cc44;

margin-top: 20px;

font-family:"Lucida Sans Unicode", "Lucida

Grande", sans-serif;

}

.descriere p{

font-family:"Lucida Sans Unicode", "Lucida

Grande", sans-serif;

float: right;

bottom: 0px;

font-size: 15px;

color: #ff3300;

}

Fișierul style-cos.css:

html, body{

margin: 0;

padding: 0;

}

.container{

margin-bottom: 100px;

}

.content{

width: 740px;

background-color: rgb(189,249,136);

margin: auto;

margin-bottom: 100px;

margin-top: 50px;

padding-bottom: 30px;

Page 86: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

86

}

.obiect {

background-color: rgb(241,248,203);

margin-top: 10px;

height: 200px;

border: 1px solid rgb(159,159,159);

}

.imagine {

float: left;

height: 200px;

width: 200px;

}

.imagine img{

height: 100%;

width:100%;

}

.descriere {

float:right;

width: 480px;

height: 180px;

padding-top: 3px;

}

.total {

height: 100px;

background-color: #AFC3F0;

margin-top: 50px;

text-align: center;

padding-top: 2px;

margin-bottom: 0px;

border: 1px solid rgb(159,159,159);

}

Fișierul style-contact.css:

html, body{

padding: 0px;

margin: 0px;

}

.content{

width: 800px;

background-color: #b3ffcc;

margin: auto;

height: 400px;

margin-top: 50px;

border: 1px solid rgb(159,159,159);

}

Page 87: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

87

.descriere{

float: right;

width: 340px;

height: 340px;

padding: 30px;

background-color: white;

border-left: 1px solid rgb(159,159,159);

}

.descriere h1{

color: #ff3300;

font-family:"Lucida Sans Unicode", "Lucida

Grande", sans-serif;

text-align: center;

}

.descriere p{

font-family:"Lucida Sans Unicode", "Lucida

Grande", sans-serif;

bottom: 0px;

font-size: 15px;

color: #ff3300;

}

.descriere img{

width: 40px;

haight: 40px;

}

.map{

width:399px;

height:400px;

float: left;

}

Pentru crearea bazei de date a site-ului se vor activa Apache, MySQL,

FileZilla din aplicația xampp, apoi se deschide în browser fereastra

localhost/phpmyadmin.

Page 88: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

88

Pasul 1. Se va crea o nouă bază de date, numită în cazul nostru

magazin. Pentru aceasta se acționează butonul New din lista din

stânga ferestrei.

Page 89: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

89

În noua bază de date vom crea tabelele:

• cos este tabela care conține produsele selectate de utilizator

• produse este tabela care conține detalii despre fiecare produs

în parte

• utilizator este tabela care conține date despre utilizatori

Tabela utilizator conține următoarele câmpuri:

• id_user int(11), auto_increment, cheie primară

• email varchar(60)

• parola varchar(30)

• judet varchar(20)

• localitate varchar(20)

• adresa varchar(100)

• telefon varchar(15)

Page 90: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

90

Tabela produse conține următoarele câmpuri:

• id int(11), auto_increment, cheie primară

• nume varchar(50)

• imagine varchar(50)

• pret float(10, 2)

• categorie varchar(50)

• descriere text

• stoc int(11)

Page 91: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

91

Tabela cos conține următoarele câmpuri:

• id_comanda int(11), auto_increment, cheie primară

• id_produs int(11)

• id_user int(11)

• stoc int(11)

• comanda int(11)

Pasul 2. Odată realizate tabelele, se vor stabili relațiile dintre ele în

modul design, ca în imaginea de mai jos.

Page 92: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

92

Observație: Dacă unei tabele nu i s -a stabilit o cheie primară, pentru a

putea realiza o relație, trebuie să ne asigurăm că este indexat câmpul

de legătură.

Page 93: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

93

În continuare vom popula tabelele cu informații.

Pasul 3. Vom crea un fișier care va face conexiunea la baza de date.

include_database.php

<?php

session_start();

$servername = „localhost‟;

$username = „root‟;

$password = „‟;

$dbname = „magazin‟;

$conn = mysqli_connect($servername, $username,

$password, $dbname);

?>

Page 94: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

94

Pasul 4. Se pot afișa informațiile din tabele, de exemplu din tabela

produse.

produse.php

<html>

<head>

//includem pagina de conectare la baza de date

<?php

include “include_database.php”;

?>

</head>

<body>

<h1> acestea sunt produsele noastre: </h1>

<?php

/*afisam continutul tabelei folosind comanda sql,

select*/

$sql = “SELECT * FROM produse”;

Page 95: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

95

//executam cerinta

$result = mysqli_query($conn, $sql);

//afisam detaliile fiecarui produs

while($row = mysqli_fetch_assoc($result)){

echo “<img src=‟img/”.$row[„imagine‟].”‟><br>

Nume: “.$row[„nume‟].”<br> Pret:

“.$row[„pret‟].”<br> Descriere:

“.$row[„descriere‟].” <br> Stoc: “.$row[„stoc‟].”

<br> Categorie: “.$row[„categorie‟].””;

}

?>

</body>

</html>

Pasul 4. Adăugăm o bară de căutare pentru produse.

produse.php

<html>

<head>

//includem pagina de conectare la baza de date

<?php

include “include_database.php”;

?>

</head>

<body>

<!--Adaugam bara de cautare sub aspectul unei

forme--> <form action=‟produse.php‟ action=‟post‟>

<input type=‟text‟ name=‟cauta‟

placeholer=‟Cauta produse‟>

</form>

<h1> acestea sunt produsele noastre </h1>

<?php

/*aplicam comanda select pentru a afisa continutul

tabelei produse*/

$sql = “SELECT * FROM produse”;

/*verificam daca bara de cautare a fost completata

si nu este goala*/

if(isset($_POST[„cauta‟]) && $_POST[„cauta‟]

!= „‟)

{

//adaugam comenzi la variabila sql $sql .= “ WHERE nume LIKE

„%”.$_POST[„cauta‟].”%‟ OR descriere LIKE

„%”.$_POST[„cauta‟].”%‟ OR categorie LIKE

„”.$_POST[„cauta‟].”‟”;

Page 96: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

96

/*caracterele % se folosesc în structura %string%

pentru a cauta in baza de date stringul dat ca si

secventa: de exemplu daca in baza de date este

stringul “Bine ati venit la cursul de php!” si

cautam “%php%” vom gasi propozitia dorita */

}

$result = mysqli_query($conn, $sql);

//pentru fiecare produs afisam detaliile

while($row = mysqli_fetch_assoc($result)){

echo “<img src=‟img/”.$row[„imagine‟].”‟><br>

Nume: “.$row[„nume‟].”<br> Pret:

“.$row[„pret‟].”<br> Descriere:

“.$row[„descriere‟].” <br> Stoc: “.$row[„stoc‟].”

<br> Categorie: “.$row[„categorie‟].””;

}

?>

</body>

</html>

Pasul 5. Vom crea o pagină de logare pentru utilizatori.

login.php

<html>

<head>

<!--includem pagina de conectare la baza de date-->

Page 97: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

97

<?php

include “include_database.php”;

//verificam existenta contului in baza de date

include “control_login.php”;

?>

</head>

<body>

<!--realizam un formular pentru logare (nu uitati sa

introduceti si cativa utilizatori in tabela

utilizatori din baza de date) --> <form action=‟login.php‟ method=‟post‟>

<input type=‟email‟ name=‟email‟

placeholder=‟Email‟>

<input type=‟password‟ name=‟parola‟

placeholder=‟Parola‟>

<input type=‟submit‟ name=‟send‟ value=‟Login‟>

</form>

</body>

</html>

control_login.php

<?php

<!--verificam daca a fost trimis vreun formular de

logare, testand daca exista variabila $_POST[„send‟]

-->

if(isset($_POST[„send‟]))

{

<!--verificam daca au fost completate campurile

trimise si nu au fost vide-->

if($_POST[„email‟] != „‟ && $_POST[„parola‟] !=

„‟)

{

//verificam daca exista contul dat

$sql = “SELECT * FROM utilizator WHERE email

= „”.$_POST[„email‟].”‟ AND parola =

„”.$_POST[„parola‟].”‟”;

Page 98: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

98

$result = mysqli_query($conn, $sql);

//daca exista contul, il memoram in sesiune

if(mysqli_num_rows($result)>0)

{

<!--memorăm datele utilizatorului in variabila $row

si salvam id-ul in sesiune-->

$row = mysqli_fetch_assoc($result);

$_SESSION[„id‟] = $row[„id‟];

} } }

?>

Pasul 6. În fișierul produse.php adăugam butonul ”Adauga in cos”

pentru fiecare produs.

produse.php

<html>

<head>

<!--includem pagina de conectare la baza de date-->

<?php

include “include_database.php”;

//includem pagina pentru adaugarea de produse in cos

include “adauga_cos.php”;

?>

</head>

<body>

<!--bara de cautare-->

<form action=‟produse.php‟ action=‟post‟>

<input type=‟text‟ name=‟cauta‟

placeholer=‟Cauta produse‟>

</form>

<h1> acestea sunt produsele noastre </h1>

<?php

//se afiseaza tabela

$sql = “SELECT * FROM produse”;

//se verifica daca bara de cautare nu este goala

if(isset($_POST[„cauta‟]) &&

$_POST[„cauta‟] != „‟)

{

//se adauga criterii de cautare

$sql .= “ WHERE nume LIKE

„%”.$_POST[„cauta‟].”%‟ OR descriere LIKE

„%”.$_POST[„cauta‟].”%‟ OR categorie LIKE

„”.$_POST[„cauta‟].”‟”;

Page 99: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

99

<!--se cauta in baza de date secventa care contine

structura %string%-->

//se executa comanda

$result = mysqli_query($conn, $sql);

//se afiseaza detaliile fiecarui produs

while($row = mysqli_fetch_assoc($result)){

echo “<img src=‟img/”.$row[„imagine‟].”‟><br>

Nume: “.$row[„nume‟].”<br> Pret:

“.$row[„pret‟].”<br> Descriere:

“.$row[„descriere‟].” <br> Stoc: “.$row[„stoc‟].”

<br> Categorie: “.$row[„categorie‟].””;

echo “<br> <form

action=‟produse.php?produs_id=”.$row[„id‟].”‟

method=‟post‟>

<input type=‟submit‟ name=‟adauga‟

value=‟Adauga in cos‟>

</form>”;

}

?>

</body>

</html>

Page 100: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

100

adauga_cos.php

<?php

/*verificam daca utilizatorul este logat, daca s-a

trimis formularul si id-ul produsului adaugat in

cos*/

if(isset($_SESSION[„id‟]) &&

isset($_GET[produs_id]) && isset($_POST[„adauga‟]))

{

//interogam tabela cautand produsul adaugat in cos

$sql = “SELECT * FROM produse WHERE id =

„”.$_GET[„produs_id‟].”‟”;

//se executa comanda

$result = mysqli_query($conn, $sql);

//se verifica daca exista produsul

if(mysqli_num_rows($result) > 0)

{

//se memoreaza datele produsului

$row = mysqli_fetch_assoc($result);

//se adauga produsul in cos

$sql =

”INSERT INTO cos (`id_produs`, `id_user`, `stoc`, `c

omanda`)

VALUES ( '”.$row[„id‟].”', '”.$_SESSION[„id‟].”', '

1', '0')”;

//se memoreaza produsul in variabila $res

$res = mysqli_query($conn, $sql);

} }?>

Pasul 7. În pagina cos.php vom afișa conținutul coșului utilizatorului

logat.

cos.php

<html>

<head>

<!--se include pagina de conectare la baza de date

-->

<?php

include “include_database.php”;

?>

</head>

<body>

<h1> Cosul meu </h1>

Page 101: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

101

<!--se afiseaza toate produsele din cosul

utilizatorului, daca acesta este logat -->

<?php

//se verifica daca utilizatorul este logat

if(isset($_SESSION[„id‟]))

{

/*se selecteaza toate produsele din cos care au id-

ul utilizatorului si inca nu au fost comandate*/

$sql = “SELECT * FROM cos WHERE id_user =

„“.$_SESSION[„id‟].”‟ AND comanda = „0‟”;

// se memoreaza rezultatul

$result = mysqli_query($conn, $sql);

//pentru fiecare produs gasit

while($row_cos = mysqli_fetch_assoc($result))

{

//se selecteaza produsul cu id-ul din cos

$sql = “SELECT * FROM produse WHERE id =

„”.$row_cos[„id_produs‟].”‟”;

//se memoreaza rezultatul

$res = mysqli_query($conn, $sql);

//se memoreaza datele produsului

$produs = mysqli_fetch_assoc($res);

//se afiseaza date despre fiecare produs din cos echo “<img

src=‟img/”.$produs[„imagine‟].”‟><br>

Pret: “.$produs[„pret‟].”<br>

Descriere: “.$produs[„descriere‟].”<br>”;

}

}

?>

</body>

</html>

Page 102: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

102

Pasul 8. Se calculează totalul comenzii și se activează butonul de

ștergere a produselor din coș.

cos.php

<html>

<head>

<!--se include pagina de conectare la baza de date

-->

<?php

include “include_database.php”;

//se include fișierul operatii_in_cos.php

include “operatii_in_cos.php”;

?>

</head>

<body>

<h1> Cosul meu </h1>

Page 103: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

103

<!--se afiseaza toate produsele din cosul

utilizatorului, daca acesta este logat -->

<?php

//se verifica dacă utilizatorul este logat

if(isset($_SESSION[„id‟]))

{

/*se selecteaza toate produsele din cos care au id-

ul utilizatorului si inca nu au fost comandate*/

$sql = “SELECT * FROM cos WHERE id_user =

„“.$_SESSION[„id‟].”‟ AND comanda = „0‟”;

//se memoreaza rezultatul

$result = mysqli_query($conn, $sql);

//se initializeaza pretul total

$total = 0;

//pentru fiecare produs gasit

while($row_cos = mysqli_fetch_assoc($result))

{

//se selecteaza produsul cu id-ul din cos

$sql = “SELECT * FROM produse WHERE id =

„”.$row_cos[„id_produs‟].”‟”;

//se memoreaza rezultatul

$res = mysqli_query($conn, $sql);

//se memoreaza datele produsului

$produs = mysqli_fetch_assoc($res);

//se adauga pretul produsului la total $total += $produs[„pret‟];

//se afiseaza date despre fiecare produs din cos

echo “<img

src=‟img/”.$produs[„imagine‟].”‟><br>

Pret: “.$produs[„pret‟].”<br>

Descriere: “.$produs[„descriere‟].”<br>”;

//se adauga buton pentru stergere din cos

echo “<form

action=‟cos.php?produs_id=”.$produs[„id‟].”‟

method=‟post‟>

<input type=‟submit‟ name=‟delete‟

value=‟Sterge din cos‟>

</form>”;

}

/*dupa ce s-au afisat toate produsele se afiseaza

pret total comanda*/

echo “<br><b>Pret total comanda: </b> ”.$total;

}

?>

</body>

</html>

Page 104: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

104

operatii_in_cos.php

<?php

/*se verifica daca s-a trimis formularul pentru

stergerea unui obiect din cos*/

if(isset($_POST[„delete‟]) &&

isset($_GET[„produs_id‟]))

{

//daca e cazul,se sterge obiectul din cos

$sql e ca = “DELETE FROM cos WHERE id_produs =

„”.$_GET[„produs_id‟].”‟ AND id_user =

„”.$_SESSION[„id‟].”‟ AND comanda = „0‟”;

//se memoreaza rezultatul

$res = mysqli_query($conn, $sql);

}

?>

Page 105: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

105

Pasul 9. Se finalizează comanda printr-un buton specific, care odată

activat va face o serie de verificări: de logare și de calcul a

conținutului coșului.

cos.php

<html>

<head>

<!--se include pagina de conectare la baza de date

-->

<?php

include “include_database.php”;

//se include fisierul operatii_in_cos.php

include “operatii_in_cos.php”;

?>

</head>

<body>

Page 106: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

106

<h1> Cosul meu </h1>

<!--se afiseaza toate produsele din cosul

utilizatorului, daca acesta este logat -->

<?php

//se verifica dacă utilizatorul este logat

if(isset($_SESSION[„id‟]))

{

/*se selecteaza toate produsele din cos care au id-

ul utilizatorului si inca nu au fost comandate*/

$sql = “SELECT * FROM cos WHERE id_user =

„“.$_SESSION[„id‟].”‟ AND comanda = „0‟”;

//se memoreaza rezultatul

$result = mysqli_query($conn, $sql);

//se initializeaza pretul total

$total = 0;

//pentru fiecare produs gasit in cos

while($row_cos = mysqli_fetch_assoc($result))

{

//se selecteaza produsul cu id-ul din cos

$sql = “SELECT * FROM produse WHERE id =

„”.$row_cos[„id_produs‟].”‟”;

//se memoreaza rezultatul

$res = mysqli_query($conn, $sql);

//se memoreaza datele produsului

$produs = mysqli_fetch_assoc($res);

//se adauga pretul produsului la total

$total += $produs[„pret‟];

//se afiseaza date despre fiecare produs din cos

echo “<img src=‟img/”.$produs[„imagine‟].”‟><br>

Pret: “.$produs[„pret‟].”<br>

Descriere: “.$produs[„descriere‟].”<br>”;

//se adauga buton pentru stergere din cos

echo “<form

action=‟cos.php?produs_id=”.$produs[„id‟].”‟

method=‟post‟>

<input type=‟submit‟ name=‟delete‟ value=‟Sterge din

cos‟>

</form>”;

}

//se afiseaza pretul total

echo “<br><b>Pret total comanda: </b> ”.$total;

//se adauga buton pentru comanda

echo “<form action=‟cos.php‟ method=‟post‟

<input type=‟submit‟ name=‟comanda‟ value=‟Finiseaza

comanda‟>

Page 107: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

107

</form>”;

}

?>

</body></html>

operatii_in_cos.php

<?php

/*se verifica daca s-a trimis formularul pentru

stergerea unui obiect din cos */

if(isset($_POST[„delete‟]) &&

isset($_GET[„produs_id‟]))

{

//se sterge obiectul din cos

$sql = “DELETE FROM cos WHERE id_produs =

„”.$_GET[„produs_id‟].”‟ AND id_user =

„”.$_SESSION[„id‟].”‟ AND comanda = „0‟”;

//se memoreaza rezultatul

$res = mysqli_query($conn, $sql);

}

//daca este actionat butonul comenzii finale

if(isset($_POST['comanda']))

{

/*se cauta toate produsele din cosul utilizatorului

care nu au fost comandate inca si se marcheaza ca

fiind trimise*/

$sql = "SELECT * FROM cos WHERE id_user =

'".$_SESSION['id']."' AND comanda = '0'";

//se memoreaza rezultatul

$result = mysqli_query($conn, $sql);

/*pentru fiecare produs din cos variabila $row preia

datele */

while($row = mysqli_fetch_assoc($result))

{

//se realizeaza un update in campul comanda

$sql = "UPDATE cos SET comanda = '1' WHERE

id_comanda = '".$row['id_comanda']."'";

//se memoreaza rezultatul

$res = mysqli_query($conn, $sql);

/*se calculeaza cat a mai ramas stocul produsului

comandat, se cauta produsul comandat cu ajutorul id-

ului*/

$sql = "SELECT * FROM produse WHERE id =

'".$row['id_produs']."'";

//se memoreaza rezultatul

$rezultat = mysqli_query($conn, $sql);

Page 108: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

108

//se preiau datele produsului in $produs

$produs = mysqli_fetch_assoc($rezultat);

//se calculeaza stocul ramas in $stoc_ramas

$stoc_ramas = $produs['stoc'] - $row['stoc'];

//se face actualizarea produsului

$sql = "UPDATE produse SET stoc =

'".$stoc_ramas."' WHERE id = '".$produs['id']."';";

//se memoreaza rezultatul

$rezultat_final = mysqli_query($conn, $sql);

}

}

?>

Folderul website-ului ar trebui să conțină următoarele fișiere și

subfoldere:

Page 109: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

109

Pentru se putea realiza logarea se va crea fișierul login.php.

Împărțirea paginii se face folosind secțiuni create cu div-uri.

Formularul pentru autentificare utilizează o adresă de email ce va fi

stocată în baza de date și o parolă.

login.php

<html>

<head>

<title> magazinonline.ro </title>

<link rel='stylesheet' href='css/login.css'>

<?php

include 'include/include_start.php';

include 'include/control_login.php'

?>

</head>

<body style='background-image:

url("img/background.jpg");padding-top: 40px;'>

<?php

include 'include/user-bar.php';

include 'include/menu.php';

?>

<div class='container'>

<div class='login'>

<?php

/*verificarea datelor de autentificare memorate in

baza de date */

if(isset($login))

echo $login;

?>

Page 110: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

110

<h1> Autentifica-te </h1>

<div class='form'>

<form method='post' action=''>

<p>email: <input type='email'

name='email'></p>

<p>parola: <input type='password'

name='parola'></p>

<input type='submit' name='login'

value='Autentifica-te'>

</form> </div>

</div>

<div class='sign-up'>

<?php

if(isset($done))

echo $done;

?>

<!-- la crearea contului se vor memora datele

introduse: email, nume, parola, adresa, numar de

telefon -->

<h1> Creaza un nou cont </h1>

<div class='form'>

<form method='post' action=''>

<p>email: <input type='email'

name='email'></p>

<p>parola: <input type='password'

name='parola'></p>

<p>judet: <input type='text'

name='judet'></p>

<p>localitate: <input type='text'

name='localitate'></p>

<p>adresa: <input type='text'

name='adresa'></p>

<p>telefon: <input type='text'

name='telefon'></p>

<input type='submit' name='signin'

value= 'Inregistreaza-te'>

</form>

</div>

</div>

</div>

Page 111: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

111

<?php

include 'include/footer.php';

?>

</body>

</html>

Se va crea fișierul item.php cu următorul conținut:

<html>

<?php

include 'include/include_start.php';

include 'include/control_cos.php'

?>

<head>

<title> magazinonline.ro </title>

<link rel='stylesheet' href='css/style-

item.css'>

<script>

/*cod javascript pentru a calcula pretul total al

comenzii*/

function get_number(){

var $valoare =

document.getElementById('numar').value;

var $pret =

document.getElementById('pret').value;

var $total = $pret * $valoare;

document.getElementById("total").innerHTML =

"Pret total achizitie: "+ $total +" lei";

}

</script>

</head>

<body style='background-image:

url("img/background.jpg");'>

<!--Codul urmator verifica daca a fost trimis id-ul

elementului cautat. In caz afirmativ, il cauta in

baza de date si ii afiseaza toate proprietatile:

imagine, nume, descriere, pret, stoc, etc.-->

<?php

include 'include/user-bar.php';

?>

<div class='container'>

<?php

//daca a fost trimis un id

if(isset($_GET['id']))

{

Page 112: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

112

//cauta in baza de date obiectul cu id-ul dat

$sql = "SELECT * FROM produse WHERE id

= '".$_GET['id']."'";

//executa cererea

$result = mysqli_query($conn, $sql);

//verifica daca obiectul exista in baza de date

if(mysqli_num_rows($result)!=0)

{

/*daca exista, se salveaza proprietatile produsului

in variabila $row */

$row =

mysqli_fetch_assoc($result);

//se afiseaza proprietatile produsului

echo "

<div class='image'>

<img src='img/".$row['imagine']."'>

</div>

<div class='content'>";

if(isset($done))

echo $done;

//se initializeaza cosul

$cos = 0;

//se verifica daca utilizatorul este logat

if(isset($_SESSION['id'])){

/*se cauta in baza de date id-ul produsului pentru

utilizatorul logat si daca nu este deja comandat */

$sql = "SELECT * FROM cos WHERE id_user =

'".$_SESSION['id']."' AND id_produs =

'".$_GET['id']."' AND comanda = '0'";

//se executa comanda

$res = mysqli_query($conn, $sql);

/*pentru fiecare item gasit in cos se adauga stocul

in variabila $cos */

while($rand = mysqli_fetch_assoc($res))

{ $cos = $cos + $rand['stoc'];

}

}

//se calculeaza cat a mai ramas in stoc

$stoc_ramas = $row['stoc'] - $cos;

//afisam datele obiectului

echo"

<h3> ".$row['nume']." </h3>

<p> Descriere obiect:

<br>".$row['descriere']."</p>

Page 113: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

113

<p> Pret: <input id='pret'

type='text' readonly value='".$row['pret']."'> de

lei</p>

<p> Stoc ramas: ".$stoc_ramas."

</p>

<form

action='?id=".$_GET['id']."' method='post'>

<input type='number' min=1

max=".$stoc_ramas." name='numar' id='numar'

onchange='get_number();'>

<input type='submit'

name='submit' value='Adauga in cos'>

</form>

<p id='total'> Pret total

achizitie: 0 lei </p>

</div>";

} }

?>

</div>

<?php

include 'include/footer.php';

?>

</body>

</html>

Pagina produse.php are următorul conținut:

<html>

<?php

include 'include/include_start.php';

?>

<head>

<title> magazinonline.ro </title>

<link rel='stylesheet' href='css/style-

produse.css'>

</head>

<body style='background-image:

url("img/background.jpg");'>

<?php

include 'include/user-bar.php';

?>

<div class='container'>

Page 114: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

114

<?php

include 'include/menu.php';

include 'include/left-bar.php';

?>

<div class='content'>

<div class='search'>

<!--bara de cautare pentru produse -->

<form action='produse.php' method='post'>

<input type='text' name='search'

placeholder='Cauta obiect in functie de nume sau de

categorie'>

</form>

</div>

<?php

//se afiseaza toate produsele

$sql = "SELECT * FROM produse";

/*se verifica daca utilizatorul a ales categoria sau

s-a realizat o cautare */

if(isset($_GET['categorie']) ||

isset($_POST['search'])){

if(isset($_GET['categorie']))

//se verifica daca s-a ales o categorie

$sql .= " WHERE categorie =

'".$_GET['categorie']."'";

if(isset($_POST['search']) &&

$_POST['search'] != ''){

//se verifica daca s-a facut o cautare

$sql .= " WHERE categorie LIKE

'".$_POST['search']."' OR

nume LIKE '%".$_POST['search']."%' OR

descriere LIKE

'%".$_POST['search']."%'";

/*se cauta secvente de text prin intermediul

structurii %string% */

}

}

//se executa cerinta

$result = mysqli_query($conn, $sql);

/*pentru fiecare produs gasit in baza de date, $row

va memora linia din tabela corespunzatoare */

while($row =

mysqli_fetch_assoc($result))

{

//odata gasit obiectul se afiseaza proprietatile

Page 115: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

115

echo "

<div class='imagine-produs'>

<a href='item.php?id=".$row['id']."'

target='_blank'>

<img src='img/".$row['imagine']."'

alt='".$row['categorie']."'>

<p>".$row['nume']."</p>

<p>Pret: ".$row['pret']." Stoc ramas:

".$row['stoc']."</p>

</a>

</div>";

}

?> </div>

</div>

<?php

include 'include/footer.php';

?>

</body>

</html>

Fișierul home.php are următorul conținut:

<html>

<?php

include 'include/include_start.php';

?>

<head>

<title> magazinonline.ro </title>

<link rel='stylesheet' href='css/style-

home.css'>

</head>

<body style='background-image:

url("img/background.jpg");'>

<?php

include 'include/user-bar.php';

?>

<div class='container'>

<?php

include 'include/menu.php';

?>

<div class='content'><img src='img/main.jpg'></div>

</div>

<?php

include 'include/footer.php';

?>

Page 116: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

116

</body>

</html>

Fișierul descriere.php are următorul conținut:

<html>

<?php

include 'include/include_start.php';

?>

<head>

<title> magazinonline.ro </title>

<link rel='stylesheet' href='css/style-

descriere.css'>

</head>

<body style='background-image:

url("img/background.jpg");padding-top: 40px;'>

<div class='container'>

<?php

include 'include/user-bar.php';

include 'include/menu.php';

?>

<div class='content'>

<div class='descriere'>

<h1> Descrierea site-ului

magazinonline.com </h1>

<ul>

<li>

Magazinonline.com a fost creat in cadrul proiectului

Erasmus+ Actiunea Cheie 102 „ Acquisition of

professional web programming skills for an earlier

integration in the labor market” nr. ref. 2015-1-

RO01-A102-014297.

</li>

<li>

Acesta are ca scop oferirea utilizatorului unei

platforme cat mai simple pentru a viziona produse si

chiar pentru a le cumpara.

</li>

<li>

Site-ul magazinonline.com ofera o gama variata de

rechizite pentru scolarii de pretutindeni la preturi

accesibile tuturor categoriilor sociale.

</li>

</ul>

Page 117: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

117

<p>Va multumim pentru

utilizarea platformei noastre! Speram ca v-am

satifacut cerintele.</p>

</div>

</div>

</div>

<?php

include 'include/footer.php';

?>

</body>

</html>

Fișierul contact.php are următorul conținut:

<html>

<?php

include 'include/include_start.php';

?>

<head>

<title> magazinonline.ro </title>

<link rel='stylesheet' href='css/style-

contact.css'>

<script

src="http://maps.googleapis.com/maps/api/js"></scrip

t>

<script>

//acest script este pentru amplasarea hartii

var myCenter=new

google.maps.LatLng(47.73866,26.66515);

function initialize()

{

var mapProp = {

center:myCenter,

zoom:5,

mapTypeId:google.maps.MapTypeId.ROADMAP

};

var map= new

google.maps.Map(document.getElementById("googleMap")

,mapProp);

var marker=new google.maps.Marker({

position:myCenter,

});

marker.setMap(map);

Page 118: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

118

}

google.maps.event.addDomListener(window, 'load',

initialize);

</script>

</head>

<body style='background-image:

url("img/background.jpg");padding-top: 40px;'>

<div class='container'>

<?php

include 'include/user-bar.php';

include 'include/menu.php';

?>

<div class='content'>

<div id="googleMap"

class='map'></div>

<div class='descriere'>

<h1>Contact</h1>

<p><img

src='img/phone.jpg'>Contacteaza-ne la numarul de

telefon: 0740 112 112</p>

<p><img src='img/email.ico'>Sau

trimite-ne un email la adresa:

[email protected]</p>

<p><img

src='img/location.png'>Vizitati-ne la adresa: Strada

Nicolae Iorga 19, Botoșani, Romania</p>

</div>

</div>

</div>

<?php

include 'include/footer.php';

?>

</body>

</html>

Site-ul are acum un aspect decent. Urmează să-i conferim și o

funcționalitate pe măsură prin intermediul fișierului

control_login.php din folderul ”include”.

control_login.php

<?php

Page 119: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

119

/*daca suntem deja intr-o sesiune si dorim sa ne

delogam atunci trebuie sa resetam toate variabilele

tip session_cache_expire */

if(isset($_SESSION['id']))

session_unset();

//daca a fost trimis un formular pt inregistrare

if(isset($_POST['signin']))

{

/*daca sunt valide informatiile date, campurile nu

sunt goale */

if($_POST['email']!='' &&

$_POST['parola']!='' &&

$_POST['judet']!='' &&

$_POST['localitate']!='' &&

$_POST['adresa']!='' &&

$_POST['telefon']!='')

{

//se verifica daca emailul exista deja

$sql = "SELECT * FROM utilizator

WHERE email = '".$_POST['email']."'";

/*se cauta in tabelul utilizator emailul transmis

prin formular */

//se executa cerinta data

$result = mysqli_query($conn, $sql);

//se verifica daca exista emailul in tabela

if(mysqli_num_rows($result)==0)

{

//daca nu, se introduc datele in baza de date

$sql = "INSERT INTO `utilizator`

(`email`, `parola`, `judet`, `localitate`, `adresa`,

`telefon`)

VALUES ('".$_POST['email']."',

'".$_POST['parola']."', '".$_POST['judet']."',

'".$_POST['localitate']."', '".$_POST['adresa']."',

'".$_POST['telefon']."')";

//se executa cerinta in mysqli

$res = mysqli_query($conn, $sql);

/*se afiseaza mesaj de confirmare pentru

inregistrarea contului */

$done = "<span

class='error'>Contul tau a fost inregistrat cu

succes, te poti loga.</span>";

}

//daca emailul exista deja

else

Page 120: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

120

{

$done = "<span

class='error'>Email deja utilizat!</span>";

}

}

//se verifica daca sunt campuri necompletate

else

{

$done = "<span class='error'>Toate

campurile trebuie completate!</span>";

}

}

//daca a fost trimis un formular de autentificare

if(isset($_POST['login']))

{

//se verifica daca sunt completate campurile

if($_POST['email']!='' &&

$_POST['parola']!='')

{

//se verifica daca exista un astfel de cont

$sql = "SELECT * FROM utilizator

WHERE email = '".$_POST['email']."' AND parola =

'".$_POST['parola']."'";

//se executa cerinta

$result = mysqli_query($conn, $sql);

if(mysqli_num_rows($result)>0)

{

/*contul exista in baza de date, se salveaza contul

in sesiune, mai exact id-ul contului */

$row = mysqli_fetch_assoc($result);

/* se salveaza in sesiune variabila $row (vector)

care memoreaza tot randul cu utilizatorul gasit */

$_SESSION['id'] = $row['id_user'];

//se afiseaza mesaj de confirmare a inregistrarii

$login = "<span class='error'>Ai fost inregistrat cu

succes!</span>";

//dupa inregistrare se deschide pagina home

header( 'Location: produse.php' )

;

}

//daca nu este gasit contul in baza de date

else{

$login = "<span

class='error'>Email sau parola gresite!</span>";

}

}

Page 121: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

121

//daca exista campuri necompletate

else{

$login = "<span class='error'>Toate

campurile trebuie completate!</span>";

}

}

?>

Fișierul footer.php are următorul conținut:

<style>

.footer {

background-color: #494949;

position: fixed;

width: 100%;

height: 75px;

clear: both;

margin: 0px;

bottom: 0px;

color: white;

padding: 10px;

font-size: 15px;

}

</style>

<div class='footer'>

Site-ul a fost creat de catre Batalan Vlad,

elev in clasa a 11-a D la Colegiul National "A. T.

Laurian" in cadrul proiectului Erasmus+ Actiunea

Cheie 102

„ Acquisition of professional web programming skills

for an earlier integration in the labor market” nr.

ref. 2015-1-RO01-A102-014297.</div>

Fișierul include-start.php conține informații legate de publicarea

site-ului pe un server folosind date de logare, astfel încât accesul la

acesta să se execute în siguranță.

<?php

session_start();

$host='localhost';

$username='root';

$password='';

$dbname='magazin';

$conn = mysqli_connect($host, $username,

$password, $dbname);

Page 122: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

122

?>

Pagina left-bar.php conține:

<div class='left-bar'>

<div class='category-header'>

CATEGORII

</div>

<ul>

<li><a

href='produse.php?categorie=birotica'>Produse de

birotica</a></li>

<li><a

href='produse.php?categorie=caiete'>Caiete</a></li>

<li><a

href='produse.php?categorie=rigle'>Rigle</a></li>

<li><a

href='produse.php?categorie=penare'>Penare si

ghiozdane</a></li>

<li><a

href='produse.php?categorie=hartie'>Hartie si

etichete</a></li>

</ul>

</div>

Fișierul user-bar.php conține:

<style>

.user-bar{

top: 0;

position: fixed;

height: 40px;

overflow: hidden;

display: inline-block;

background-color: #81D6F7;

width: 100%;

border-bottom: 1px solid black;

}

.user-bar ul{

list-style-type: none;

margin: 0;

padding: 0;

overflow: hidden;

}

Page 123: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

123

.user-bar li{

float: right;

margin-left: 30px;

height: 100%;

padding: 5px;

}

.user-bar li a{

text-decoration: none;

display: block;

color: #FCFC9F;

font-size: 20px;

}

.user-bar li a:hover {

color: #FCFC00;

font-size: 25px;

}

.user-bar img{

width: 30px;

height: 30px;

}

.left{

float: left;

font-family:"Lucida Sans Unicode", "Lucida

Grande", sans-serif;

}

</style>

<div class='user-bar'>

<?php

/*se verifica daca utilizatorul este logat si

afiseaza emailul in stanga */

if(isset($_SESSION['id']))

{

/*se cauta utilizatorul in baza de date dupa id pt a

se identifica emailul */

$sql = "SELECT * FROM utilizator

WHERE id_user = '".$_SESSION['id']."'";

//se executa cerinta

$result = mysqli_query($conn, $sql);

//este memorat de session, $row memoreaza randul

$row = mysqli_fetch_assoc($result);

//se afiseaza emailul

echo "<spam

class='left'>".$row['email']."</spam>";

Page 124: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

124

}

?>

<ul>

<li>

<a href='cos.php'>

<img src='img/cart.jpg'>Cosul meu

</a>

</li>

<li>

<?php

/*daca utilizatorul este logat, se verifica daca a

fost creata sesiunea */

if(isset($_SESSION['id']))

{

echo "<a

href='login.php'>Delogare</a>";

}

else

{

echo "<a href='login.php'>Autentificare</a>";

}

?>

</li> </ul></div>

Coșul de cumparaturi a neces itat crearea unei pagini cu conținutul aflat

în fișierul operatii_in_cos.php.

<?php

/*se executa stergerea unui obiect din cos, se

verifica daca a fost actionat butonul delete si daca

a fost trimis id-ul comenzii sterse */

if(isset($_POST['delete']) &&

isset($_GET['delete']))

{

//se sterge obiectul selectat din cos

$sql = "DELETE FROM cos WHERE id_produs =

'".$_GET['delete']."' AND id_user =

'".$_SESSION['id']."'";

//se executa operatia

$result = mysqli_query($conn, $sql);

/*se afiseaza mesaj de confirmare pentru stergerea

obiectului */

$done = "<span style='color:

red;'>Stergerea obiectului a fost realizata cu

succes!</span>";

}

Page 125: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

125

//realizarea comenzii

//daca este actionat butonul comenzii

if(isset($_POST['comanda']))

{

/*se cauta toate produsele din cosul utilizatorului

care nu au fost comandate inca si se marcheaza ca

fiind trimise*/

$sql = "SELECT * FROM cos WHERE id_user =

'".$_SESSION['id']."' AND comanda = '0'";

//se executa cererea

$result = mysqli_query($conn, $sql);

/*pentru fiecare produs din cos variabila $row preia

datele, se seteaza comanda cu valoarea 1 si se

adauga in tabela comanda*/

while($row = mysqli_fetch_assoc($result))

{

//se actualizeaza campul comanda

$sql = "UPDATE cos SET comanda = '1'

WHERE id_comanda = '".$row['id_comanda']."'";

//se executa cerinta

$res = mysqli_query($conn, $sql);

/*se calculeaza cat a ramas stocul produsului

comandat, se cauta produsul comandat cu ajutorul id-

ului*/

$sql = "SELECT * FROM produse WHERE

id = '".$row['id_produs']."'";

//se executa cerinta

$rezultat = mysqli_query($conn, $sql);

//se preiau datele produsului in $produs

$produs = mysqli_fetch_assoc($rezultat);

//se calculeaza stocul ramas in $stoc_ramas

$stoc_ramas = $produs['stoc'] - $row['stoc'];

//se actualizeaza produsul

$sql = "UPDATE produse SET stoc =

'".$stoc_ramas."' WHERE id = '".$produs['id']."';"; //se executa cerinta

$resultat_final = mysqli_query($conn, $sql);

}

/*se afiseaza mesaj de confirmare pentu finalizarea

operatiei */

$done = "<span style='color: red;'>Comanda

dumneavoastra a fost realizata cu succes!</span>";

}

?>

Page 126: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

126

Verificarea coșului se realizează prin intermediul codului din fișierul

control-cos.php.

<?php

//se verifica daca a fost trimis formularul

if(isset($_POST['submit']))

{

/*se verifica daca stocul nu este gol, daca

id_produs a fost trimis si userul este logat */

if($_POST['numar']!='' &&

isset($_GET['id']) && isset($_SESSION['id']))

{

/*conditia este indeplinita, se introduc datele in

baza de date */

$sql = "INSERT INTO `cos`

(`id_produs`, `id_user`, `stoc`)

VALUES ('".$_GET['id']."',

'".$_SESSION['id']."', '".$_POST['numar']."');";

//se executa cerinta

$result = mysqli_query($conn, $sql);

/*se afiseaza mesaj de confirmare a realizarii

cerintei */

$done = '<span style="color:red; font-size:

20px;">Obiectul a fost adaugat in cos.</span>';

}

}

?>

Meniul principal va fi introdus prin intermediul fișierului menu.php.

<style>

.menu{

width: 100%;

height: 50px;

background-color: #242424;

overflow: hidden;

display: inline-block;

}

.menu ul{

list-style-type: none;

}

.menu ul li{

float: left;

}

.menu ul li a{

display: block;

Page 127: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

127

color: white;

text-align: center;

padding: 14px 16px;

text-decoration: none;

}

.menu ul li a:hover:not(.active) {

color: #aaaaaa;

}

.active{

background-color: #4CAF50;

}

</style>

<div class='menu'>

<ul>

<li><a href='home.php'

<?php

//se verifica daca numele fișierului este home.php

if(basename($_SERVER['PHP_SELF'])=='home.php')

echo "class='active'"?>

> Home </a></li>

<li><a href='descriere.php'

<?php

/*se verifica daca numele fișierului este

descriere.php */

if(basename($_SERVER['PHP_SELF'])=='descriere.p

hp') echo "class='active'"?>

> Descriere </a></li>

<li><a href='produse.php'

<?php

/*se verifica daca numele fișierului este

produse.php */

if(basename($_SERVER['PHP_SELF'])=='produse.php

') echo "class='active'"?>

> Produse </a></li>

<li><a href='contact.php'

<?php

/*se verifica daca numele fișierului este

contact.php */

if(basename($_SERVER['PHP_SELF'])=='contact.php

') echo "class='active'"?>

Page 128: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

128

> Contact </a></li>

</ul>

</div>

Paginile website-ul arată ca în imaginile următoare:

1. main.php

2. descriere.php

Page 129: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

129

3. produse.php

După cum putem observa, site-ul ne semnalează niște erori apărute în

cod. Acestea se datorează faptului că baza de date nu a fost completată

cu date.

4. contact.php

Page 130: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

130

5. login.php

6. cos.php

Acum site-ul magazinonline.com este complet. Observați

funcționalitatea acestuia: se pot realiza operații de înregistrare,

autentificare, de căutare a produselor, de selectare și adăugare în coș,

de finalizare a comenzii.

Page 131: PHP - Laurianlaurian.ro/wp-content/uploads/2016/10/ghid_limbaj_PHP_final-.pdf · PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI 2 Carte elaborată în cadrul proiectului Erasmus

PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI

131

Webografie

• http://www.w3schools.com/html/default.asp

• http://www.w3schools.com/css/default.asp

• http://www.w3schools.com/sql/default.asp

• http://www.w3schools.com/php/default.asp

• https://secure.php.net/manual/ro/

• http://www.learn-php.org/

• http://www.homeandlearn.co.uk/php/php.html


Recommended