Documente Academic
Documente Profesional
Documente Cultură
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
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
(X)HTML
pagini web statice
PHP MySql
Generează dinamic- cod HTML Baze de date
PHP+MySQL
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-
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
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.
Scopul scripturilor
1. de a îmbunătăți performanța
2. de a efectua sarcini de rutină pentru o aplicație.
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ă.
SMTP (Simple Mail Transfer Protocol) este un protocol simplu, folosit pentru transmiterea
mesajelor în format electronic pe Internet
Serverul web
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
-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.)
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
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 />
value=“” (obligatoriu)
• valoare care se trimite la action=“…”
<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
- 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
?>
</body>
</html>
Comentarii
$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
( “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
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
! ==, !=
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.
<?php
define(“NUME”,”Viorel”,true);
echo NUME;
echo nUme;
echo NuMe;
toate aceste sunt corecte si afiseaza Viorel;
<?php
echo "<br>";
function
exemplu_functie_cosntante(){
echo __LINE__."<BR/>";
echo __FILE__."<BR/>";
ECHO __FUNCTION__."<BR/>";
ECHO __METHOD__."<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:
expresie;
$aduna=$aduna+5;
Instrucţiunea IF are următoarele formate:
Format1:
IF (condiţie) instructiune;
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.
?>
</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);
FOR(expresie_iniţializare; condiţie;expresie_incrementare)
instrucţiune;
<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ă.