Scrierea
unui script PHP
Pentru
scrierea unui script PHP se poate folosi un editor de texte obişnuit ca
de exemplu Notepad sau Wordpad. Fişierul astfel creat se va salva cu
extensia PHP.
Dacă
se lucrează sub Unix sau Linux se poate folosi programul pico sau emacs.
Script-urile
PHP sunt fişiere text ce au aceeaşi structură ca orice document HTML.
Un script PHP poate conţine atât etichete HTML cât şi secvenţe de cod
PHP, incluse într-un marcaj special.
Etichetele
ce delimitează secvenţa de cod PHP are următoarea formă:
<?php
echo
˝O secventa de cod PHP˝;
?>
|
Observaţie : Instrucţiunile
PHP sunt expresii care se termină obligatoriu prin caracterul punct şi
virgulă ; .
In
numele fişierului PHP se vor folosi numai caractere, cifre şi liniuţe.
Folosirea altor caractere este interzisă.
Interpretarea datelor de ieşire
Scripturile
PHP pot conţine următoarele operaţii:
-
obţinerea datelor de la utilizator
-
prelucrarea acestor date
-
afişarea rezultatelor obţinute în urma
prelucrării
Ultima
operaţie va apărea în orice script şi se realizează cel mai uşor cu
ajutorul instrucţiunii echo.
De exemplu :
echo „O secventa de cod PHP”;
După
cum se observă orice text care va fi afişat este delimitat prin
ghilimele care se încheie cu ;
În
cadrul acestei instrucţiuni PHP se pot introduce şi etichete HTM (
tag-uri).
echo „ <B> <H2> Imi place
informatica…</H2></B>”;
Comentariile dintr-un script
În
cadrul unui script se pot introduce comentarii despre utilitatea
programului sau despre ce am calculat la un anume pas din program.
Aceste comentarii sunt vizibile numai programatorului, utilizatorul
scriptului vizualizând numai datele de ieşire.
Un
comentariu scris pe o linie va începe cu //( 2 slash-uri) iar cel care
se întinde pe mai multe rânduri începe cu /*
şi se termină cu */ .
Exemplu:
1)
<?php
//comentariu pe o linie
echo” Invat sa scriu scripturi”;
?>
2)
<?php
/* Cu acest tip de comentariu
pot
sa fac invizibile
mai multe linii de cod */
echo „ Incepe sa-mi placa”;
?>
După
ce aţi instalat Apache poziţionaţi-vă până în folderul Program
Files→ Xampp→Htdocs. Aici ar fi indicat să vă creaţi un folder de
lucru, de exemplu PROBE. Toate scripturile PHP se vor salva în acest
folder. Pentru a le putea rula vom proceda astfel:
-
se lansează browserul
-
în bara de adrese vom scrie calea până la
fişier :
http://localhost/probe/fisier.php
dacă
serverul Windows, Unix sau Linux nu se află în reţeaua locală atunci
puteţi folosi un program FTP pentru a încărca scriptul şi veţi cere de
la administratorul de sistem mai multe informaţii:
-
nume gazdă server
-
ID-ul şi parola d-voastră pentru a lucra
prin protocolul FTP
-
Folderul în care puteţi salva scripturile
PHP
-
URL ce trebuie folosit pentru a rula
scripturile
Exemplu
de mod de încărcare a fişierului d-voastră cu ajutorul unui client FTP:
-
deschideţi MS-DOS
-
comanda CD pentru a
ajunge în folderul ce conţine scriptul
-
comanda ftp gazdă (=
numele server PHP)
-
introduceţi-vă ID-ul şi parola furnizată
de administratorul de sistem
-
cu comanda CD vă
deplasaţi în folderul în care trebuie încărcat scriptul
-
comanda put script (=
numele fişierului PHP)
-
comanda quit
după
ce a fost încărcat scriptul se lansează browserul web apoi se deschide
adresa URL asociată scriptului (cea dată de administratorul de sistem)
Uneori
, la lansarea fişierului PHP pot apărea erori de execuţie în locul
datelor de ieşire aşteptate.
Acestea
sunt de obicei erori din cadrul programului, care sunt semnalate prin
numărul liniei unde ar fi posibila greşeală. Nu vă rămâne decât să
deschideţi fişierul cu editorul de texte şi să corectaţi.
Mai
pot apărea erori dacă nu aţi scris corect adresa URL. La fel,
verificaţi şi corectaţi.
În
cadrul programelor se utilizează date care reprezintă informaţii.
Aceste date pot aparţine unor tipuri simple sau unor tipuri structurate.
a)
Tipul întreg (int) poate reţine numere întregi din domeniul
-2.147.483.648…..+2.147.483.647 . Ele sunt
limitate la acest
interval deoarece sunt stocate ca valori pe 32 de biţi.
Ex: 23, +872, -6598, 0
b)
Tipul real (double) conţine valori numerice reprezentate în virgulă mobilă cu
valoarea maximă 1,8*10308 şi având o precizie de maxim 14
cifre zecimale. Ele ating această valoare maximă fiindcă sunt stocate,
în majoritatea cazurilor, în formatul IEEE-64 pe 64 de biţi.
Atenţie:
-
pentru scrierea numerelor duble se va
folosi punctul zecimal pentru delimitarea părţii întregi de partea
zecimală.
-
Putem folosi scrierea 1.3e2 care înseamnă
1.3*102 sau -2.5e-3 = -2.5*10-3
Ex: 12.345 , -5.00 , 0.03 , .056, -.456
c)
Tipul logic (boolean) reprezintă mulţimea cu două elemente true
şi false. Orice expresie care are valoarea nenulă se
consideră adevărată şi orice expresie cu valoarea zero sau NULL se
consideră falsă.
d)
Şiruri = şirul de caractere are ca elemente toate succesiunile de
zero sau mai multe caractere. Pentru delimitarea unui şir de caractere
se pot utiliza ghilimelele sau apostrofurile.
Şirul vid : ˝˝,
΄΄
Şiruri formate
dintr-un singur caracter : ˝A˝ , ˝2˝
Şiruri oarecare:
˝Merg la scoala˝ , ˝563˝, ΄Parola este΄
|
PHP
facilitează folosirea următoarelor caractere speciale numite secvenţe escape:
\n = salt la linie nouă
\r = retur de car
\t = tabulare pe
orizontală
\\ = backslash
\$ = simbol dolar
\” = ghilimele duble
O variabilă reprezintă numele dat unei
valori , valoare ce
poate fi modificată pe parcursul execuţiei programului PHP.
Identificatorii asociaţi variabilelor PHP sunt şiruri de caractere
construite conform regulilor:
-
primul caracter este $
-
al doilea caracter este obligatoriu
literă sau underscore _
-
urmează un număr oarecare de caractere
literă sau cifră
Ex: Corect : $a, $produs, $suma_1
Incorect : $2x, suma, $
produs, $suma 2
|
Observaţie : Limbajul PHP este case-sensitive adică majusculele şi minusculele sunt tratate
diferit. Astfel, identificatorii $Suma, $SUMA, $suma
sunt variabile diferite.
În PHP, o variabilă se consideră definită
în momentul
atribuirii, tipul asociat variabilei fiind tipul expresiei din partea a
atribuirii.
<?php
$a = 4 + 2;
$b = 9 - 3.2;
echo $a ,” ”, $b;
$b = ”informatica” ;
echo ” ”
, $b ;
?>
|
Explicaţii : Variabila
$a va avea tipul întreg iar $b va fi de tip real. După afişarea
valorilor celor 2 variabile , variabilei
$b i se atribuie constanta şir de caractere „informatica”,
astfel că tipul variabilei $b se schimbă.
Deci o variabilă poate avea unul din
tipurile de date
enunţate mai sus. Tipul unei variabile se poate modifica dacă atribuim
o valoare de tip diferit faţă de cea curentă.
a)
Tipul resursă
. Variabilele de acest tip sunt folosite pentru realizarea conexiunilor
dintre script-urile PHP şi resursele externe, cum ar fi bazele de date
sau fişierele.
b)
Tipul tablou
O
variabilă tablou conţine mai multe valori care se numesc elementele
tabloului. Fiecărui element îi corespunde o cheie care permite accesul
la acel element. Pentru a crea un tablou vom realiza o atribuire ca în
exemplu:
$judet[1]="Alba";
adică
am creat variabila tablou cu numele judet care conţine
un element Alba ce are cheia 1. Dacă mai introduc alte
elemente voi atribui alte chei:
$judet[2]="Cluj";
$judet[3]="Iasi";
Deci
avem 3 elemente în variabila tablou. Dacă vrem să atribuim valoarea Iasi unei alte variabile vom proceda astfel:
$judet_Moldova=$judet[3];
Cheile
folosite nu este obligatoriu să fie numere consecutive şi nu trebuie să
fie nici măcar numere. Alt exemplu cu ierarhia dintr-o firmă:
$functie["Ion"]="paznic";
$functie["Ana"]="contabil";
Deci
Ion este paznic iar Ana este contabilă.
Elementele
unui tablou cu chei non-numerice se apelează sau prelucrează la fel cu
cele care au chei numerice.
$promovat=$functie["Ion"];
Afişarea
datelor
Se realizează prin intermediul lui echo:
echo expresie_1, expresie_2, …,
expresie_n;
unde : expresie_1, expresie_2, …,
expresie_n sunt de tip şir de caractere.
Observaţie: 1. Pentru concatenarea a 2 şiruri de caractere se utilizează
simbolul punct .
<?php
echo „Invatam limbajul PHP.
<BR>”;
echo „ Invatam” . ”limbajul
PHP <BR>”;
?>
|
2.
Şirurile de caractere afişate cu echo pot
conţine orice etichetă HTML, ele apărând în fereastra navigatorului în
conformitate cu etichetele utilizate.
În următorul exemplu urmărim
modalitatea de afişare a valorilor variabilelor.
<?php
$a = 10;
$b = 3.4;
$suma = $a+$b;
echo „Suma este :
$a+$b = $suma”;
?>
|
Se va afişa, Suma este: 10+3.4=13.4
deci are loc înlocuirea
variabilelor cu valoarea acestora.
Aritmetici
+, -, *,
/, %, ++, --
(adunarea, scăderea, înmulţirea, împărţirea, restul împărţirii întregi,
incrementare, decrementare)
Relaţionali:
<, >, <=, >=, != sau <> (diferit), = = (egal),
= = =(identic), != = (neidentic)
Operatorul = = =
returnează true dacă 2 expresii sunt identice ca valoare şi de
acelaşi tip.
Logici:
and, &&
|
şi logic
|
or, ||
|
sau logic
|
not, !
|
negaţia logică
|
<?php
$x = 1;
$y = 3;
$z = 1;
$t = 3.00;
if ($x= = $z &&
$t>0) echo
„DA”;
else echo
„NU” ;
if ($x< $y ||
$y>$z) echo „DA”;
else echo
„NU” ;
if (!$x) echo
„DA”;
else echo
„NU” ;
?>
|
Operator pe şir de caractere este
simbolul punct . (concatenare) :
?php
$s1 = ”PHP este un”;
$s2 = ”limbaj”;
echo $s1. " ". $s2;
?>
|
Va avea ca rezultat şirul: „ PHP
este un limbaj” .
Operatorul de incrementare:
++$a
are ca efect adăugarea lui 1 la valoarea variabilei a
--$b va scădea 1 din valoarea
variabilei b
$x=++$a;
adică adăugăm 1 la valoarea lui a
apoi atribuim noua valoare lui x .
$nume="Ionescu"; $prenume="Ana";
$nume_complet=$nume." ".$prenume;
Între cele 2 variabile am introdus
un spaţiu iar alipirea lor o realizez cu ajutorul operatorului punct
rezultând variabila $nume_complet cu valoarea „ Ionescu Ana” .
Operaţiile matematice dintr-o
expresie respectă aceleaşi reguli dinmatematică.
$a=1+2*4;
=>a=9
$a=(1+2)*4;
=>a=12
Funcţii matematice
abs($x) =>modul lui x
ceil($x) => valoarea lui x
rotunjită la întregul imediat superior
floor($x) => valoarea lui x
rotunjită la întregul imediat inferior
max($x,$y,…) => maximul dintre
valorile aflate ca argumente (x,y,…)
min($x,$y,…) => minimul dintre
valorile aflate ca argumente(x,y,…)
pow($a,$n) => an
sqrt($a) =>

Un şir de caractere
poate fi privit ca fiind un tablou unidimensional cu elemente de tip
caracter.
Aceasta înseamnă că putem parcurge şirul carcater cu caracter, în
vederea
prelucrării acestora şi, de asemenea, putem modifica orice caracter din
şir
printr-o operaţie de atribuire. De exemplu parcurgerea şirului $sir se
poate
face astfel:
for ($j=0;$j<strlen($sir);$j ++)
echo $sir[$j].
`<BR>` ;
Aflarea lungimii unui şir
Determinarea lungimii unui şir de
caractere se realizează prin apelul funcţiei strlen(),
care returnează numărul de caractere din şirul precizat
ca parametru.
<?php
$sir="azi merg la scoala";
$lung=strlen($sir);
echo "Sirul <I><B>$sir</B></I> are
lungimea ".$lung;
?>
|
Eliminarea
caracterelor spaţiu – white spaces-
de la extremităţile unui şir de caractere, este o facilitate importantă
atunci
când datele sunt preluate din formulare sau baze de date, acolo putând
să apară
spaţii nedorite care ar genera erori în aplicaţie. Caractere white spaces sunt considerate atât
caracterul spaţiu cât şi TAB, CR, tab
vertical, etc.
Funcţie
|
Explicaţie
|
String ltrim (string sir)
|
Elimină spaţiile de la începutul şirului sir
|
String rtrim (string sir)
|
Elimină spaţiile de la sfârşitul şirului sir
|
String trim (string sir)
|
Eimină spaţiile din ambele extremităţi ale
şirului sir
|
<?php
$sir1="
azi merg la scoala\t";
$sir2="\t azi merg la scoala";
if($sir1==$sir2)
echo "sirurile sunt
identice <BR>";
else
echo " sirurile sunt
diferite <BR>";
if (trim($sir1)==trim($sir2))
echo "Identice
<BR>";
else
echo "Difera
<BR>";
?>
|
Funcţie
|
Explicaţie
|
String strtoupper (string sir)
|
Transformă toate caracterele şirului sir la majuscule
|
String strtolower (string sir)
|
Transformă toate caracterele şirului sir la minuscule
|
String ucfirst (string sir)
|
Transformă primul caracter din şirul sir la majusculă
|
String ucwords (string sir)
|
Transformă primul caracter al fiecărui
cuvânt din şirul sir la majusculă
|
?php
Afişează:
MAINE MERGEM LA MECI
maine mergem la meci
|
|
$sir1=" Maine mergem la MEci";
echo
strtoupper($sir)."<BR>";
echo
strtolower($sir).'<BR>';
?>
|
Compararea
se bazează pe ordinea
lexicografică şi rezultatul returnat poate fi o valoare negativă,
pozitivă sau
egală cu zero în funcţie de rezultatul comparaţiei.
Funcţie
|
Explicaţie
|
String strcmp (string s1, string s2)
|
Compară şirurile s1 şi s2 returnând:
-
0, dacă s1= s2
- <0 , dacă
s1<s2
- >0, dacă
s1>s2
|
String strncmp (string s1, string s2, int n)
|
Compară primele n caractere din şirurile s1
şi s2 returnând:
-
0, dacă s1= s2
- <0 , dacă
s1<s2
- >0, dacă
s1>s2
|
String strcasecmp (string s1, string s2)
|
La fel ca la
strcmp, dar compararea are loc fără a se face diferenţa între majuscule
şi minuscule
|
String strncasecmp (string s1, string s2, int n)
|
La fel ca la
strncmp, dar compararea are loc fără a se face diferenţa între
majuscule şi minuscule
|
Secvenţa:
<?php
$s1='calculator';
$s2='calculate';
Afişează:
Siruri diferite
Siruri identice
|
|
if (strcmp($s1,$s2)==0)
echo "Siruri identice<BR>";
else
echo "Siruri diferite<BR>";
if (strncmp($s1,$s2,6)==0)
echo "Siruri identice<BR>";
else
echo "Siruri diferite"<BR>";
?>
|
Majoritatea aplicaţiilor web
manipulează date confidenţiale, cum ar fi
datele personale. Memorarea datelor confidenţiale în fişiere sau baze
de date se
realizează numai după criptarea acestora, ca măsură de precauţie în
cazul
accesului neautorizat la serverul gazdă al aplicaţiei.
Limbajul
PHP furnizează mai
multe
funcţii de criptare a şirurilor de caractere : md5(),
crypt(), sha1(), crc32().
<?php
$parola="martinel";
echo sha1($parola).'<BR>';
?>
|
Afişează:
Exemplu:
Într-un formular vom
crea mai multe
casete
text cu numele, prenumele, parola utilizatorului. Pentru prima casetă
text vom
testa dacă nu e caseta goală, sau dacă a introdus numere în loc de
caractere şi
dacă are lungimea mai mică decât 5 atunci vom considera că utilizatorul
nu a
completat corect în caseta nume.
Pas 1. Salvăm fişierul p9.html
în
folderul xampp/ htdocs/
probe care va conţine formularul de mai jos.
<html>
<head>
<title>New
Page
1</title></head>
<body>
<form
method="POST" action="p9.php">
Nume: <input
type="text" name="nume" size="60"
maxlength="15"><br><br>
Prenume:
<input type="text" name="prenume"
size="20"><br><br>
Varsta: sub 16
<input type="radio" value="sub16"
name="varsta">
| peste 16
<input type="radio" name="varsta"
value="peste16"><br><br>
Introduceti
parola: <input type="password" name="parola"
size="20"><br><br>
<input
type="submit" value="Trimite"
name="Trimite">
<input
type="reset"
value="Reseteaza" name="Reseteaza" >
</form>
</body></html>
Pas 2. În acelaşi folder vom
salva fişierul p9.php cu următorul
conţinut:
<?php
if (($_POST['nume']
= = "") ||
(is_numeric($_POST['nume'])) ||
(strlen($_POST['nume'])
< 5))
{
echo ' Campul nume nu a
fost completat corect. <br>
<a
href = "formular_1.htm">Apasa aici</a> pentru a te intoarce
la formular.'
;
}
else
{
echo 'Nume:
'.$_POST['nume'].' <br>
Prenume:
'.$_POST['prenume'].' <br>
Varsta:
'.$_POST['varsta'].'
<br>
Parola:
'.$_POST['parola'].'
<br>';
}
?>
Pas 3.
Deschideţi fişierul HTML
cu ajutorul unui browser şi completaţi URL-ul
(http://localhost/probe/p9.html). Completaţi câmpurile cu valorile cerute şi apăsaţi
butonul Trimite.
Pas 4. După
ce scriptul de
prelucrare p9.php este executat,
acesta va afişa un mesaj ca mai jos (dreapta).
Verificarea
datelor transmise prin formular
Verificarea
conţinutului trimis prin formular se face relativ foarte uşor.
<?php
if(($_POST['nume']
= = "") ||
(is_numeric($_POST['nume'])) ||
(strlen($_POST['nume'])
< 5))
{
echo
' Campul nume nu a fost completat corect. <br>
<a
href =
"p9.html">Apasa aici</a> pentru a reveni la formular.'
;
}
else
{
echo
'Nume: '.$_POST['nume'].' <br>
Prenume:
'.$_POST['prenume'].'
<br>
Varsta:
'.$_POST['varsta'].'
<br>
Parola:
'.$_POST['parola'].'
<br>';
}
?>
Condiţia
if spune
cam aşa: dacă variabila nume este
goală, ori dacă este numerică, ori dacă numărul de caractere este mai
mic de 5,
rezultă bucla de cod din instrucţiunea if.
Dacă toate acestea sunt îndeplinite, atunci se execută bucla de cod
din
instrucţiunea else.
Modificaţi
în pagina pr9.php
introducând scriptul de mai sus pentru a testa aceste reguli şi pentru
câmpul Prenume
şi Parola.
If
(
($_POST['nume'] = = "") || (is_numeric($_POST['nume'])) ||
(strlen($_POST['nume']) < 5) || ($_POST['prenume'] = = "") ||
($_POST['parola'] = = "")) etc etc.
(is_numeric($_POST['nume'])) – această parte ne spune dacă
valoarea câmpului nume este
numerică.
Putem
folosi şi varianta în
care dorim să ştim dacă nu
este numerică, şi anume: ( !
is_numeric($_POST['nume'])) observaţi că am adăugat un ! pentru a
nega.
1. Concepeţi un
formular care va
conţinea
câmpurile: Nume utilizator, Adresa, Telefon, Parola şi butoanele
Trimite şi
Sterge.
Realizaţi
următoarele discuţii:
a) Să introducă în
câmpul nume
numai caractere
iar lungimea numelui sa fie minim 10.
b) În câmpul Telefon
sa fie
introduse numai
numere
c) Parola să fie
formată numai din
numere şi
are lungimea de minim 7 cifre.