Documente Academic
Documente Profesional
Documente Cultură
Tema 4 PHP
4.1 Obiective
4.2 Introducer0065
PHP este un limbaj dinamic, ceea ce nseamn c PHP comunic cu utilizatorul, el efectueaz
dinamic operaii, iar coninutul paginii se schimb n real-time, n funcie de preferine. De
exemplu n HTML nu putem modifica coninutul unei pagini dect dac o nlocuim cu una
nou (cu coninut nou). n PHP lucrurile stau mai simplu, printr-un script putem introduce tiri
pe pagina noastr sau putem modifica titlul paginii, sau putem construi formulare dinamice
pe care utilizatorii s le foloseasc. Totui acest lucru nu nseamn c ne debarasam de
limbajul HTML, nicidecum. Cei care au cunotine HTML vor nelege i nva mai
uor PHP.
4.2.1 Sintaxa
La fel ca i n limbajul HTML, atunci cnd deschidem un tag, el trebuie automat nchis, pentru
a nu genera erori (ex. <table> i </table>), i n PHP, cu ajutorul tagurilor <?php i
respectiv ?> vom putea delimita codul PHP de codul HTML. Este foarte important de tiut,
pentru lejeritate se pot folosi mai simplu tagurile <? i respectiv ?>, cu toate acestea
metodele prin care putem delimita tagurile PHP sunt mai multe, spre exemplu:
6
Neterminarea unei declaraii cu punct i virgul va duce la eroare de tip parse
error. Exemplu de cod care folosete un comentariu i o declaraie:
<?php
//mai jos va voi saluta
echo("Salut!");
?>
Prima linie este comentariu i este ignorat de PHP, a doua linie reprezint o
declaraie care se ncheie bineneles cu ;.
Exemplul 1:
Vom testa configuraia PHP cu ajutorul funciei phpinfo(), scriind urmtorul
script ntr-un fiier nou php, cu ajutorul lui PHP Design 2005/2007 sau
alt editor:
<?php
phpinfo();
?>
Se salveaz codul ca info.php i se ruleaza n browser /vezi lucrarea 1_last/.
Se vor obine o mulime de informaii despre configuraia PHP, tipul serverului, etc.
funcia phpinfo() are variabilele deja declarate n motorul PHP i de aceea nu este
necesar dect s o declarm o singur dat.
Exemplul 2:
Scriem un exemplu PHP n stil clasic, prin care salutm utilizatorii. Iat codul:
<?php
echo(Salutare la toti cititorii);
?>
Se salveaz sub numele salut.php i ruleaz n browser (ex.
http://localhost/salut.php). Pe ecran apare afiat textul Salutare la toti cititorii.
Acest lucru a fost posibil datorita functiei echo() cu ajutorul creia de acum nainte
vom afia text pe ecran.
Not: pe lng funcia echo() mai exist i print() care poate fi folosit n
acelai mod.
Observaie:
echo() nu este totui o funcie, ea reprezint un constructor de limbaj dar pentru
uurina exprimrii o vom numi funcie. O dovad bun n sensul c nu este funcie
este aceea c nu suntem nevoii sa folosim paranteze. Sintaxa echo Salutare la
toti cititorii; este de asemenea acceptat.
S scriem mai multe exemple cu funcia echo(), pentru c va fi folosit foarte des,
i s vedem ce se poate face cu ea:
<?php
echo(Salut); echo(Numele meu este);
echo(Alex Maimescu);
?>
6
Salveaz codul de mai sus ca numelemeu.php i ruleaz-l n browser. Vei
observa c n ciuda faptului c am scris textul pe mai multe linii, el va fi afiat n
browser pe o singura linie. Fapt care evident nu ne convine, aa ca vom apela la
tagul <br> din HTML:
<?php
echo(Salut<br>);
echo(Numele meu este<br>);
echo(Alex Maimescu);
?>
Acum textul va apare pe 3 linii separate.!!!!
Pentru coderii avansai care doresc s aib totul clar i afiat corect n
conformitate cu toate standardele vor opta pentru urmtorul cod:
<?php
echo(Salut<br>\n);
echo(Numele meu este<br>\n);
echo(Alex Maimescu);
?>
Caracterul \n este un caracter de tip escape. Diferena se poate observa cnd ne
uitm n codul surs HTML generat. \n nseamn newline, adic indic faptul c
urmeaz linie nou. Totui acesta nu este singurul caracter de tip escape, iat
lista complet:
Tabel caractere escape
Caracter Descriere
\a alarma
\cx control-x (x poate fi orice
\e escape
\f formfeed
\n newline (linie noua)
\r carriage return
\t tab
\xhh caracter cu codul hexa hh
\ddd caracter cu codul octal ddd
n PHP toate variabilele ncep cu semnul de dolar ($). Dup semnul $ se poate
introduce un ir de caractere care poate aprea n diferite combinaii:
$variabila $variabila123
$prima_variabila
$_VARIABILA
Acestor variabile le pot fi asignate orice valori, fie c este vorba de un ir de
caractere, numere, propoziii, fraze, etc.
n funcie de rolul pe care l au ntr-un script, variabilele pot fi de dou feluri:
variabile globale i
variabile locale (ex. cele declarate n cmpul unei funcii).
6
n codul de mai jos vei regsi perfect conceptul de variabil:
<?php
$salut=Salutare natiune;
echo($salut);
?>
Coninutul variabilei $salut este pasat funcie echo care va afia coninutul acesteia, deci
va rezulta textul Salutare natiune.
Urmtorul cod demonstreaz conceptul de variabil ncapsulat. n cazul de mai jos este vorba
despre o variabil ncapsulat
<?php
$nume = Alex Maimescu;
echo(Numele meu este $nume);
//folosim functia echo() pentru a afisa textul
?>
Rulai n browser scriptul de mai sus i vei vedea c el afieaz textul Numele meu este Alex
Maimescu.
Probabil v-ai dat seama pn acum de ce se lucreaz cu variabile. Pentru c ne fac viaa de
programator mai uoar, unei variabile i putem asigna orice valoare, orice text orict ar fi el de
mare, i pe care l putem manipula doar prin apelarea unei simple variabile asignate.
<?php
$numarul1 = 25;
$numarul2 = 20;
$numarul1 + $numarul2 = $rezultat;
echo($rezultat);
?>
n codul de mai sus am declarat dou variabile $numarul1 i $numarul2, crora le-am dat
valorile 25, respectiv 20. Mai jos am efectuat operaia simpl de adunare, al crei rezultat
este coninut de variabila $rezultat. Pentru a afia aceast valoare ne folosim de funcia
echo(). Rezultatul este clar, pe ecran va fi afiat, numrul 45 (20+25=45).
Pe lng operaia de adunare (+) se mai pot efectua opera urmtoarele operaii matematice:
(-) scdere, (*) nmulire, (/) mprire, (%) modul.
Tipurile de date n PHP sunt urmtoarele:
array-uri;
numere de tip float sau double;
integer;
object;
string
Aceste noiuni ar trebui s v fie cunoscute de la programarea n C++.
n continuare vom discuta despre tipurile string i integer.
Un string este format dintr-o plaj de caractere. Acesta poate s fie un cuvnt, o linie, sau
poate un ntreg articol.
Un integer este un numr ntreg care ia valori ntre (-32768 i 32767).
Pentru a determina ce tip de dat este o anumit variabila, putem folosi funcia gettype().
Iat un exemplu:
<?php
$variabila_mea=Salut, sunt o variabila;
$tip=gettype($variabila_mea);
echo(Aceasta este o variabila de tip $tip);
?>
6
Mai sus am creat o variabil numit $variabila_mea creia i-am dat valoarea
Salut, sunt o variabila. Apoi prin funcia gettype() am chemat aceast variabil
pentru a afla ce fel de tip este ea. Mai jos am utilizat echo() pentru a afia tipul
variabilei. Pe ecran se va afia, Aceasta variabila este de tip string.
Facei un test si pentru $variabila_mea=6
$variabila = salutare ;
Acum s zicem c vrem o variabil care s aib numele valorii lui $variabila,
deci scriem:
$$variabila = lume;
Cu alte cuvinte, mai sus am creat o variabila cu numele $salutare i i-am dat
valoarea lume. Ne putem juca cu variabile dinamice la infinit, dar atunci cnd s-a
ajuns la un nivel mare deja se creaz confuzii iar dac cineva ar dori s citeasc,
pentru a mbunti, codul scris de tine, atunci nu ar mai nelege nimic.
Atunci cnd folosim array-uri, o sintax ca $$variabila [1] este incorect pentru c
PHP nu ar tii crui nivel s aplice indexul, de aceea se folosete expresia:
{$variabila [1]} sau ${$variabila}[1].
<html>
<head>
<title> <?php echo $titlu; ?> </title>
</head>... </html>
Codul de mai sus ilustreaz foarte bine colaborarea dintre PHP i HTML. Codul
PHP poate fi asimilat cu uurin de tagurile HTML att timp ct el se afl ntre
delimitrile <?php respectiv ?>.
De asemenea se pot introduce mai multe declaraii ntre tagurile html, n diferite
moduri:
6
?>
</body> ......... </html>
Sau
Fiierele de tip PHP pot include cod html, fie c face parte din ele, fie c este scris separat.
Privii urmtorul cod:
<?php
$titlu = Pagina mea de web;
include(index.inc);
?>
Exemplele de mai sus sunt concludente, ns trebuie specificat c folosirea fiierelor de tip
.inc nu este recunoscuta de Apache i nu este parsata ca php, aa c informaii senzitive se
pot vedea prin intermediul browserului, de aceea trebuie s apelam la setrile httpd.conf
i s adugm urmtoarele linii:
<Files ~ "\.inc$">
Order allow,deny
Deny from all
</Files>
n acest fel am blocat accesul din exteriorul serverului la fiierele cu extensia .inc. Aceasta
este o practic foarte bun (care poate fi executat i prin intermediul unui .htaccess1 n caz ca
nu avem acces la httpd.conf, cum se ntmpl de obicei pe serverele virtuale).
Not: Totui nu este o practic bun i nu se recomand folosirea fiierelor cu extensii .inc ci
mai degrab cu extensia .php.
Chiar i aa problemele nu se termin, deoarece acestea trebuie protejate mpotriva
accesului direct.
Iat ce metode de protecie se pot folosi:
plasarea tuturor fiierelor cu informaie sensibil ntr-un director sau mai multe
directoare care urmeaz s fie protejate prin .htaccess . Aici ne referim la fiierele
care nu sunt accesate direct de user n pagin, ci la cele care se introduc de obicei cu
funciile include(), include_once(), require(), require_once().
plasarea tuturor fiierelor cu informaii sensibile ntr-un director sau directoare diferite
de cel din rdcina web (httpdocs, www, etc), n acest fel ele nu pot fi accesate
prin browser n nici un fel. Aceast metod nu este aplicabil pentru servere virtuale
sau ntr-un enviroment tip server de hosting din cauza restriciilor sau din cauz c
PHP poate fi setat n safe_mode.
6
1
Un fiier .htaccess este un simplu fiier text ce conine comenzi, denumite
directive Apache. Aceste directive se aplic i afecteaz fiierele din directorul n
care se afl fiierul .htaccess precum i subdirectoarelor acelui director.
5.1 Obiective
5.2 Introducere
6
dimensiune
6
Studenii vor realiza imaginea n bmp, aa cum arat mai sus, sau dup propria
imaginaie.
5.3.1 Index
antet.html - n acest fiier se afieaz codul html pentru nceputul paginii, i dac
exist, se ncarc i fiierele cu cod CSS i JavaScript folosite n pagin.
coprp.php - conine codul HTML existent ntre tagurile <body> i </body> Dac
exist, se ncarc i fiierele care conin meniul vertical, precum i fiierul care
afieaz coninutul paginii cerute.
<?php
echo'<body> <table border="1" width="700" align="center">
<tr>
<td valign="top" width="70">';
if (file_exists("meniu_vertical.html"))
6
{ include("meniu_vertical.html"); } echo' </td>
<td width="">';
if (file_exists("pagina.php"))
{ include_once("pagina.php"); } echo '</td> </tr> </table>';
echo'</body>';
?>
<?php
//se face conexiunea la BD
require config.php
// se verifica daca se cere o pagina
if (isset($_GET['ID']))
{
// daca se cere o pagina se verifica daca variabila nu este goala
if (!empty($_GET['ID']))
{ $ID = $_GET['ID']; }
// daca este goala se ia pagina principala
else
{ $ID = 'index'; };}
// daca nu se cere nici o pagina inseamna ca trebuie afisata pagina principala
else
{ $ID = 'index'; }
6
// in continuare se prelucreaza pagina pentru afisare
switch ($ID)
//STUDENTI
{
case 'stud':
if (file_exists("studenti.php"))
{
include_once("studenti.php");
$afisare = '';
} else
{ $afisare = '<br>Eroare: Nu se gaseste fisierul studenti.php';
} break;
//CATALOG
case 'cat':
if (file_exists("catalog.php")) {
include_once("catalog.php"); $afisare = ''; } else
{ $afisare = '<br>Eroare: Nu se gaseste fisierul catalog.php';
} break;
//PROIECTE
case 'pro':
if (file_exists("proiecte.html")) { include_once("proiecte.html"); $afisare =
''; } else { $afisare = '<br>Eroare: Nu se gaseste fisierul proiecte.html'; }
break;
//CONTACT
case 'contact':
if (file_exists("contact.html"))
{
$afisare = '';
include_once("contact.html");
} else
{ $afisare = '<br>Eroare: Nu se gaseste fisierul contact.html';
} break;
case 'index':
if (file_exists("primapagina.html")) { include_once("primapagina.html");
$afisare = '';
} else
{ $afisare = '<br>Eroare: Nu se gaseste fisierul primapagina.html';
} break;
case admin:
include_once(admin.html);
default:
$afisare = '<br>Eroare: A fost ceruta pagina care nu exista pe server.';
}
// se afiseaza codul html pentru pagina
echo $afisare;
?>
studenti.php afiseaza lista studentilor, care sunt in BD.
<?php
require 'config.php';
6
$cerere = "SELECT Nume_prenume FROM `info_students`";
$rez = mysql_query($cerere) or die("error!");
echo '
<table>
<tr
<td><b>Lista studenti</b></td>
</tr>';
if(mysql_num_rows($rez) != 0)
while($cimp = mysql_fetch_array($rez))
echo'<tr><td>'.$cimp['Nume_prenume'].'</td></tr>';
echo '</table>';
?>
require 'config.php';
$cerere = "SELECT * FROM `info_students`";
$rez = mysql_query($cerere) or die("error!");
echo '
<table border="1">
<tr>
<td><b>Nume prenume</b></td>
<td><b>Grupa</b></td>
<td><b>Echipa</b></td>
</tr>';
if(mysql_num_rows($rez) != 0)
while($cimp = mysql_fetch_array($rez)) {
echo'<tr><td>'.$cimp['Nume_prenume'].'</td>';
echo'<td>'.$cimp['grupa'].'</td>';
echo'<td>'.$cimp['echipa'].'</td></tr>';
}
echo '</table>';
?>
proiecte.html contine lista proiectelor.
<h3 align="center">Proiecte</h3>
<ul type="disc">
<li>Echipa #1: Analiza Riscului</li>
<li>Echipa #2: Metode Matematice</li>
<li>Echipa #3: Analiza Factoriala</li>
<li>Echipa #4: Metode Matematice</li>
</ul>
6
<td><input type="text" name="name" style="outline: none;" /></td>
</tr>
<tr>
<td>Grupa: </td>
<td><input type="text" name="grupa" style="outline: none;" /></td>
</tr>
<tr>
<td>Denumire proiect: </td>
<td>
<input type="radio" name="proiect" value="Echipa #1: Analiza Riscului"
/> Echipa #1: Analiza Riscului<br />
<input type="radio" name="proiect" value="Echipa #2: Metode
Matematice" /> Echipa #2: Metode Matematice<br />
<input type="radio" name="proiect" value="Echipa #3: Analiza Factoriala"
/> Echipa #3: Analiza Factoriala<br />
<input type="radio" name="proiect" value="Echipa #4: Metode
Matematice" /> Echipa #4: Metode Matematice
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="submit" value="Trimite" />
<input type="reset" value="Reset" />
</td>
</tr>
</table>
</form>
<h3>Pagina de contact</h3>
<p>e-mail: <a href='mailto:
mihaip52@hotmail.com'>
mihaip52@hotmail.com </a><br>
<br>
telefon: 0373-0693.5333 <br>
fax: 0373-0693.5333 <br>
mobil: 0373-0693.5333 <br>
</p>
5.3.6 Subsolul
6
<b>Aceasta este prima pagina </b>
<br>care trebuie sa contine Scopul Sitului.
</td>
</tr>
</table>
</html>
subsol.php - este fiierul care afieaz n josul paginii informaii referitoare la: data
ultimei modificri; date despre dreptul de autor; informaii generale, i ncheie tagul
html.
5.3.6 Conectarea cu BD
config.php face conexiunea cu baza de date, contine numele, adresa si datele de
acces a bazei de date.
<?php
require_once('config.php');
$adress="localhost";
$login="root";
$password="";
$bd="bd-labs";
$connect=mysql_connect($adress,$login,$password,$bd)or die("Nu ma
pot conecat!");
mysql_select_db($bd,$connect)or die("Nu gasesc baza de date!");
?>
6
//echo $_POST['name'];
header('location:http://localhost/bd-lab/BD_lab3/index.php?ID=admin');
?>
Apoi se lanseaza
6
Se selecteaza directoriul SAIT_TEST
6
In ultima mapa se testeaza fiecare fisier aparte si pentru a
primi urmatoarea pagina WEB test, pe hostul local se
lanseaza
6
Tem:
n meniu_vertical, s se mai introduc un link, sub Contact, denumit Admin,
care va deschide (pe viitor) o pagin pentru conectarea la o baz de date n
care s se introduc datele ce vor fi afiate n paginile Studenti i Catalog.
S se creeze un fiier stil.css n care s se defineasc stiluri particularizate pentru
acest site (se va apela la laboratorul nr. 3).
6
Lansarea paginii web experimentale