Sunteți pe pagina 1din 162

Cerințe finale și parțiale

1.Activitate intalnire( preluarea executării sarcinilor pe baza materialelor de laborator)-


20% (nota 5 este de la 2 interventii,...)
2.2 proiecte practic PHP-MySQL(intalnirea3 procedural sau OOP) si examen(framewok))-
50% minim nota 5
3.examen scris sesiune-30% minim nota 5

Minim 5 la 2 si 3!!!
Scop curs
Prezentare aspecte de bază a:
1. Tehnicilor de dezvoltare a site-urilor web dinamice
2. Tehnicilor de utilizare a bazelor de date pentru memorarea informaţiilor

• PHP–Hypertext Preprocessor
• MySQL–My Structures Query Language
• PHP MVC frameworks
Premise:
CSS—Cascading Style Sheets
HTML—HyperText Markup Language
JS-JavaScript
Bootstrap
Stuctura curs
Cursuri destinate tehnologiilor back-end
• Cursuri de prezentare a PHP,MySql PHP+MySql
• Cursuri de prezentare framework-uri: Laravel
Cursuri destinate tehnologiilor front-end:
Cursuri de prezentare: Ajax, JQuery

Cursuri: Teorie introdusă prin exemple Practice


Materiale de bază a cursurilor
Cărţi
1. Larry Ullman ,PHP6 and MySQL 5 for Dynamic Web Sites
2.Luke Welling, Laura Thomson,Dezvoltarea aplicatiilor Web cu PHP si MySQL,Teora,2005
3.Julie C Meloni,Invata singur PHP,MySQL si Apache editura Corint,2004
4.Jay GreenSpan, Brad Bulger,MySql,PHP Database Aplications,M&T Books,2001
5. Stanca Liana, Suportul tehnologic al afacerilor electronice,Presa Universitara Clujeana,2007
6. McCool Shawn (2008), Laravel Starter, Packt Publishing, Birgmingham
7. Fidao Chris (2013), Implementing Laravel
8. www.laravel.com

Materiale web
HTTP Made Really Easy - http://www.jmarshall.com/easy/http/
HTML:http://www.w3schools.com/html
PHP:http://www.w3schools.com/php
PhpWebSite project, Appalachian State University, 2004-2006, http://phpwebsite.appstate.edu.
SQL:http://www.w3schools.com/sql
Manual for the MySQL Database System, Version 5.0, http://www.mysql.com/.

slide-uri cursuri
Esența...
De ce PHP?

1.w3techs.com

a raportat că "PHP este utilizat de 79,0% din toate site-urile web


2. https://www.youtube.com/watch?v=pvf0zSh3rDo
3. schimbare majoră în tehnologiile web -se mișcă spre partea clientului: React și JavaScript. “
-este un limbaj minunat de învățat.

>75 de milioane de site-uri web -rulează WordPress


La ce ajută cursul
înţelegere a conceptelor de bază din programarea web

(X)HTML
pagini web statice

PHP MySql
Generează dinamic- cod HTML Baze de date

PHP+MySQL

Facebook, YouTube, Wikipedia, Google


Search

SUBSIDIAR:EXEMPLU DE PROCES DE ÎNVĂȚARE A UNUI LIMBAJ


Ce vă oferă cursul!?
1. O înţelegere a conceptelor de bază a diferitelor aspecte și
tehnologii legate de dezvoltarea web

2. Experienţă în dezvoltarea paginilor web interactive

3. Cunoaşterea limitelor acestui domeniu (posibilități și


limitări ale site-uri web dinamice)
4. Cunoaștere tehnici de proiectare a aplicațiilor web
5. Prototip de învățare a unui limbaj de programare
Evoluție
Introducere
Anii '80 -implementarea calităţii,
Anii '90 de reengineering,
Anii 2000 anii vitezei.

Viteza - derulare a afacerilor => natura afacerii se


modifică.

Bill Gates 1999.


Reţeaua Internet - concept şi evoluţie
Internet-ul este definit ca o colecţie largă de reţele sau ca o “reţea de
reţele”
economiştilor [Godeluck2002] - Internet-ului a schimbat radical natura
creşterii economice ducând la apariţia unei noi economii bazate pe
calităţi intrinseci ale reţelei şi concentrate asupra unui nou gen de
întreprinderi.
Bill Cates afirma în anii ‘90:
Internet-ul- este un val de flux.
-impune o nouă ordine industrială: orientarea spre puterea de
consum, consumatorii nu producătorii devin ţinta organizaţiilor.
Istoric Internet
John Heilemann ¬The true story of the internet browser wars
https://www.youtube.com/watch?v=VANORrzKX50

-> 1958 cercetările demarate de ARPA în domeniul tehnologiilor de reţea şi


telecomunicaţiilor
->1990 se inaugurează WWW -Tim Benners Lee + CERN
Data de aparitie a Web-ului şi HTML-ului : ziua de 6 august 1991 = Tim Berners-Lee a
creat prima pagina Web.
(invetatorul dorea ca toată lumea să poată edita în browser nu doar să citească
din el...)
->1998 - lansat XML – facilitează compatibilitatea între diferite sisteme de computere
Web 1.0- era read-only
Web 1.5: era dotcom-ului ( .com ) +diversificat serviciile oferite, milioane de pagini cu
stiri, care erau actualizate des;
CMS-urile - sisteme de management a continutului.
->2004 Tim O'Reilly, care a inventat expresia "Web 2.0”
Tim O'Reilly “valorificarea/exploatarea inteligenţei colective “
Web2.0 ->colaborare nu IZOLARE.
-> nu - tehnologie nouă.
Tehnicile folosite de Web 2.0 =combinație de tehnici a anilor ‘90, devin cunoscute din
2007
1.Application Program Interfaces (APIs) pentru servicii web
2.Asynchronous Javascript and XML (Ajax), -urmaș tehnici de gen
XmlHttpRequest
3. Content syndication - servicii de abonamente(RSS - abonamente la "Ultimele
noutăți“)
4. Integrarea software de natură socială,( bloguri și wiki-uri

->septembrie 2005 articolul Tim O'Reilly


What Is Web 2.0 - Design Patterns and Business Models for the Next Generation of Sof
tware
,
fundamenteaza conceptele Web 2.0.

Termenul de Web 2.0 :2004, in timpul unui brainstorming intre O'Reilly Media si
MediaLive International, =>Site-ul Web2.0 Conference
=>
Web 2.0 -se concentrează pe mai multe teme majore: AJAX, rețele sociale,
folksonomies, colaborare ușoră, social bookmarking, și de partajare medi
WEB 2.0-

1. a acordat utilizatorului câteva noi concepte:

Blogs, Wiki, Social-Media & Video-Streaming.

2. publicarea conținutul doar la câteva clicuri distanță!

3.evoluțiile remarcabile ale Web 2.0 sunt

Twitter, YouTube, EzineArticles, Flickr și Facebook.


"WEB 3.0”- termen introdus de jurnalistul John Markoff - New York Times
- a treia generație de servicii bazate pe internet: web inteligente "-, în scopul de a
oferi o experiență de utilizare mai productivă și mai intuitiva “
- a permis convergență a mai multor tendințe-cheie de tehnologie în curs de
dezvoltare:

Ubiquitous Connectivity
Broadband adoption
Mobile Internet access
Mobile devices

Network Computing
Software-as-a-service business models
Web services interoperability
Distributed computing (P2P, grid computing, hosted “cloud computing” server farms
such as Amazon S3)

Open Technologies
Open APIs and protocols
Open data formats
Open-source software platforms Open data (Creative Commons, Open Data License,
etc.)
Open Identity

Portable identity and personal data


Web-ul inteligent
1.Tehnologiile Semantic Web (RDF, OWL, SWRL, SPARQL, platforme de aplicatii
semantice, și datastores Protecția bazate, - triplestores, tuplestores și baze de date
asociative)
2.Baze de date distribuite:sau "Baza de date World Wide" (wide-area
interoperabilitatea baze de date distribuite datorită tehnologiilor Semantic Web)
3.Aplicații inteligente (procesarea limbajului natural, masina de învățare, raționament
mașină, agenții autonomi)

Tim Berners-Lee, Web 3.0 va fi un web "citire-scriere-executare"

Deci, Web 3.0 va fi mult mai conectat, deschis, și inteligent, cu tehnologii semantice
web, baze de date distribuite, procesarea limbajului natural, machine learning, machine
reasoning, and autonomous agents.
Web 4-5
Web 4.0- 5.0 =comunică cu noi -ca un asistent personal.
Web 4.0 - "symbiotic" web.

caracteristici principale: foarte puternic și complet de executare.

Web 4.0 5.0 va fi web citire-scriere-executare-concurenta.

Web 5.0 -interactiunea (emoțional) între oameni și computere.

Interacțiunea va deveni un obicei de zi cu zi pentru o multime de oameni pe baza


neurotechnology.

Web<=4 "emotional" neutru-nu percepe utilizatorilor simt și emoții.


web 5.0 - web emoțional.
Limbaj de scripting
=este un limbaj care interpretează scripturile în timpul rulării.

Scripturile = încorporate în alte medii software.

Scopul scripturilor
1. de a îmbunătăți performanța
2. de a efectua sarcini de rutină pentru o aplicație.

Scripturile server side =interpretate pe server


Scripturile client side=interpretate de aplicația client.

Limbaj de programare
Limbaj de scripting
1. Are toate caracteristicile necesare
1. Folosit în principal pentru sarcini de
pentru a dezvolta aplicații complete.
rutină.
2. Codul trebuie compilat înainte de a
2. Codul este de obicei executat fără
putea fi executat
compilare
3. Nu trebuie să fie încorporat în alte
3. Incorporat în alte medii software
limbi.
Tehnologiei pentru dezvoltarea pe server
Scop- transfere acţiunile de prelucrare a informaţiilor pe
server -nivel ridicat de securitate
-centralizeze operaţiile de întreţinere.
-stoca -parte din componente, piese, rutine, scripturi.
Realizarea conexiunilor la server :
Viteza întârzierea cu care serverul răspunde la o cerere făcută de un
browser Web.
Securitatea : securitatea site-ului şi securitatea conţinutului.
Scalabilitatea :capacitatea unui site Web de a accepta :
1. un număr diferit de utilizatori,
2. cu timpi de răspuns diferit +performanţe similare.
Recapitulare concepte de bază-1
1. Limbajul de marcare prin hipertext (HTML) +adoptat ca mecanism pt diseminarea
informaţiei în WWW.
Protocolul HTTP -dialogul clientul şi serverul.
Clientul va trimite o cerere (o comandă) HTTP în mod text simplu
(ex: GET, POST, HEAD, PUT)
prin care informează serverul despre acţiunea pe care vrea să o întreprindă.

O sesiune de transfer a datelor cu ajutorul protocolului HTTP, se desfăşoară astfel:


1.se realizează o conexiune client-server;
2.clientul, adică browser-ul, lansează o cerere;
3.serverul furnizează clientului răspunsul la cererea formulată;
4.serverul încheie conexiunea.
Recapitulare concepte de bază-2
TCP (Transmission Control Protocol) - funcţie primară schimbul corect de pachete de date
între nodurile unei reţele, adică corectarea erorilor şi secvenţierea transportului.

IP (Internet Protocol) - transmiterea de pachete de la sursă la destinaţie;


-sursa şi destinaţia fiind calculatoare gazdă (host computer) identificate prin
adrese de lungime fixă.
Protocolul TCP/IP -interconectare fără probleme mai multe tipuri de reţele,
-activitatea de transmisie a datelor să nu fie afectată de distrugerea sau defectarea
unei părţi a reţelei.
- funcţia primară de dirijare a pachetelor de date de la sursă la destinaţie devenind
astfel un standard pentru reţelele de pe întreaga planetă.

SMTP (Simple Mail Transfer Protocol) este un protocol simplu, folosit pentru transmiterea
mesajelor în format electronic pe Internet
Serverul web

-rolul de a servi fişiere stocate în rădăcina lui


(Apache strucutră de directoare este: /var/www/html/)

Servirea unui fişier se efectuează dacă fişierul specificat îndeplineşte


următoarele condiţii :
1.există,
2.este accesibil de către serverul web
3.drepturile de acces nu interzic acest lucru.

1,2,3 neindeplinite=> serverul va trimite un cod de eroare / o pagină


predefinită care să informeze despre eroarea apărută.
Serviciul WWW modalitate de funcţionare
Site -un ansamblu de pagini Web, între care existã create legãturi=>navigarea prin toate paginile.
Conectarea la un site Web determinã operatii:
1browser-ul stabileste o conexiune TCP/IP cãtre server. Protocolul +numãr de port
Ex: HTTP + portul 80;
2.browser-ul emite o cerere HTTP cãtre server, cerere care este constituitã din:
o linie de cerere (request-line) :comandã HTTP, URL si de versiunea protocolului utilizat;
un antet (request-header)-contine informatii despre cerere si despre clientul care
executã cererea;
corpul cererii;
3.server-ul Web receptioneazã cererea, o interpreteazã si emite un rãspuns cãtre browser.
Rãspunsul -un cod de stare, => descrie modul de finalizare a cererii si o scurtã descriere a
codului.
= formate din trei cifre, semnificatii: - codurile care încep cu 1 sunt coduri
de informare, - codurile care încep cu 2 sunt coduri de succes, - codurile care încep cu 3 sunt
coduri de redirectare, - codurile care încep cu 4 sunt coduri de eroare client, iar codurile care
încep cu 5 sunt coduri de eroare server,
un antet (response-header) -informatii despre resursa solicitatã,+ alte declaratii necesare
pentru livrarea rãspunsului;
un corp, format din datele transferate.
Aceastã succesiune de operatii poartã numele de tranzactie.
ARHITECTURI CLIENT - SERVER

O arhitectură se referă la proiectarea unui sistem complet:

1. Cum este împărțit într-un număr de componente


2. Unde se află aceste componente
3. Modul în care componentele se potrivesc sau
comunică.
Tehnologia client/server pe care se bazeazã serviciul Web este de douã
tipuri:
•pe douã niveluri- clientul este responsabil -cu prezentarea datelor -client,ului
-serverul este responsabil - furnizarea serviciilor de date către client.
pe trei niveluri: a apãrut datoritã complexitãtii aplicatiilor care puteau
fi desfãsurate pentru terti sau mii de utilizatori.
Tipuri de site-uri
Site-uri Web statice
1. Un client (browser) cere un document HTML
2. Serverul trimite clientului documentul HTML cu toate fişierele
necesare lui
3. Clientul afişează documentul HTML formatat în concordanţă cu CSS
Site-uri Web dinamice sunt creaturi flexibile și puternice, descrise mai
exact ca aplicații decât doar site-uri. Site-uri Web dinamice:
1. au o "memorie" -permite înregistrarea de utilizator și autentificare în
site-urile de e-commerce, și procese similare
2. au aproape întotdeauna formulare HTML, astfel încât oamenii pot
efectua căutări, oferă feedback-ul, etc.
3. au interfețe în care administratorii pot gestiona conținutul site-ului
4. Sunt mai uşor de creat, modificat şi menţinut în timp decât site-urile
web statice.

Exista multe tehnologii disponibile pentru crearea de site-uri Web


dinamice.
ASP.NET (Active Server Pages, de la Microsoft), JSP (Java Server
Pages), ColdFusion, Ruby on Rails, și PHP.
Site-uri Web dinamice nu se bazează întotdeauna pe o bază de date,
dar în cele mai multe cazuri un site web are o bază de date ataşată.
-MySQL .
Site-uri web dinamice

1.Un client cere un document HTML ce include un formular


2.Utilizatorul completează formularul şi click pe submit acţiune ce
trimite datele înapoi la server
3. Serverul rulează un program PHP care depistează codul PHP, îl
execută
4. Rezultatul codului PHP este o pagină HTML pe care serverul o trimite
browserului – clientului web iar acesta o afişează utilizatorului.
Browser-ul întotdeauna primeşte text nu cod executabil
1. HTML este text
2. CSS este text
3. Rezultatul unui script PHP este text( Browser-ul nu vede niciodata
codul PHP)
HTML recapitulare
-Limbaj HyperTextMarkup
– text simplu;
-folosit pt crearea paginilor web
-defineşte structura documentului - fişiere CSS

HTML element
Un element XHTML este codat cu un tag
structura: <element_name>content</element_name>
Exemple:
- paragraph:<p>Este un paragraph</p>
– header:<h1> Este un header</h1>
- elemente goale: line break: <br />
- elemente cu atribute :
<element attribute=“value”>content</element>
Exemple: elemente cu atribute:
– image: <img src=“images/flori.gif” />
– table:<table summary=“Acesta este planul pt curs”>…</table>
Elemente HTML bine formatate
-Toate elementele şi atributele sunt scrise cu litere mici
-toate valorile atributelor trebui incluse între ghilimele
-toate elementele care includ elemente goale trebuie terminate
- toate elementele trebuie să fie corect imbricate =>LIFO

Beneficii ale scrierii codului HTML conform standardelor sunt:


-Maximizarea compatibilităţii cu diferite browsere
-Adaptarea uşoară a modului de afişare a conţinutului în forma tipică
dispozitivului folosit (desktop, mobile, etc)
- mentenanţă uşoară a site-urilor
- facilitează dezvoltarea codului de către echipe de programatori
- facilitează înţelegerea codului de către diverse persoane în timp

Validarea codului HTML se face cu:


1. http://validator.w3.org
2. HTML validator de la Firefox
Tag-uri cunoscute
• Headings: <h1> </h1> … <h6> </h6>
• Paragraph: <p> </p>
• New line: <br />
• Bold şi italics: <b> </b>, <i> </i>
• Liste ordonate:<ol> </ol>
• Liste neordonate:<ul> </ul>
• Elementele listelor:<li> </li>
• Legături: <a href=“http://link.com”>text</a>
• Legatura mailto:<a href=“mailto:me@itu.dk”> me@itu.dk
</a>
• Imagini:<img src=“images/pic.jpg” alt=“pic” />
• Tabele: <table> </table>, <tr> </tr>, <th> </th>, <td> </td>
Exemplu de site HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN""http://www.w3.org/TR/html4/
loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type” content="text/
html; charset="utf-8">
<title>Pagina de început </title>
</head>
<body>
<h1>Bine ati venit</h1>
<p>Website for the course <a href="http://
www.ubbcluj.ro/cours/PPW/C2013“>PPW</a></p>
</body>
</html>
Straturi și tehnologii comune în documentele
web
Formulare HTML
-permit utilizatorului să trimită date spre server.
-Exemple: login; căutări; e-mail; chestionare

-informaţiile de pe formular se vor procesa pe server de către un program(de ex. PHP script)
Cum funcţionează.....
1. Se deschide motorul de
căutare preferat
2. Se scrie cuvântul căutat
3. La o acţiune de genul click
pe buton sau Enter se
trimite cuvântul
4. Serverul web procesează
cererea şi întoarce
rezultatul
De ce este nevoie pt a realiza toate acestea...
I. Un FORMULAR HTML
-adună datele;
-transmite datele la un eveniment( click pe un buton,
enter, etc.)

II. Un SCRIPT care să proceseze datele


-PHP,ASP,PERL…
- va citi datele şi le va procesa pe server
- fişierul HTML rezultat este transmis clientului înapoi
Formularul
Formular

Definire variabilă
1. Atributul name: se defineşte numele variabilei;
2. Atributul id: la fel ca atributul name
3. Ce fel de tipuri de date conţine variabila
4. Serverul vede: firstname=Viorel
Variabile
1.Numele variabilelor sunt folosite de scripturile PHP pentru a avea acces la conţinutul
acestora
2. Numele variabilelor trebuie să fie unic
3. Se acordă nume sugestive variabilelor
De ex:
tricoufavorit:OK
tricou_favorit:OK
a:groaznic

Obs:
Numele variabilelor trebuie să înceapă cu litere din intervalul ([A-Za-z]) şi pot fi
urmate de oricâte litere, cifră din intervalul ([0-9]) sau liniuţă de subliniere (“_”)
Input types
Atribut formular=>action
action=“target”

1.Este obligatoriu
2.Defineşte cum se vor prelucra datele
3. Acţiunea poate:
- să fie un script: de exemplu: action=“doSomething.php”
-să fie un link mailto: de exemplu: action=
mailto:email@yahoo.com
-să se apeleze pe el însuşi: de exemplu: action=“#”
Atribut formular=>method
Se stabileşte cum se va trimite informaţia
POST sau GET

POST
1.numai serverul vede informaţia
2.mai securizat
GET
1. datele se întorc în URL
2. util pentru formulare de căutare
Atribut formular=>enctype
Se defineşte cum se codează(encoded) informaţia

datele se codează implicit astfel:


1. spaţiile se transformă cu “+”
2. caractere speciale se transformă la ASCII

value=“”
• “application/x-www-form-urlencoded”: implicit
• “text/plain”: transformă spaţiile în “+”, dar nu şi caracterele
speciale
• “multipart/form-data”: necesare la încărcarea fișierelor
Elementul <input />

Există mai multe astfel de obiecte dar le studiem pe acestea


<input type=“text”/>
Un singur cuvânt sau o linie de text
Atribute:
type=“text”
• name=“variableName” (obligatoriu)
• id=“variableName” (avansat.Face posibilă legarea acestui element
de un script)
• value: definirea valorilor implicite
• size: mărimea textbox-ului
• maxlength: lungimea maxină admisă
<form action=“search.php” method=“post”>
<input type=“text” name=“search” value=“Scrie text de căutare ” />
<input type=“submit” value=“Search” />
</form>
<input type=“submit”/>
1. Afişează în browser un buton
2. Transmite datele de pe form la server
3. Nu are atribute obligatorii
4. value=“” afişează text pe buton

<input type=“submit” value=“Search” />


<input type=“radio” />
Permite selectarea unei singure valori pentru fiecare “name”

• checked=“checked” se setează optiunea implicită care să apară ca


selectată

value=“” (obligatoriu)
• valoare care se trimite la action=“…”

<input type=“radio” name=“nationalitate” value=“Roman”


checked=“checked” />
<input type=“radio” name=“nationalitate” value=“German” />
<input type=“radio” name=“nationalitate” value=“Austriac” />
<input type=“hidden”/>
Elemente ascunse nu sunt vizibile pe formular
Se foloseşte pentru:
1. la setarea unei variabile implicite
2. se stabileşte dacă un produs este la ofertă

<form action=“oferta.php”>
<input type=“hidden” name=“oferta” value=“da” />
</form>
<input/>attributes
<select>and<option>
<select>and<option> se combină pentru a crea meniu dropdown

<form …>
<select name=“Universităţi”>
<option value=“UBB”>Universitate Babeş-Boloyai</option>
<option value=“UTCN”> Universitatea Tehnică</option>
<option value=“UMV”> Universitate de Medicină Veterinară</option>
</select>
</form>
<select>attributes
name=“”
nu este obligatorie, dar recomandata
multiple=“multiple”
permite să selectați mai mult de un element

size=“”
numărul defineşte câte elemente sunt afişate

<option>attributes
value=“…”
nu este obligatoriu
selected=“selected”
inidică ce element este selectat implicit
Emails received from a form

<form action=“mailto:liana@email.ro” method=“post” enctype=“text/plain”>


<p>Nume întreg: <br />
<input type=“text” name=“name” />
</p>
<p>Feedback: <br />
<textarea name=“feedback” rows=“10” cols=“10”></textarea>
</p>
<p>
<input type=“submit” value=“Send” />
</p>
</form>
HTML5
Noi controale de forma: calendar, date, time, e-mail, url si search.

HTML 5 include elemente noi pt a realiza:


- o structurarea mai buna a documentelor;
- obiecte pt desen mai performante
-posibilitatea de a adauga continut media
- un handling mai bun pt formulare.
<Input/>-atributul autocomplete
Permite realizarea unei completări automate
functioneaza cu <form> si urmatoarele tipuri de <input>:
text, search, url, telephone, email, password, datepickers, range, and color.
Principiul de funcţionare:
=>utilizatorul începe să tasteze într-un câmp ce prezinta atributul autocomplet,
browser-ul trebuie să afişeze opţiuni pentru a umplere:

<form action="autocomplet.php" method="get" autocomplete="on">


First name:<input type="text" name="fname" /><br />
Last name: <input type="text" name="lname" /><br />
E-mail: <input type="email" name="email" autocomplete="off" /><br />
<input type="submit" />
<Input/>-atributul autofocus
un câmp ar trebui să primeasca focusul în mod automat in momentul in care o pagină
este încărcată.
Obs:
Atributul autofocus funcţionează cu toate tipurile de <input>.

<form action="autofocus.php" method="get">


User name: <input type="text" name="user_name" autofocus="autofocus" />
<input type="submit" />
</form>
PPW
curs2
Caracteristicile aplicațiilor web
Istoric~ Caracterisitci PHP

- a apărut în 1994 din dorinţă lui Rasmus Lerdorf de a afla câte persoane îi
accesează CV-ul on-line. El a numit setul de scripturi creat- PHP (Personal
Home Page).

- succesul lui i se datorează lui Zeev Suraski şi Andi Gutmans care au rescris
motorul PHP -Zend începând cu versiunea a patra

- un limbaj ideal pentru construirea de pagini Web dinamice.


- poate fi rulat pe mai multe platforme;
- se poate conecta la mai multe baze de date (baze de date relaţionale create cu
MySQL. )
- se poate include în cod HTML.
- permite crearea de pagini HTML statice şi din loc în loc, acolo unde este
nevoie, să se introducă dinamism cu PHP.
- este open-source
- are o sintaxă simplă, variabilele nu trebuie declarate, tipul acestora se
stabileşte la iniţializarea lor cu o valoare şi în plus numele de funcţii sunt
intuitive.
Evoluția PHP
Definiţie~Istoric~
Caracterisitci PHP

1. PHP este un server-side.


1.1. tot ceea ce face PHP apare pe server.
1.2. este nevoie de Apache sau Microsoft IIS ( Internet Servicii
de informații ) =>toate script-urile PHP trebuie să fie accesate
printr-un URL ( http://-something )
2.PHP este o tehnologie cross-platform.
1.1. PHP ruleaza pe majoritatea sistemelor de operare :
Windows, Unix și Macintosh .
1.2. scripturi PHP scrise pe un server funcționează în mod
normal pe un alt server- modificări minore sau deloc .

PHP -scrierea unor programe stocate pe server ce accesează baze de


Scripturile PHP
Se execută în urma unui eveniment
1.Când un utilizator trimite un form
2. Când un utilizator accesează un
URL
Limbajul PHP oferă următoarele facilităţi:
1. manipularea conţinutului paginilor web;
2. transmiterea header-elor HTTP pentru
autentificare;
3. setarea cookie-urilor;
4. redirecţionarea utilizatorilor;
5. asigurarea spargerii (paser) fişierelor
XML;
6. crearea şi manipularea imaginilor,
animaţiilor şi a PDF-urilor;
7. conectarea la un server de e-mail.
8. execuţia rapidă a scripturilor PHP
deoarece interpretorul este inclus în
server-ul WEB;
9. timpi buni de răspuns.
Principiul de funcţionare a limbajului PHP

1. browser-ul trimite către server-ul Web o cerere


HTTP pentru un fişier PHP.
2. Server-ul recunoaşte că fişierul cerut conţine cod
PHP, în consecinţă va lansa parser-ul PHP, care va
primi la intrare fişierul respectiv.
3. Parser-ul va identifica secvenţele PHP, care în
cadrul codului HTML sunt cuprinse între marcajele
„<?php” şi „?>” şi le va interpreta.
4. Tot ce nu este cod PHP este trimis spre ieşirea
standard fără nici o prelucrare.
5. Codul PHP poate scrie la rândul său în ieşirea
standard prin comenzile prestabilite cum ar fi
„echo” sau „print”.
6. În final serverul Web intercepteză ieşirea standard
a parser-ului şi transferă totul browser-ului care a
Caracteristici cod PHP
-toate instrucţiunile PHP se termină cu punct şi virgulă.
-poate fi imbricat cu cod HTML ;
- se pot crea pagini HTML fără cod PHP -salvate cu extensia
php
-un fişier ce conţine script-uri PHP se salvează de regulă cu
exensia .php, fiind localizat în directorul serverului web;
- orice script PHP este cuprins între tag-urile <?php şi ?>;
- echo instrucţiunea PHP produce output în pagina HTML;
-rularea unei pagini care conţine script PHP se va face
întotdeauna prin intermediul serverului de web;

Obs: în mod implicit limbajul PHP, nu este case-sensitive


Crearea paginilor PHP
editoare cum ar fi: Notepad++, editoare PHP
O pagină PHP este alcătuită din:
• text;
• tag-uri HTML sau XML;
• comenzi şi instrucţiuni PHP;
• comenzi şi instrucţiuni MySQL.

O pagină PHP se salvează cu extensia php în


directorul
C:\Program Files\Apache Group\Apache\htdocs\
O pagină PHP se va accesa în browser
http://localhost/numefisier.php.
-paginile unui site Web păstrate într-un subdirector
creat în rădăcina server-ului Web se va accesa în
browser:
Codul php se intercaleaza cu codul html prin folosirea
delimitatoarelor urmatoare:
1. Marcaje standard: <?php ...?>
2. Marcaje scurte:<?....?>
3. Marcaje de script: <SCRIPT LANGUAGE=”php”>...</SCRIPT>
4. ASP tag
Ex: <SCRIPT LANGUAGE=”php”> echo “Hello Web! ”;</SCRIPT>
In cazul in care marcajele scurte nu sunt recunoscute de php se
setează in php.ini
urmatoarele: short_open_tag=On;
Obs: 1.Tagurile standard sunt implicite şi recomandate pt
utilizare
2. Tag-uri scurte - au fost standardul în PHP.
-dezavantaj major :conflict cu anteturi XML
-avantajul lor: sintaxa scurta <? = $ variabila?>

secventa <? ii spune procesorului XML sa se astepte sa proceseze o


instructiune. Daca se include cod XML si marcajele scurte sunt activate
motorul PHP va incerca sa proceseze cod XML.

Deci, in cazul in care se foloseste cod XML si PHP se dezactiveaza


marcajele scurte.
Programarea -are 2 elemenete de bază :datele şi instrucţiunile.
-datele :noţiunea de variabilă şi tipurile ei
- instrucţiuni : structurile de control şi funcţiile unui limbaj de
programare.

Accesul la paginile PHP se face


-direct: URL în zona de adresă a navigatorului
- indirect: activează o legătură hipertext/buton => cererea
este trimisă către server.

echo, print, print_r, şi printf sunt:

-comenzile de editare a unei pagini HTML dintr-un script PHP


-comenzi de afişare a rezultatelor
unei funcţii,
a valorilor unei variabile,
a elementelor unui tablou,
a mesajelor text, a valorilor introduse de utilizator în
câmpurile unui formular HTML, pentru a transmite valorile
încadrate între ghilimele la browser, etc.
Exemplu de pagină PHP care foloseşte comenzile print şi echo pentru
afişarea în browser a unui pagini web statice ce va conţine două
mesaje text.
<html>
<head>
<title>Exemplu de afisare</title>
</head>
<body>
<?php
print "Comanda de afisare a datelor pe ecran";// se afiseaza pe ecran textul
scris între
//ghilimele
?>
<br>
<?php
echo "Limbajul PHP"; // afiseaza pe ecran textul dintre ghilimele
?>
</body>
</html>
În exemplul anterior ieşirea PHP care ajunge la browser, poate fi
vizualizată cu comanda Source a meniului View, iar rezultatul va fi:

<html><head><title>Exemplu de afisare a valorilor unei variabile</title>


</head><body>
Comanda de afisare a datelor pe ecran
<br>
Limbajul PHP</body></html>
Generare tag HTML cu PHP
<html>
<head>
<title>Exemplu de afisare</title>
</head>
<body>
<?php
echo “ <h1> Hello world !</h1>”;
echo “<p/>”;
echo “This is <b>bold</b> and <i> italic</i>”;

?>
</body>
</html>
Comentarii

Un comentariu -n text prin care explică ce


face codul sursă.

Comentariu poate fi scris de alţi oameni sau de


programatorul în sine.

OBS:Comentariul nu face nimic!!!!


De ce este nevoie de comentarii?!?

cod mai uşor de citit şi înţeles


Comentarii pe o singură linie
<!– Comentariu HTML -->
<?php $an = 2013 ; // comentariu PHP pe o singură
linie
echo “An curent: ” ; # o altă linie de comentariu
echo $an ; ?>
<!– in afara PHP deci se foloseste din nou
Comentarii pe o mai multe linii
comenteriu HTML -->

<?php $an = 2013 ; /* comentariu PHP pe o mai


mult de o linie */
echo “An curent: ” ;
echo $an ; ?>
<!– in afara PHP deci se
foloseste din nou comenteriu HTML -->
Variabile
O variabila este un container cu un nume care poate
stoca o valoare: Valoare
2017

$an NUME

Nume:
începe cu semnul dolarului$an
‘$’ $an_cure $ancurent
urmat de un identificator nt

Valoare:
3.14 ”Bună
poate fi un număr, 4
ziua!!!”
$x $z $y
un şir de caractere,
o dată calendaristică
Variabile
<?php $an = 2018 ;
echo “An curent: ” ; An curent:
echo $an ; ?> 2018

<?php $an = 2018 ;?>


An curent: An curent:
<?php echo $an ; ?> 2018

<?php $an = 2018 ;?>


An urmator: An urmator:
<?php echo ($an+1) ; ?> 2019

<?php $an = date(“Y”) ;?>


An urmator: An urmator:
<?php echo ($an+1) ; ?> 2019
Numele de Variabilele sunt ‘case
sensitive’
<?php
$nume = “Aici se memorează un text” ;
$Nume = “Aici se memorează un alt text” ;
echo $nume ; Aici se memorează un
text
echo “<p/>” ;
echo $Nume ; ?> Aici se memorează un
alt text
Se folosesc nume de variabiele consistente. De
exemplu:
•$nume_prenume
•$numePrenume
•$NumePrenume
Tipul variabilei
Variabile pot conține diferite tipuri
de valori:
1. Integer (numere): …, -3, -2, -1, 0,
1, 2, 3, …
2. Float-Double:  1.5, 2.0, 0.0, 0.41,
-123.456, 3.1415926, …
3. String (bucăţi de text): “PPW”,
“42”, “buna ziua!”, “Unchiul
Vanea”, “amm!@$!”, …
4. Boolean (valori de adevăr):  true,
Şir de caractere
Un şir de caractere este o secvenţă de caractere
inclusă între ghilimele sau apostroafe.
Între apostroafe
‘text’ , ‘text cu spaţiu’, ‘ ’, ’42’,‘de fapt, orice simbol
%*!@’, …
Obs. Nu se pot introduce variabile Acestînăuntrul
an este $an lor
<?php $an = 2013 ;
echo ‘Acest an este: $an’ ;
?>
Între ghilimele
“text” , “text cu spaţiu”, “”, “42”,”de fapt, orice
simbol %*!@”, …
Acest an este 2013
Obs. Se pot introduce variabile înăuntrul lor
<?php $an = 2013 ;
Character Escaping
1.  \n (newline character)
2.  \t (tabulation character)
3.  \$ (dollar sign character)
4.  \’ (single quote character)
5.  \” (double quote character)
6.  \\ (backslash character)
Exemple:
<pre>
<?php echo “hello\n world \t!” ; ?>
</pre>
<?php echo “El a spus: \ "Ai nevoie de chestiile astea!
\" pentru studenti” ; ?>
El a spus: "Ai nevoie de chestiile astea! " pentru
Se pot utiliza ghilimele cu
apostrofurile imbricat
• Nu este nevoie de \
1. Ghilimele în interiorul apostroafelor
<?php echo ‘Ghilimele: “ in interiorul " apostroafelor’ ; ?>
Gilimele: “in interiorul" apostroafelor.
2. Apostroafe în interiorul ghilimelelor
<?php echo “Apostroafe: ’ in interiorul ’
ghilimelelor” ; ?> ‘ ghilimelelor.
Apostroafe: ‘in interiorul

1. Ghilimele în interiorul apostroafelor


<?php echo ‘Ghilimele: \“ in interiorul \" apostroafelor’ ; ?>
Gilimele: “in interiorul" apostroafelor.
2. Apostroafe în interiorul ghilimelelor
<?php echo “Apostroafe: \’ in interiorul \’
ghilimelelor” ; ?> ’ ghilimelelor.
Apostroafe: ‘in interiorul
Concatenare stringuri

Concatenarea şirurilor se face cu operatorul . (punct)

( “sir1” . “sir2” )
Exemple
<?php echo ( “liana” . “stanca” ) lianastanca
; ?>
<?php $h = “Hello ” ;
$w = “world!” ;
$x = ( $h . $w ) ; // concatenare şir!
echo “<h1>$x</h1>” ;
?>
Operatori aritmetici
Operatorii aritmetici sunt:
•  + (adunare) (1+2)
• - (scădere) (3-4)
•  * (înmulțire) ( 5 * 6 )
•  / (împărțire) (7/8)
<?php $x = 2 ;
Rezultatul
$y = 5 ; este:2.5
$rezultat = ((1 + (2 - $x)) * ($y / 2)) ;
echo “Rezultatul este: <b>$rezultat</b>” ;
?>
Incrementare şi Decrementare

Operatorii de Incrementare şi decrementare


sunt:
•  $x++ ( se incrementează variabila x cu
1) =>
Echivalent cu: “$x = ($x + 1)”
<?php• $x
$x--= 7(se
; decrementează variabila x cu 1)
echo “ =>
‘x’ este: <b>$x</b>” ; ‘X’ este: 7
echo “<p/>” ; Echivalent cu: “$x ‘X’
= este:
($x -8 1)”
$x++ ;
echo “ ‘x’ este: <b>$x</b>” ;
?>
BOOLEANS
Un boolean poate lua doar două valori:
• true
• false
Example:
if ( true ) {
echo “Intotdeauna se va scrie acest mesaj.” ;
}

if ( false) {
echo “Acest mesaj nu se va scrie niciodată.” ;
}
Expresii boolean
Operatori relaţionali
• == (este egal cu) ( 1 == 1 )
• != (este diferit de ) ( 2 != 3 )
•  < (este mai mic decât) ( 4 < 5 )
•  > (este mai are decât) (7>6)
•  <= (este mai mic sau egal) ( 8 <= 9 )
•  >= (este mai mare sau egal) ( 0 >= 0 )

<?php
$x = 1 ;
$y = 2 ; Rezultatul
$rezultat = ( $x > $y ) ; este:false
echo “Rezultatul este: <b>$rezultat</b>” ;
?>
Prioritatea operatorilor
1. Operatori aritmetici: cel mai puternic
 +, -, *, /
 2. Operatori de comparaţie:
  <, >, <=, >=
 3. Operatori de egalitate: cel mai slab
! ==, !=

<?php echo ($a+$b>=$c) ; /* interpretat ca “($a+


$b)>=$c” */ ?>
<?php echo ($a==$b+$c) ; /* interpretat ca “$a==($b+
$c)” */ ?>
<?php echo ($a!=$b<$c) ; /* interpretat ca “$a!
Expresii booleane

Operatori logici:
•  ! (not) !($x>1)
•  && (and) ($x>3) && ($x<9)
•  || (or) ($x<4) || ($x>7)
Variabila variabilelor
În PHP, este posibil de a crea aşa-numitele variabile a
variabilelor. Aceasta este o variabilă al cărui nume
este conţinut într-o altă variabilă. De exemplu:
$nume='Ion';
$$nume='Maria';
echo $Ion ."<br/>";// afiseaza
variabila_variabilei_nume
echo $nume."<br/>";
echo $$nume."<br/>";

Deci, valoare variabile nume devine la randul ei variabila si contine valoarea atribuit
+daca afisam $Ion valoarea lui este Maria.
Acest lucru se mai poate realiza prin definirea numelui intre acolade:
$nume='123';
//se atribuie o valoare
$$nume='456';
//folosind acolade se afiseaza valoare 456
echo $nume."<br/>";
echo ${'123'}."<br/>";
Obs: O tehnica asemanatoare cu variabila a
variabilelor poate fi folosita pentru a stoca numele de
funcţii în interiorul unei variabile:

function myFunc () {
echo 'myFunc!';
}
$f = 'myFunc';
$f(); // va apela myFunc ();
Determinarea existentei unei valori
isset();

<?php
echo isset ($x);
?>
Explicatie:
-va returna adevărat dacă o variabilă
există şi are o valoare, in caz contrar va
afisa NULL.
<html><head><title> Testarea tipului
variabilelor</title></head><body>
<?php
$test; //declarare fara atribuire
echo gettype($test);// null
echo "<br>";
$test=8; //declarare cu atribuire
echo gettype($test);//integer
echo "<br>";
$test=9.8; //declarare cu atribuire
echo gettype($test);//double
echo "<br>";
$test=”curs”; //declarare cu atribuire
echo gettype($test);//string
echo "<br>";
$test=true; //declarare cu atribuire
echo gettype($test);//boolean
Schimbarea tipului prin folosirea
functiei settype():
settype(numevariabila,’numetipnou’);
<?php
$test=9.8; //declarare cu atribuire
echo gettype($test);//double
echo " ";
echo "este $test <br>";//afiseaza:9.8

settype($test,'string');
echo gettype($test);//string
echo " ";
echo "este $test <br>";//afiseaza:9.8

settype($test,'integer');
echo gettype($test);//integer
echo " ";
echo "este $test <br>";//afiseaza:9
Conversia (castingul) valorii unei variabile
Scriind numele unui tip de date in paranteze inaintea
numelui unei variabile se creaza o copie a valorii
respective variabile convertita in tipul astel specificat.
Diferenta intre casting si settype() - prin casting se
obtine o copie a valorii variabilei lasand variabila
initiala neschimbata.
<?php
$test=9.8; //declarare cu atribuire
$casting=(double) $test;
echo gettype($casting);//double
echo " ";
echo "este $casting <br>";//afiseaza:9.8

$casting=(string) $test;
echo gettype($casting);//string
echo " ";
echo "este $casting <br>";//afiseaza:9.8
Numerele pe care un utilizator le tasteaza intr-un
formular HTML vor fi preluate de script sub forma de
sir de caractere.

Ex: insumarea a 2 numere preluate cu un formular


HTML, PHP le va transforma in mod automat la
intalnirea semnului plus.

Ex: “30m”+”40m” rezultatul va fi 70 intreg.


PHP cand converteste siruri de caractere ignora
caracterele non-numerice.

Ex:intr-un camp al formularului HTML se introduce o


val de genul 30m at, in variabila care preia valoarea
se va memora “30m” iar cu casting se va
converti la integer.
Domenii de valabilitate a variabilelor
Variabilele prezintă domenii de valabilitate
care respectă următoarele şase reguli:
1. variabilele care sunt vizibile în tot scriptul
se numesc superglobale;
2. constantele după declarare sunt vizibile
global;
3. variabilele globale sunt vizibile în scriptul
în care au fost declarate, dar nu şi în
interiorul funcţiilor;
4. variabilele utilizate în cadrul funcţiilor,
care sunt declarate ca fiind globale, se
referă la variabila globală cu acelaşi nume;
5. variabilele create în interiorul funcţiilor,
care sunt declarate ca statice sunt invizibile
în exteriorul acesteia, păstrând valoarea de
Variabilele superglobale sunt:

• $_SERVER este un tablou ce conţine


variabile de mediu ale serverului;
• $_GET este un tablou ce conţine variabile
transferate scriptului prin metoda GET;

• $_GET este un tablou de perechi (nume,


valoare) trimise de metoda HTTP GET.

Informațiile trimise cu GET sunt vizibile în


bara de adresă a browser-ului (max. 100
caractere)
formget.php
<form action=“exget.php" method="get">
Nume: <input type="text" name="nume" />
Varsta: <input type="text”name=“varsta"/>
<input type="submit" />
</form>

În bara de adresă: .../exget.php?


nume=Anca&varsta=40
exget.php
<?php

echo "Bun venit,". $_GET["nume"] ."<br/>";


echo "Varsta dvs,". $_GET["varsta"] ."!";
?>
PHP $_GET
•Nu se folosește când se trimit
parole

•Adresa cu valorile câmpurilor


poate fi adăugată la Favorites sau
Bookmarks

•Nu se folosește când se transmit


mai mult de 100 de caractere
PHP $_REQUEST
 $_REQUEST este un tablou ce
conţine toate variabilele
introduse de utilizator, inclusiv
conţinutul intrărilor din $_GET,
$_POST şi $_COOKIE;
 Poate fi folosită pentru a obține
valorile din mai multe
formulare (unele folosesc get
altele post)
PHP $_POST

 Folosită pentru a obține datele din


formulare trimise cu metoda post

 Este un tablou asociativ ce conţine variabile


transferate scriptului prin metoda POST –
conține perechi (nume, valoare)
 Exemplu:
PHP $_POST
<form action=“expost.php" method="post">
Nume: <input type="text" name="nume" />
Varsta: <input type="text" name=“varsta" />
<input type="submit" /> </form>
 În bara de adresă .../expost.php
 În expost.php

<?php

echo "Bun venit,".


$_POST["nume"] ."<br/>";
echo "Varsta dvs,".
$_POST["varsta"] ."!";
• $_COOKIE este un tablou ce conţine
blocuri cookie(mai exact, contine
variabile care ii sunt transmise
scriptului prin intermediul cookie-
urilor)
• $_FILES este un tablou ce conţine
variabile legate de încărcarea
fişierelor;
• $_SESSION este un tablou ce conţine
variabile de sesiune.
.
Variabilele globale cele mai folosite sunt:

1. $_SERVER['REMOTE_ADDR'] are misiunea de a


returna adresa IP a vizitatorului;
2. $_SERVER['HTTP_USER_AGENT'] are misiunea
de a returna informaţii despre browser-ul folosit;
3. $_SERVER['HTTP_REFERER'] are misiunea de a
returna adresa paginii vizitată anterior;
4. $_SERVER['SERVER_NAME'] are misiunea de a
returna numele serverului;
5. $_SERVER['SCRIPT_NAME'] are rolul de a
returna numele fişierului php accesat.
Constante PHP
O constantă are un tip şi o valoare. Tipul şi
valoare, sunt determinate de caracterele care intră în
componenţa constantei.
Constantele se caracterizează prin:
1. li se atribuie o valoare care nu poate fi modificată sau ştersă de-a
lungul execuţiei programului;
2. constantele nu prezintă în sintaxa lor simbolul $ ;
3. numele unei constante este o succesiune de litere şi eventual cifre,
primul caracter este în mod obligatoriu literă. Aceasta este case
sensitiv.
4. constantele au un caracter global.
5. definirea constantei se realizează cu funcţia define().
6. valoarea atribuita unei constante cu define poate fi numar sau sir de
caractere sau o valoare de tip Boolean.
7. pot fi folosite oriunde in scripturi, inclusive in functiile externe care
sunt incluse.
define(”nume constanta”, valoare);
-are un al treilea argument care daca se seteaza la true
at nu conteaza cum este scrisa constanta cu liere mari
sau mici; daca se seteaza la false at este obligatoriu
sa se scrie constanta cu litere mari.

define(“NUME”,”Viorel”,true);
echo NUME;
echo nUme;
echo NuMe;
toate aceste sunt corecte si afiseaza Viorel;

Obs: - sa nu se seteze scrierea cu litere mici a


constantei pt a putea sa se faca diferentierea clara intre
constante si variabile
Constante Predefinite

<?php
echo "<br>";
function
exemplu_functie_cosntante(){

echo __LINE__."<BR/>";

echo __FILE__."<BR/>";

ECHO __FUNCTION__."<BR/>";

ECHO __METHOD__."<BR/>";

ECHO PHP_VERSION .”<BR/>”;

exemplu_functie_cosntante();

?>
Structurile de control
În scripturi PHP nu există o delimitare clară, impusă de PHP
pentru :
1. zona de declaraţii: de exemplu, activitatea de declarare a
variabilelor şi constantelor se reduce la iniţialializarea lor cu
o valoare.
2. şi zona dedatelor
Prelucrarea instrucţiuni
în scripturile PHP se face cu ajutorul
instrucţiunilor
Ordinea în care se execută instrucţiunile în cadrul
scripturilor defineşte aşa numita structură de control a
acestora.
1. Structura secvenţială- succesiune de instrucţiuni
care se execută una după alta, în ordinea în care
sunt scrise în cadrul scriptului
-se realizează cu ajutorul instrucţiunilor
compuse.
Structurile de control în PHP sunt:

1. structura alternativă -instrucţiunii IF;


2. structura repetitivă condiţionată anterior :
WHILE, FOR şi FOREACH;
3. structura repetitivă condiţionată posterior
DO-WHILE;
4. structura selectivă : SWICH.
5. instrucţiuni folosite în cadrul ciclurilor care
oferă o flexibilitatea mare în programarea în
PHP sunt: CONTINUE, BREAK şi
RETURN.
Instrucţiunea expresie se obţine scriind
punct şi virgulă după o expresie.

Deci, formatul acestei instrucţiuni este:

expresie;

În cazul în care componenta instrucţiunii


expresie este o expresie de atribuire această
instrucţiune se transformă în instrucţiune de
atribuire, de exemplu:

$aduna=$aduna+5;
Instrucţiunea IF are următoarele formate:

Format1:
IF (condiţie) instructiune;

Principiul de funcţionare a acestui format al


instrucţiunii IF este:
Pas1: se evaluează condiţie;
Pas2: dacă în urma evaluării condiţiei,
rezultatul returnat este TRUE atunci se
execută instrucţiunea, altfel se trece la
următoarea instrucţiune din script.
<html>
<head>
<title>Exemplu</title>
</head>
<body>
<?php
$nr=8;
if ($nr%2==0) {
echo ”$nr este o valoare
para”;
}
?>
</body>
</html>
Format 2
IF (condiţie) instrucţiune1;
else instrucţiune2;
Exemplu

Principiul de funcţionare a acestui format al


instrucţiunii IF este:
Pas1: se evaluează condiţie;
Pas2: dacă la pasul 1 rezultatul returnat este
TRUE atunci se execută instrucţiune1, altfel
se execută instrucţiune 2.
<html><head>
<title> Determinarea minimului dintre doua
valori </title>
</head>
<body>
<?php//Determinarea minimului dintre doua
valori
$a=10;
$b=7;
if ($a<$b)
{echo ”Minimul este:$a”;}
else
{echo ” Minimul este:$b”; }
?>
Format 3

IF (condiţie1) instrucţiune1;
elseif (condiţie2) instrucţiune 2;
else ...
elseif (condiţien) instrucţiune n;
else instrucţiune n+1;
Principiul de funcţionare a acestui format al
instrucţiunii IF este:
Pas1: se evaluează condiţie1;
Pas2: dacă la pasul 1 rezultatul returnat este
TRUE atunci se execută instrucţiune1 altfel
se trece la pasul3.
Pas3 se evaluează condiţie2;
Pas4 dacă la pasul 3 rezultatul returnat este
TRUE atunci se execută instrucţiune2 altfel
se trece la pasul5.
...
Pas n: se evaluează condiţien;
Pasn+1: dacă la pasul n rezultatul returnat este
TRUE atunci se execută instrucţiunen altfel
<html><head>
<title>Rezolvarea ecuatie de gradul 1</title>
</head>
<body>
<?//Rezolvarea ecuatie de gradul 1
$a=4;
$b=2;
IF ($a!=0)
{ $rezultat = -$b/$a;
echo “$rezultat”;
}
elseif ($b==0) echo “ecuatia are o infinitate de
solutii”;
else echo “ecuatia nu are solutii”;?>
</body>
</html>
Obs: clauza else if poate fi scrisa sub forma unui sg cuvant (elseif)
<html>
<head>
<title> Instructiunea if</title>
</head>
<body>
<?php
$a="suparat";
if ($a=="fericit"){
echo "Sunt fericit";
}elseif ($a=="suparat"){
echo "Nu sunt fericit";}
else{
echo "Nu sunt nici fericit nici suparat";
}
?>
</body>
</html>
Instrucţiunea SWICH are sintaxa:
swich ($expresie) {
case $exp1: secvenţa instrucţiune 1; break;
case $exp2: secvenţa instrucţiune 2; break;
...
case $expn: secvenţa instrucţiune n; break;
[default: secvenţă instrucţiune n+1]; }
Principiul de execuţie al acestei instrucţiuni
este:
Pas1: se evaluează $expresie;
Pas2: dacă la Pas1 s-a obţinut o valoare
egală cu una din valorile lui $expi atunci se
intră pe ramura respectivă se execută
instrucţiunei şi se iese cu break; din această
instrucţiune.
Ramura default a acestei instrucţiuni este
facultativă. În cazul în care există atunci ea se
Instrucţiunea break; se foloseşte când se doreşte să se
întrerupă forţat execuţia unui ciclu şi trecerea la
următoarea instrucţiune existentă imediat după
acesta. Această instrucţiune poate fi folosită în
cadrul instrucţiunilor WHILE, DO-WHILE, FOR,
FOREACH
<? //Afiseaza şi SWITCH.
Duminica
$nr=89;
switch($nr){
case 1: echo "Luni";
break;
case 2: echo "Marti";
break;
case 3: echo "Miercuri";
break;
case 4: echo "Joi";
break;
case 5: echo "Vineri";
break;
case 6: echo "Sambata";
break;
default: echo "Duminica"; } ?>
<html>
<head>
<title> Instructiunea switch</title>
</head>
<body>
<?php
$a="nu stiu";
switch($a){
case "fericit":
echo "Sunt fericit";
break;
case "suparat":
echo "Nu sunt fericit";
break;
default:
echo "Nu sunt nici fericit nici suparat";
break;
}
?>
</body>
</html>
Folosirea operatorului ?
Operatorul ? numit si operator ternar este similar instructiunii if

(expresie)?valoare_daca_expresia_este_true:
valoare_daca_expresia_este_false;
<html>
<head>
<title> Operator ternar</title>
</head>
<body>
<?php
$a="fericit";
$text=($a=="fericit")?"Sunt fericit":"Nu sunt fericit";
echo "$text";
?>
</body>
</html>
Obs:In cazul de fata $a se initializeaza cu valoarea fericit deci se va
afisa pe ecran “Sunt fericit”. In cazul in care $a primeste o alta valoare
at se afiseaza pe ecran “Nu sunt fericit”;
Obs: pana in acest punct am prezentat deciziile pe care le poate lua un
script asupra codului pe care sa il execute.
Structuri repetitive
Instructiunile iterative
-efectuează sarcini repetitive.

O bucla iterativa va continua


1.sa ruleze atata timp cat o conditie este
indeplinita,
2.pana cand se alege sa se paraseasca
bucla in mod explicit.
Instrucţiunea WHILE are sintaxa:

WHILE (condiţie) instrucţiune;

Principiul de execuţie al acestei


instrucţiuni este:

Pas1: se evaluează condiţie;


Pas2. dacă pasul1 returnează valoarea
TRUE atunci se execută instrucţiune,
apoi se revine la Pas1, altfel se trece
la instrucţiunea următoare ciclului
WHILE.
Obs: -permite executia codului sursa
<html><head>
<title>Calculul lui n!</title>
</head>
<body>
<?
//Calculul lui n!
$n=10;
$i=1;
$fact=1;
while ($i<=$n){
$fact=$fact*$i;
$i++; }
echo ”Rezultatul lui n! este: $fact”;
?>
</body>
</html>
<html>
<head>
<title> Instructiunea while care calculeaza multiplii de 2 pana la
24</title>
</head>
<body>
<?php
$i=1;
while ($i<=12){
echo "pentru $i multiplu de 2 este".($i*2)."<br>";
$i++;}

?>
</body>
</html>
<?php
//Programul afiseaza cifrele numarului intreg din variabila a, in ordine
inversa, dupa
//fiecare afisind caracterul *:
$a=2346;
echo 'Valoarea din variabila $a este : ',$a,"<BR>";
while($a)//deci cit timp valoarea din $a este nenula
{
$c=$a%10;//determinam ultima sa cifra in variabila $r
$a=(int)($a/10);//inlocuim $a cu citul impartirii sale la 10, deci
//"stergem" ultima sa cifra
echo $c,"* ";//afisam cifra curenta, obtinuta in variabila $c, urmata de
un *
}
?>
Instrucţiunea DO-WHILE are sintaxa:
Do
instrucţiune
WHILE(condiţie);

Principiul de execuţie al acestei instrucţiuni este:


Pas1: se execută instrucţiunea subordonată;
Pas2. se evaluează condiţie dacă returnează TRUE atunci se
reia Pas1, în caz contrar se execută instrucţiunea imediat
următoare acesteia.
Instrucţiunea DO-WHILE se execută cel puţin o dată, deoarece
întâi se intră în ciclu se execută instrucţiunea subordonată şi
apoi se evaluează condiţia.
Obs:utila at cand se doreste ca blocul de de cod sa se execute
cel putin o data chiar daca expresie este falsa.
<html>
<head>
<title>Calculul lui n!</title>
</head>
<body>
<?
//Calculul lui n!
$n=10;
$i=1;
$fact=1;
Do{
$fact=$fact*$i;
$i++; }
while ($i<=$n);
echo ”Rezultatul lui n! este: $fact”; ?>
</body>
</html>
<html>
<head>
<title> Instructiunea do...while</title>
</head>
<body>
<?php
$i=1
do{
echo “ pentru $i multiplu de 2 este”.($i*2).”<br>”;
$i++;
}while($i<=12);
?>
</body>
</html>
$i=0;
while($i<10){
echo $i . PHP_EOL;
$i++;
}
$i=0;
do{
echo $i . PHP_EOL;
$i++;
} while($i<10);
Instrucţiunea FOR are sintaxa:

FOR(expresie_iniţializare; condiţie;expresie_incrementare)
instrucţiune;

Principiul de execuţie al acestei instrucţiuni


este:
Pas1. Se evaluează expresie_iniţializare;
Pas2. Se evaluează condiţie, dacă aceasta
returnează TRUE se execută instrucţiunea
subordonată FOR şi apoi se trece la Pasul3,
în caz contrar se execută instrucţiunea
imediat următoare ciclului FOR.
Pas3. Se execută expresie_incrementare şi se
<html>
<head>
<title>Calculul lui n!</title>
</head>
<body>
<?
//Calculul lui n!
$n=10;
$fact=1;
FOR ($i=1;$i<=$n;$i++){
$fact=$fact*$i;
}
echo ”Rezultatul lui n! este: $fact”;
?>
</body>
</html>
<html>
<head>
<title> Instructiunea for</title>
</head>
<body>
<?php
for($i=1; $i<=12; $i++)
{
echo "pentru $i multiplu de 2
este".($i*2)."<br>";
}
?>
</body>
</html>
Instrucţiunea CONTINUE.
utiliza numai în corpul unui ciclu,
efect abandonarea iteraţiei curente.
Sintaxa ei este:
continue;
Efectul acestei instrucţiuni este:
1. instrucţiunilor WHILE, DO-WHILE, se întrerupe iteraţia curentă
şi se trece la evaluarea condiţiei care stabileşte continuarea sau
terminarea ciclului.
2. instrucţiunilor FOR, FOREACH, se întrerupe iteraţia curentă şi
se trece la executarea pasului de reiniţializare.
<html>
<head>
<title> Instructiunea continue</title>
</head>
<body>
<?php
for($i=-1; $i<=12; $i++)
{ if($i==0){
continue;}
if ((12%$i)==0){
echo "pentru $i divizorii lui 12 sunt".(12/$i)."<br>";
}
}
?>
</body>
</html>

Obs: nu se iese din ciclu ci se sare peste $i=0 evitandu-se impartirea la


zero fara parasirea ciclului.
Instructiunea break
-se foloseste atunci cand se doreste iesirea fortata din cicluri si se executa instructiunea
imediat urmatoare.
-se foloseste ca masura de siguranta importiva erorilor
Obs: 1.impartirea unui numar la zero nu provoaca o eroare ireparabila in PHP.Mototrul de
PHP genereaza doar un avertisment si continua executia
2.Comenzile break si continue diminueaza lizibilitatea scriptului.
<html>
<head>
<title> Instructiunea continue</title>
</head>
<body>
<?php
for($i=-1; $i<=12; $i++)
{ if($i==0){
break;}
if ((12%$i)==0){
echo "pentru $i divizorii lui 12 sunt".
(12/$i)."<br>";
}
}
Imbricarea stucturilor repetitive
-utile at cand se creaza dinamic tabele html:

<html><head><title> Instructiunea repetitive


imbricate</title></head><body>
<?php
echo "<table border=\"1\“>";
for($i=1; $i<=5; $i++){
echo "<tr> ";
for($j=1; $j<=5; $j++){
echo "<td>";
echo ($i*$j);
echo "</td> ";
}
echo "</tr> ";
}
echo "</table>“;?></body></html>
Folosirea caracterului de eludare: \ inainte de fiecare citare din cadrul
sirului de caractere este necesar pt ca motorul PHP sa nu interpreteze ca
inceput secventa \” sau sfarsit de sir \”. In caz contrar s-ar genera eroare.
Deci, nu se proceseaza ghilimelele daca folosim \”. \n-caracter de linie
noua.
Transmiterea datelor la browser cu ajutorul lui
echo sau print().
<html>
<head>
<title> Transmiterea datelor la browser cu echo() sau print</title>
</head>
<body>
<?php
$afisare_pret=true;
if ($afisare_pret){
echo "<table border=\"1\">\n";
echo "<tr><td colspan=\"3\">";
echo "Lista preturi in euro";
echo "</td></tr>";
echo "<tr><td>4</td><td>54</td><td>40</td></tr>";
echo "</table>";}
?>
</body>
</html>
In scriptul urmator nu se mai scrie codul html din cod php avantajul este
ca se evita procesarea ghilimelelor precum si transmiterea catre browser
cu ajutorul instructiunii echo si a functiei print(). In cazul unui cod mare
se indica prima modalitate de scriere.
<html>
<head>
<title> Cod php si html</title>
</head>
<body>
<?php
$afisare_pret=true;
if (afisare_pret){
?>
<table border=”1”>
<tr><td colspan=”3”>Lista preturi in
euro</td></tr>

<tr><td>4</td><td>54</td><td>40</td></tr>
</table>
<?}?>
</body>
</html>
Instrucţiunea RETURN; este o instrucţiune de
revenire dintr-o funcţie cu următoarele două
formate:
1. return;
2. return $expresie;
Instrucţiunea EXIT; are rolul de a opri execuţia
întregului script PHP. Această instrucţiune se
foloseşte în depistarea şi corectarea erorilor din
cadrul unui script PHP.
Instrucţiunea DECLARE se foloseşte la stabilirea
directivelor de executare/rulare a unui cod sursă.
Până în prezent a fost implementată o singură
directivă de executare, numită ticks care se
stabileşte astfel: ticks=n (se permite rularea în
cadrul unui cod sursă a unei funcţii după fiecare n
linii de cod) Sintaxa acestei instrucţiuni este:
Instrucţiunile include(); şi require();
-sunt echivalente
-au rolul de a insera conţinutul unui fişier în cadrul unui
script PHP în locul acestora.
Diferenţa dintre cele două instrucţiuni este:
în caz de eroare
require(); va produse o eroare fatală.
Se generează un mesaj de eroare și scriptul se oprește
include(); va afişa un mesaj de eroare (avertisment) dar
scriptul continuă
Este recomandat a se folosi require()!
Fişierul care se include se numeşte
“include.php” şi are codul sursă:

<?php
echo “fisierul care se include numit include.php si
care calculeaza suma lui 10 cu 90: ”;
$a=10;
$b=90;
$rezultat=$a+$b;
echo “ $rezultat”;
?>
Scriptul în care se include fişierul de mai sus se numeşte “fact.php” şi are
codul sursă:

<html>
<head><title>Exemplu de includere
fisiere</title></head>
<?php include ("include.php");?>
<br>
<?php
//Calculul lui n!
$n=10;
$i=1;
$fact=1;
Do{
$fact=$fact*$i;
$i++; } while ($i<=$n);
echo ”Rezultatul lui n! este: $fact”;?>
</body>
În browser la rularea scriptului în care s-a inclus fişierul “incde.php”
se afişează:
Instrucţiunile include_once(); şi require_once();
-sunt derivaţii ale instrucţiunilor include(); şi
require();
- se folosesc când
se doreşte includerea într-un script a unui fişier o
singură dată.

Un exemplu ar fi, dacă într-un site web se


doreşte ca pe fiecare pagină a acestuia să apară
calculul sumei a două numere atunci este mai
uşor să se salveze codul sursă necesar o singură
dată într-un fişier numit “suma.php”. Acest fişier
va fi inclus în toate paginile site-ului fie cu
comanda include(“sumă.php”), fie cu
require(sumă.php). Această soluţie este soluţia
optimă!
Tipuri de erori
 
In PHP sunt cateva tipuri de erori- in general mentionate ca nivelurile
de eroare în PHP:
1. Erori de compilare : erori depistate de parser la compilarea unui
script. Nu poate fi prinse(trapped) din interiorul script-ul în sine.
2. Erori fatale: erori care opresc executia unui script. Nu pot fi
prinse/trapped
3. Erori recuperabile: erori care reprezintă eşecuri semnificative, dar
inca poate fi manipulate într-un mod sigur.
4. Warnings (Avertismente)- erorile recuperabile care indică o
defecţiune run-time. Nu opresc executarea de script-ul.
5. Notificări: indică faptul că o condiţie de eroare a avut loc, dar nu
este neapărat semnificativă. Nu se opreste executarea script-ul.
Raportarea erorilor
In mod implicit PHP este setat sa raporteze orice eroare intalnita la executarea
scriptului.
Directive de configurare din fişierul php.ini permit să se stabileasca modul în care-şi-
care erori sunt semnalate.
Cele mai importante directive sunt: error_reporting, display_errors şi log_errors.
Directivă error_reporting determină care erorile sunt raportate de către PHP. O serie
de constante predefinite ofera posibilitatea de a împiedica PHP sa raporteze erori sub
un anumit nivel de predefinire.
De exemplu, următorul text permite raportarea tuturor erorilor, cu excepţia
notices(notificarilor):
error_reporting=E_ALL & ~E_NOTICE
Error reporting(modul de raportare a erorilor) poate fi schimbat dinamic, folosind in
scripturi functia error_reporting().
Directivele Display_errors şi log_errors - folosite pentru a determina modul în care
sunt semnalate erori.
display_errors = pornit, erorile sunt afisate in browser la iesirea din script - acest lucru
nu este de dorit într-un mediu de producţie, pt ca toată lumea va putea vedea erorile
scripturile.=>activeze log_errors, care provoacă ca erorile să fie scrise in jurnalul de

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