Sunteți pe pagina 1din 193

1

Dezvoltarea aplicaiilor web


Suport de curs
Autor: Lect. univ. dr. Horea Oros
Universitatea din Oradea
Departamentul de Matematic i Informatic
Aplicaii web
n Browser Scripting
n JavaScript, HTML DOM, DHTML, VBScript, AJAX
n Server Scripting
n SQL, ASP, PHP, ADO
2
PHP introducere
n PHP este un limbaj de programare
puternic ce ruleaz pe server cu care se
pot crea pagini web dinamice i
interactive.
n PHP este folosit pe scar larg, este
gratuit, alternativ eficient ASP de la
Microsoft
n PHP este potrivit pentru dezvoltare web i
poate fi inclus n codul HTML.
3
PHP introducere
n Sintaxa PHP este similar cu cea a
limbajului C.
n PHP este folosit adesea mpreun cu
serverul web Apache pe diferite sisteme
de operare.
n Poate fi folosit i cu IIS pe sisteme
Microsoft.
4
Introducere PHP
n Un fiier PHP poate conine text, taguri HTML
i scripturi. Scripturile PHP sunt executate pe
server.
n Trebuie cunoscut HTML, limbaje script
(browser side)
5
Ce este PHP?
n PHP = PHP: Hypertext Preprocessor
n PHP limbaj scripting server side, la fel ca
ASP
n PHP este executat pe server
n PHP suport multe baze de date (MySQL,
Informix, Oracle, Sybase, Solid, PostgreSQL,
Generic ODBC etc.)
n PHP este open source
n PHP se poate descrca i folosi gratis
6
Ce este un fiier PHP?
n Fiierul PHP conine text, tag-uri HTML i
scripturi
n Fiierele PHP sunt returnate browser-ului ca
fiiere ce conin doar cod HTML
n Au extensia ".php", ".php3 .php4, .php4
sau ".phtml"
7
Ce este MySQL?
n Server pentru baze de date
n Ideal att pentru aplicaii mici ct i pentru
cele foarte mari
n MySQL suport standardul SQL
n MySQL compilat pe o serie de platforme
n MySQL este gratis
8
Apache+PHP+MySQL
n PHP + MySQL sunt cross-platform (se poate
dezvolta pe Windows i se poate pune pe
sistem Linux)
n De ce PHP?
n PHP ruleaz pe diferite platforme (Windows,
Linux, Unix, etc.)
n PHP este compatibil cu aproape toate
serverele folosite (Apache, IIS, etc.)
n PHP este gratis www.php.net
9
Apache+PHP+MySQL
n PHP este simplu de nvat i ruleaz eficient
pe partea de server
n Cum se poate ncepe?
n Instalarea serverului web Apache pe o main
Windows sau Linux
n Instalarea PHP pe Windows sau Linux
n Instalare MySQL pe Windows sau Linux
machine
n XAMPP - WAMP
10
Sintaxa PHP
n Sintaxa PHP nu se poate vedea prin View
Source pentru ca codul PHP este
transformat pe server in HTML
n Codul PHP trebuie delimitat de <?php ... ?>
n Exemplu:
<html>
<body>
<?php echo "Hello World"; ?>
</body>
</html>
11
Sintaxa PHP
n Fiecare linie trebuie s se termine cu ;
n ; este separator de instruciuni
n Instruciuni pentru afiarea textului: echo,
print
n Comentarii n PHP
<html> <body>
<?php
//comentariu stil C++
/* comentariu
stil C */
# comentariu tip shell
?>
</body> </html>
12
Variabile PHP
n Variabilele se folosesc pentru a stoca
numere, stringuri, valori ntoarse din funcii
pentru a fi folosite ulterior
n Toate numele de variabile ncep cu $
n Exemplu: $var = valoare;
n PHP este un limbaj de programare slab
tipizat
13
Stringuri PHP
n Rolul string-urilor este de a gestiona textul
<?php
$txt="Hello World";
echo $txt;
?>
n Operatorul de concatenare
<?php
$txt1="Hello World";
$txt2="1234";
echo $txt1 . " " . $txt2;
?>
14
Stringuri PHP
Funcia strlen
<?php
echo strlen("Hello world!"); // 12
?>
Funcia strpos
<?php
echo strpos("Hello world!","world"); // 6
?>
15
Operatori PHP
n Operatori aritmetici: +, -, *, /, ++, --
n Atribuire: =, +=, -=, *=, /=, .=, %=
n Operatori relaionali: ==, !=, <, >, <=, >=
n Operatori logici: &&, ||, !
n
16
Instruciunea if...else
if (condiie)
cod ce se executa cnd condiia e true;
else
cod ce se executa cnd condiia e fals;
<html> <body>
<?php
$d=date("D");
if ($d=="Fri")
echo "Have a nice weekend!";
else echo "Have a nice day!";
?>
</body> </html>
17
Instruciunea elseif
<html> <body>
<?php
$d=date("D");
if ($d=="Fri")
echo "Have a nice weekend!";
elseif ($d=="Sun")
echo "Have a nice Sunday!";
else echo "Have a nice day!";
?>
</body> </html>
18
Instruciunea switch
switch (expr) {
case label1:
cod care se execut cnd expr = label1;
break;
case label2:
cod care se execut cnd expre = label2;
break;
default:
cod;
}
19
Instruciunea switch - exemplu
<html> <body>
<?php
switch ($x) {
case 1:
echo "Number 1"; break;
case 2:
echo "Number 2"; break;
case 3:
echo "Number 3"; break;
default:
echo "No number between 1 and 3";
}
?>
</body> </html>
20
Tablouri
n Fiecare element al unui tablou are un ID
n Tipuri de tablouri
n Numerice (ID numeric)
n Asociative (fiecare ID este asociat cu o
valoare)
n Multidimensionale
n Tablouri numerice:
n $names = array("Peter","Quagmire","Joe");
n ID-ul numeric este generat automat
21
Tablouri
ID-ul numeric generat manual
$names[0] = "Peter";
$names[1] = "Quagmire";
$names[2] = "Joe";
<?php
echo $names[1] . " and " . $names[2] . " are ".
$names[0] . "'s neighbors";
?>
22
Tablouri asociative
n Fiecare element este o pereche (cheie,
valoare)
n Exemplu
$ages = array("Peter"=>32,
"Quagmire"=>30,
"Joe"=>34);
<?php
echo "Peter is " . $ages['Peter'] . " years old.";
?>
23
Tabouri multidimensionale
n Fiecare element al tabloului poate fi un tablou
$families = array (
"Griffin"=>array ( "Peter", "Lois", "Megan),
"Quagmire"=>array ( "Glenn),
"Brown"=>array ( "Cleveland", "Loretta)
);
echo Este " . $families['Griffin'][2] . " membru al
familiei";
Dac este afiat...
24
Tablouri asociative
Array
(
[Griffin] => Array
(
[0] => Peter
[1] => Lois
[2] => Megan
)
[Quagmire] => Array
(
[0] => Glenn
)
[Brown] => Array
(
[0] => Cleveland
[1] => Loretta
[2] => Junior
)
) 25
Instruciuni repetitive
n while
n do while
n for
n for each
26
while
<html> <body>
<?php
$i=1;
while($i<=5) {
echo "The number is " . $i . "<br />";
$i++;
}
?>
</body> </html>
27
do - while
<html> <body>
<?php
$i=0;
do {
$i++;
echo "The number is " . $i . "<br />";
} while ($i<5);
?>
</body> </html>
28
for
<html> <body>
<?php
for ($i=1; $i<=5; $i++) {
echo "Hello World!<br />";
}
?>
</body> </html>
29
foreach
n Folosit pentru a itera peste tablouri
<html> <body>
<?php
$arr=array("one", "two", "three");
foreach ($arr as $value) {
echo "Value: " . $value . "<br />";
}
?>
</body> </html>
30
Funcii PHP
n PHP are foarte multe funcii (>700)
n Se pot crea funcii definite de utilizator
n Funcie = bloc de cod ce poate fi executat
oricnd
n Funcia ncepe cu "function()"
n Numele funciei trebuie s indice scopul ei
n Blocul funciei delimitat de {, }
31
Funcii PHP - exemplu
<html> <body>
<?php
function writeMyName()
{
echo "Kai Jim Refsnes";
}
echo "My name is <br>";
writeMyName();
?>
</body> </html>
32
Funcii PHP - parametri
<html> <body>
<?php
function writeMyName($fname)
{
echo $fname . " Oros.<br />";
}
echo "My name is ";
writeMyName(Horea");
?>
</body> </html>
33
Funcii PHP valori de return
<html> <body>
<?php
function add($x, $y)
{
$total = $x + $y;
return $total;
}
echo "1 + 16 = " . add(1,16);
?>
</body> </html>
34
Formulare PHP i datele de intrare
n Variabilele $_GET i $_POST sunt folosite
pentru a accesa datele din formulare
n Fiecare element dintr-un formular HTML va fi
disponibil n mod automat n scriptul PHP
n Exemplu de formular:
<html> <body>
<form action="welcome.php" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
</body> </html>
35
Formulare PHP i datele de intrare
welcome.php
<html> <body>
Welcome
<?php echo $_POST["name"]; ?>.
<br />
You are
<?php echo $_POST["age"]; ?>
years old.
</body> </html>
36
Validarea datelor de intrare
n Validarea se poate face pe client pentru a
reduce ncrcarea serverului
n Validarea se poate face i pe server
(recomandat dac se interacioneaz cu baze
de date)
n Recomandat ca postarea unui formular s se
face pe aceeai pagin.
n Dac formularul conine date eronate
utilizatorului i sunt prezentate erorile pe
aceeai pagin
37
PHP $_GET
n Variabila $_GET este folosit pentru a
culege datele de pe formulare care au
method = get
n Variabila $_GET este un tablou de perechi
(nume, valoare) trimise de metoda HTTP
GET
n Informaiile trimise cu GET sunt vizibile n
bara de adres a browser-ului (max. 100
caractere)
38
PHP $_GET
<form action="welcome.php" method="get">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
n bara de adres:
.../welcome.php?name=Horea&age=30
39
PHP $_GET
welcome.php
Welcome
<?php echo $_GET["name"]; ?>.
<br />
You are <?php echo $_GET["age"]; ?>
years old!
40
PHP $_GET
n Nu se folosete cnd se trimit parole
n Adresa cu valorile cmpurilor poate fi
adugat la Favorites sau Bookmarks
n Nu se folosete cnd se transmit mai mult de
100 de caractere
41
PHP $_REQUEST
n Conine valorile din:
n $_GET, $_POST i $_COOKIE
n Poate fi folosit pentru a obine valorile din
mai multe formulare (unele folosesc get altele
post)
42
PHP $_POST
n Folosit pentru a obine datele din formulare
trimise cu metoda post
n Este un tablou asociativ conine perechi
(nume, valoare)
n Exemplu:
<form action="welcome.php" method="post">
Enter your name: <input type="text" name="name" />
Enter your age: <input type="text" name="age" />
<input type="submit" />
</form>
43
PHP $_POST
n n bara de adres .../welcome.php
n n welcome.php
Welcome <?php echo $_POST["name"]; ?>.
<br />
You are <?php echo $_POST["age"]; ?>
years old!
44
PHP $_POST
n Datele nu sunt afiate n bara de adres
n Nu exist o limit asupra lungimii datelor
n Paginile nu pot fi incluse n Favorites sau
Bookmarks
45
PHP date()
n Funcie folosit pentru a obine data n diferite
moduri
n Sintaxa: date(format,timestamp)
n Timestamp (opional) = numrul de secunde
de la 1 Ianuarie 1970 la 00:00:00 GMT
n Timestamp (implicit) = data i ora curent
46
PHP date() exemplu 1
<?php
echo date("Y/m/d");
echo "<br />";
echo date("Y.m.d");
echo "<br />";
echo date("Y-m-d");
?>
47
PHP date() exemplu 2
mktime(hour,minute,second,month,day,year,is_dst)
<?php
$tomorrow =
mktime(0,0,0,date("m"),date("d")+1,date("Y"));
echo "Tomorrow is ". date("Y/m/d", $tomorrow);
?>
48
PHP include
n Funciile include() sau require() sunt folosite
pentru a include coninutul un fiier ntr-un
fiier php nainte de a fi procesat pe server
n include() genereaz un avertisment dar
scriptul continu
n require() genereaz eroare fatal i scriptul se
oprete
n Se folosesc pentru a crea funcii, antete,
subsoluri ce pot fi refolosite n mai multe
pagini
49
PHP include exemplu 1
<html> <body>
<?php include("header.php"); ?>
<h1>Welcome to my home page</h1>
<p>Some text</p>
</body> </html>
50
PHP include exemplu 2
n menu.php
<html> <body>
<a href=index.php">Home</a> |
<a href=about.php">About Us</a> |
<a href="contact.php">Contact Us</a>
51
PHP include exemplu 2 cont.
n index.php
<?php include("menu.php"); ?>
<h1>Welcome to my home page</h1>
<p>Some text</p>
</body> </html>
n La fel cu about.php i contact.php
52
PHP include exemplu 2 cont.
View source:
<html> <body>
<a href="default.php">Home</a> |
<a href="about.php">About Us</a> |
<a href="contact.php">Contact Us</a> <h1>Welcome to
my home page</h1> <p>Some text</p>
</body> </html>
Pentru a modifica meniul trebuie modificat un
singur fiier
53
PHP require() - exemplu
<html> <body>
<?php include("wrongFile.php");
echo "Hello World!"; ?>
</body> </html>
n Se genereaz un avertisment dar scriptul
continu
54
PHP require() - exemplu
<html> <body>
<?php require("wrongFile.php");
echo "Hello World!"; ?>
</body> </html>
n Se genereaz un mesaj de eroare i scriptul
se oprete
n Este recomandat a se folosi require()
55
PHP lucrul cu fiiere
n fopen() - deschide un fiier
<html> <body>
<?php
$file=fopen("welcome.txt","r");
?>
</body> </html>
56
PHP lucrul cu fiiere
n Moduri de deschidere:
n r read only
n r+ read/write
n w write only (dac exist l terge)
n w+ read/write (dac exist l terge)
n a append (se pstreaz coninutul)
n a+ read/append (se pstreaz coninutul)
n x creeaz fiier nou(dac exist return eroare)
n x+ read/write (dac exist return eroare)
57
PHP lucrul cu fiiere
n Dac fopen() nu poate deschide fiierul
atunci ntoarce valoare 0
<html> <body>
<?php
$file=fopen("welcome.txt","r") or
exit("Unable to open file!");
?>
</body> </html>
58
PHP lucrul cu fiiere
n fclose() nchide un fiier deschis
n Exemplu:
<?php
$file = fopen("test.txt","r");
//cod
fclose($file);
?>
59
PHP lucrul cu fiiere
n feof() verific dac s-a ajuns la sfritul
fiierului
if (feof($file)) echo "End of file";
n Obs. Nu se poate citi din fiier deschis n
modul w, a sau x
60
PHP lucrul cu fiiere
n Citirea unui fiier linie cu linie fgets()
<?php
$file = fopen("welcome.txt", "r") or
exit("Unable to open file!");
while(!feof($file)) {
echo fgets($file). "<br />";
}
fclose($file);
?>
61
PHP lucrul cu fiiere
n Citirea unui fiier caracter cu caracter
<?php
$file=fopen("welcome.txt","r") or
exit("Unable to open file!");
while (!feof($file)) {
echo fgetc($file);
}
fclose($file);
?>
62
PHP upload fiiere
n PHP permite ncrcarea fiierelor pe server
n Formular HTML pentru ncrcarea fiierelor:
<html> <body>
<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> <br />
<input type="submit" name="submit" value="Submit" />
</form></body> </html>
63
PHP upload fiiere
n enctype="multipart/form-data folosit atunci
cnd se transmit date binare (fiiere)
n Reprezint un mare risc de securitate
n Doar userii autorizai ar trebui s poat face
acest lucru
64
PHP upload fiiere
n upload_file.php
<?php if ($_FILES["file"]["error"] > 0) {
echo "Error: " . $_FILES["file"]["error"] . "<br />"; }
else {
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . "
Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"]; }
?>
65
PHP upload fiiere restricii
<?php if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"]
== "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) &&
($_FILES["file"]["size"] < 20000)) {
if ($_FILES["file"]["error"] > 0) {
echo "Error: " . $_FILES["file"]["error"] . "<br />"; }
else {
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
}
else { echo "Invalid file"; }?>
66
PHP upload salvarea fiierului
<?php if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") ||
($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) {
if ($_FILES["file"]["error"] > 0) {
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
} else {
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
if (file_exists("upload/" . $_FILES["file"]["name"])) {
echo $_FILES["file"]["name"] . " already exists. ";
} else {
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" .
$_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
} else { echo "Invalid file"; } ?>
67
PHP cookie
n Cookie sunt folosite pentru a identifica un
user
n Este un fiier mic pe care serverul l salveaz
pe calculatorul user-ului
n Cnd este cerut o pagin va fi trimis i
cookie-ul salvat anterior
n Cu PHP se pot crea i obine valorile cookie
68
PHP cookie
n Creare cu setcookie() trebuie s apar
naintea tag-ului <html>
n Sintaxa:
n setcookie(name, value, expire, path, domain);
<?php
setcookie("user", "Alex Porter", time()+3600);
?>
<html> <body>
</body> </html>
69
PHP cookie
n Obinerea unei valori cookie:
n Varibila PHP $_COOKIE
n Exemplu:
<?php
// Tiparirea unui cookie
echo $_COOKIE["user"];
// Vizualizarea tuturor cookie-urilor
print_r($_COOKIE);
?>
70
PHP cookie
n Pentru verifica dac un cookie a fost setat se
folosete funcia isset()
<html> <body>
<?php
if (isset($_COOKIE["user"]))
echo "Welcome " . $_COOKIE["user"] .!<br />";
else
echo "Welcome guest!<br />";
?>
</body> </html>
71
PHP cookie
n Stergerea unui cookie trebuie s ne
asigurm c data i ora la care expir este
anterioar datei i orei curente
<?php
// se stabilete data la o ora in urma
setcookie("user", "", time()-3600);
?>
72
PHP - sesiuni
n O variabil de sesiune PHP este folosit
pentru a stoca informaii sau a modifica setri
pentru o sesiune utilizator
n Variabilele sesiune stocheaz informaie
despre un singur utilizator i sunt disponibile
tuturor paginilor aplicaiei
n Dup prsirea website-ului variabilele
sesiune sunt terse
n Pentru stocarea permanent a informaiilor e
nevoie de o baz de date.
73
PHP - sesiuni
n Sesiunile funcioneaz prin crearea unui ID
unic (UID) pentru fiecare vizitator al aplicaiei
web
n Variabilele sunt stocate pe baza acestui UID
n UID-ul este salvat ntr-un cookie sau este
propagat prin URL
74
PHP - sesiuni
n Pornirea unei sesiuni PHP
<?php
session_start();
?>
<html> <body>
</body> </html>
n Sesiunea utilizator este nregistrat la server
n Permite nceperea salvrii informaiilor
n Atribuie UID pentru sesiunea utilizatorului
75
PHP - sesiuni
n Stocarea unei variabile de sesiune
<?php
session_start();
$_SESSION['views']=1; // stocarea datelor de sesiune
?>
<html> <body>
<?php
//obtinerea datelor de sesiune
echo "Page views=". $_SESSION['views']; ?>
</body> </html>
76
PHP - sesiuni
n Contor de vizionri ale paginii
<?php
session_start();
if(isset($_SESSION['views']))
$_SESSION['views']=
$_SESSION['views']+1;
else
$_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
?>
77
PHP - sesiuni
n Distrugerea unei sesiuni: unset() sau
session_destroy()
n Eliberarea unei variabile de sesiune
<?php
unset($_SESSION['views']);
?>
n Distrugerea complet a sesiunii
<?php
session_destroy();
?>
78
PHP - email
n Se pot trimite email-uri direct dintr-un script
cu funcia mail()
n Sintaxa:
n mail(to,subject,message,headers,parameters)
n Pentru ca s funcioneze e nevoie de un
sistem de email instalat
79
PHP - email
<?php
$to = "someone@example.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "someonelse@example.com";
$headers = "From: $from";
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>
80
PHP formular email
<html> <body>
<?php
if (isset($_REQUEST['email'])) //daca "email este completat, trimite email
{ //send email
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail( "someone@example.com", "Subject: $subject", $message, "From: $email" );
echo "Thank you for using our mail form";
} else //daca "email" nu este completat afiseaza formularul
{ echo "<form method='post' action='mailform.php'>
Email: <input name='email' type='text' /><br />
Subject: <input name='subject' type='text' /><br />
Message:<br />
<textarea name='message' rows='15' cols='40'> </textarea><br />
<input type='submit' /> </form>";
}
?></body> </html>
81
PHP email securizat
n Injectare de email n cmpul email
someone@example.com%0A
Cc:person2@example.com %0A
Bcc:person3@example.com,
person3@example.com,
anotherperson4@example.com,
person5@example.com%0AB
To:person6@example.com
n Email-ul va ajunge i la alte adrese
82
PHP email securizat
n Pentru a stopa email injection trebuie validate
informaiile introduse de user
<html> <body>
<?php
function spamcheck($field)
{ //filter_var() sanitizes the e-mail
//address using FILTER_SANITIZE_EMAIL
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
//filter_var() validates the e-mail
//address using FILTER_VALIDATE_EMAIL
if(filter_var($field, FILTER_VALIDATE_EMAIL)) {
return TRUE;
} else { return FALSE; }
}
if (isset($_REQUEST['email']))...............
83
PHP tratarea erorilor
n Manipulatorul de erori implicit din PHP este
foarte simplu
n Mesajul de eroare conine:
n Numele fiierului
n Numrul liniei
n Mesaj afiat de browser
n Funcia die()
n Erori particularizate - Triggere de erori
n Raportarea erorilor
84
PHP tratarea erorilor
<?php $file=fopen("welcome.txt","r"); ?>
n Dac fiierul nu exist:
Warning: fopen(welcome.txt) [function.fopen]:
failed to open stream: No such file or
directory in C:\wamp\www\eroare.php on
line 1
85
PHP tratarea erorilor
n Varianta mai bun scriptul se va opri cu un
mesaj mai clar
<?php
if(!file_exists("welcome.txt"))
{
die("File not found");
} else
{
$file=fopen("welcome.txt","r");
}
?>
86
PHP tratarea erorilor
n Crearea unui manipulator de erori
particularizat
n O funcie care este apelat cnd are loc o
eroare
n Sintaxa:
error_function(error_level,error_message,
error_file,error_line,error_context)
n Primii 2 parametri obligatorii
n Ultimii 3 opionali
87
PHP tratarea erorilor- error_level
Valoare Constant Descriere
2 E_WARNING Eroare runtime ne-fatal,
execuia scriptului nu este oprit
8 E_NOTICE Scriptul a gsit ceva ce ar putea
fi eroare dar poate se poate
ntmpla i la rularea normal a
scripului
256 E_USER_ERROR Eroare fatal generat de user.
512 E_USER_WARNING Avertisment ne-fatal generat de
user
1024 E_USER_NOTICE ...
4096 E_RECOVERABLE_ERROR ...
8191 E_ALL Toate erorile i avertismentele
88
PHP tratarea erorilor
n Funcie pentru tratarea erorilor:
function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno]
$errstr<br />";
echo "Ending Script";
die();
}
89
PHP tratarea erorilor
n n mod implicit se folosete manipulatorul de
erori inclus n PHP
n Stabilirea manipulatorului de erori definit de
user:
set_error_handler("customError");
n Funcia accept i al doilea argument
(error_level) care indic tipul erorilor ce vor fi
tratate
n n cazul acesta vor fi trate toate erorile
90
PHP tratarea erorilor
n Exemplu:
<?php
function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr";
}
set_error_handler("customError");
echo($test); // va fi apleta functia
//Custom error: [8] Undefined variable: test
?>
91
PHP tratarea erorilor
n Erorile pot fi lansate cu funcia trigger_error()
n Exemplu:
<?php
$test=2;
if ($test>1)
{
trigger_error("Value must be 1 or below");
}
?>
92
PHP tratarea erorilor
<?php
function customError($errno, $errstr) {
echo "<b>Error:</b> [$errno] $errstr<br />";
echo "Ending Script"; die();
set_error_handler("customError",E_USER_WARNING);
$test=2;
if ($test>1) {
trigger_error("Value must be 1 or
below",E_USER_WARNING);
}
?>
93
PHP tratarea erorilor
n Jurnalizarea erorilor
n Erorile sunt trimise la sistemul de jurnalizare
(log) al serverului sau la un fiier (n funcie
de cum este configurat)
n Funcia error_log() poate fi folosit pentru a
trimite mesajele de eroare ntr-un fiier sau
pe server
n Erorile pot fi trimise i prin email
94
PHP tratarea erorilor
<?php
function customError($errno, $errstr) {
echo "<b>Error:</b> [$errno] $errstr<br />";
echo "Webmaster has been notified";
error_log("Error: [$errno] $errstr",1, "someone@example.com",
"From: webmaster@example.com");
}
set_error_handler("customError",E_USER_WARNING);
$test=2;
if ($test>1) {
trigger_error("Value must be 1 or below", E_USER_WARNING);
}
?>
95
PHP excepii
n Excepiile sunt folosite pentru a schimba
controlul execuiei scriptului atunci cnd are
loc o eroare
n PHP 5 introduce mecanismul excepiilor
pentru gestionarea erorilor
n Mecanismul excepiilor modalitate orientat
obiect
96
PHP excepii
n Ce se ntmpl cnd are loc o excepie?
n Starea curent a codului este salvat
n Execuia codului va trece la un funcie
manipulator de excepii predefinit (sau
definit de programator)
n Execuia poate continua la starea salvat,
execuia se poate ncheia sau poate continua
dintr-un alt loc
97
PHP excepii
n Utilizare elementar a excepiilor
n Cnd este lansat o excepie codul ce
urmeaz n bloc nu mai este executat i se
sare la blocul catch corespunztor
n Dac nu exist bloc catch corespunztor va fi
lansat o eroare fatal cu mesajul: "Uncaught
Exception
98
PHP excepii
<?php // exceptie lansata si neprinsa
function checkNum($number)
{
if($number>1) {
throw
new Exception(Valoare trebuie sa fie mai mica");
}
return true;
}
checkNum(2);
?>
99
PHP excepii
n try, throw i catch
n n blocul try se pune codul care poate lansa
excepii
n throw se folosete pentru a lansa excepia
n Blocul catch este locul unde se intercepteaz
excepia
100
PHP excepii
<?php
function checkNum($number) {
if($number>1) {
throw new Exception("Valoare trebuie sa fie mai mica ");
}
return true;
}
try {
checkNum(2);
echo Numarul e OK';
}
catch(Exception $e) {
echo 'Message: ' .$e->getMessage();
}
?>
101
PHP excepii
n Stabilirea unui manipulator de excepii la
nivelul cel mai de sus
<?php
function myException($exception) {
echo "<b>Exception:</b> " ,
$exception->getMessage();
}
set_exception_handler('myException');
throw
new Exception('Uncaught Exception occurred');
?>
102
PHP - filtrare
n Filtrele PHP sunt folosite pentru a valida
datele care vin din surse nesigure, de ex.
date introduse de user
n Testarea, filtrarea i validarea datelor
utilizator reprezint o parte important a
oricrei aplicaii web
n Orice aplicaie web se bazeaz pe date
introduse de user aa c e important s ne
asigurm c aplicaiile primesc date corecte
103
PHP - filtrare
n Filtrarea datelor de intrare reprezint una din
cele mai importante probleme de securitate a
aplicaiilor
n Date externe:
n Date introduse n formulare
n Cookie
n Date de la webservice-uri
n Variabile server
n Rezultate ale interogrilor bazelor de date
104
PHP - filtrare
n Funcii pentru filtrare:
n filter_var() filtreaz o singur variabil cu un
filtru specificat
n filter_var_array() filtreaz mai multe variabile
cu acelai filtru sau cu filtre diferite
n filter_input obine o variabil de intrare i o
filtreaz
n filter_input_array obine mai multe variabile
de intrare i le filtreaz cu acelai filtru sau cu
filtre diferite
105
PHP - filtrare
<?php
$int = 123;
if(!filter_var($int, FILTER_VALIDATE_INT)) {
echo("Integer is not valid");
}
else {
echo("Integer is valid");
}
?>
106
PHP - filtrare
n Exist dou tipuri de filtre:
n Filtre de validare
n Folosite pentru a validate datele introduse
n Reguli de formare stricte (URL, email, IP)
n Return tipul sau false (la eec)
n Filtre de curare (sanitizing)
n Permit sau interzic anumite caractere n stringuri
n Nu sunt reguli pentru formatul datelor
n ntotdeauna ntorc string-uri
107
PHP - filtrare
n Opiuni i indicatori (flag)
n mai multe opiuni filtrelor
<?php
$var=300;
$int_options = array( "options"=>array ( "min_range"=>0,
"max_range"=>256 ) );
if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)) { echo("Integer
is not valid");
}
else {
echo("Integer is valid");
}
?>
108
PHP - filtrare
n Validare datelor de intrare
<?php
if(!filter_has_var(INPUT_GET, "email")) {
echo("Input type does not exist");
} else {
if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) {
echo "E-Mail is not valid";
}else { echo "E-Mail is valid"; }
}
?>
109
PHP - filtrare
n Curarea datelor de intrare
<?php
if(!filter_has_var(INPUT_POST, "url")) {
echo("Input type does not exist");
} else {
$url = filter_input(INPUT_POST, "url", FILTER_SANITIZE_URL);
}
?>
110
1
Dezvoltarea aplicaiilor web
Curs PHP Quiz
PHP Quiz
1. Ce nseamn PHP?
a. Personal Home Page
b. Private Home Page
c. Personal Hypertext Processor
d. PHP: Hypertext Preprocessor
2
PHP Quiz
2. Care sunt delimitatorii pentru scripturile
PHP?
a. <?php?>
b. <?php>...</?>
c. <&>...</&>
d. <script>...</script>
3
PHP Quiz
3. Cum scriei Hello World n PHP?
a. echo "Hello World";
b. "Hello World";
c. Document.Write("Hello World");
4
PHP Quiz
4. Care este simbolul cu care ncep numele
tuturor variabilelor PHP?
a. &
b. $
c. !
5
PHP Quiz
5. Cum se termin o instruciune PHP?
a. </php>
b. Linie nou
c. ;
d. .
6
PHP Quiz
6. Sintaxa PHP seamn cel mai mult cu:
a. JavaScript
b. VBScript
c. Perl i C
7
PHP Quiz
7. Cum se obin informaiile dintr-un formular
transmis cu metoda GET?
a. Request.Form;
b. Request.QueryString;
c. $_GET[];
8
PHP Quiz
8. Cnd se folosete POST datele sunt afiate
n bara de adrese a browserului?
a. Da
b. Nu
9
PHP Quiz
9. n PHP se pot folosi att ct i pentru a
delimita string-uri
a. Da
b. Nu
10
PHP Quiz
10. Fiierele incluse trebuie s aib extensia .inc
a. Da
b. Nu
11
PHP Quiz
11. Cum se include fiierul time.inc?
a. <% include file="time.inc" %>
b. <?php include_file("time.inc"); ?>
c. <!--include file="time.inc"-->
d. <?php require("time.inc"); ?>
12
PHP Quiz
12. Cum se creeaz o funcie n PHP?
a. create myFunction()
b. new_function myFunction()
c. function myFunction()
13
PHP Quiz
13. Cum se deschid pentru citire fiierul
time.txt?
a. fopen("time.txt","r");
b. open("time.txt");
c. fopen("time.txt","r+");
d. open("time.txt","read");
14
PHP Quiz
14. PHP permite trimiterea de email-uri direct
din scripturi?
a. Da
b. Nu
15
PHP Quiz
15. Cum se realizeaz conexiunea la o baz de
date MySQL?
a. connect_mysql("localhost");
b. dbopen("localhost");
c. mysql_connect("localhost");
d. mysql_open("localhost");
16
PHP Quiz
16. Cum se poate aduna 1 la valoarea variabilei
$count?
a. ++count
b. count++;
c. $count =+1
d. $count++;
17
PHP Quiz
17. Cum se adaug un comentariu n PHP?
a. *\..\*
b. <!---->
c. <comment></comment>
d. /**/
18
PHP Quiz
18. PHP poate rula pe IIS de la MS?
a. Da
b. Nu
19
PHP Quiz
19. n PHP 5 suportul pentru MySQL este
activat n mod implicit
a. Da
b. Nu
20
PHP Quiz
20. Care nume de variabil nu este valid?
a. $my-Var
b. $my_Var
c. $myVar
21
1
Dezvoltarea aplicaiilor web
Curs PHP-MySQL
Aplicaii web
n Browser Scripting
n JavaScript, HTML DOM, DHTML, VBScript, AJAX
n Server Scripting
n SQL, ASP, PHP, ADO
2
PHP-MySQL
n MySQL este cel mai popular sistem de baze
de date open-source
n Ce conine o baz de date?
n Tabele (formate din nregistrri-linii);
Tabela Persons
3
LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Kari Storgt 20 Stavanger
PHP-MySQL
n Interogri ntrebri pe care le adresm
bazei de date
n SELECT LastName FROM Persons
n Interogarea va returna un recordset
n www.mysql.com
4
PHP-MySQL - conectare
n nainte de a putea folosi baza de date trebuie
s ne conectm la ea cu funcia
mysql_connect()
n Sintaxa:
n mysql_connect(servername,username,password);
5
Parametru Descriere
servername Opional. Serverul la care se conecteaz
Implicit "localhost:3306"
username Opional. Username cu care se face logarea. Implicit este
numele userului care deine procesul server (root)
password Opional. Parola folosit pentru logare. Implicit este ""
PHP-MySQL - conectare
n Exemplu:
<?php
$con =
mysql_connect("localhost","peter","abc123");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
?>
6
PHP-MySQL - deconectare
n La terminarea scriptului conexiunea este
nchis. Explicit se face cu mysql_close()
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
// cod
mysql_close($con);
?>
7
PHP-MySQL creare baze de date
i tabele
n CREATE DATABASE database_name
n Pentru a executa comanda de mai sus
trebuie s folosim funcia mysql_query()
n mysql_query() folosit pentru a trimite o
comand sau o interogare la o conexiune
MySQL
8
PHP-MySQL creare baze de date
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
if (mysql_query("CREATE DATABASE my_db",$con)) {
echo "Database created";
} else {
echo "Error creating database: " . mysql_error();
}
mysql_close($con);
?>
9
PHP-MySQL creare tabele
n CREATE TABLE comanda pentru crearea de
tabele
n Sintaxa:
CREATE TABLE table_name
( column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
....... )
10
PHP-MySQL creare tabele
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con) { die('Could not connect: ' . mysql_error()); }
if (mysql_query("CREATE DATABASE my_db",$con)) { echo "Database created"; }
else { echo "Error creating database: " . mysql_error(); }
mysql_select_db("my_db", $con); //prima data trebuie selectata BD
$sql =
"CREATE TABLE persoana( prenume varchar(15), nume varchar(15), varsta int )";
mysql_query($sql,$con);
mysql_close($con);
?>
11
PHP-MySQL tipuri de date
Tipuri de date
numerice
Descriere
int(size)
smallint(size)
tinyint(size)
mediumint(size)
bigint(size)
Stocheaz ntregi.
Numrul maxim de cifre poate fi specificat
ca parametru
decimal(size,d)
double(size,d)
float(size,d)
Stocheaz numere reale.
Numrul maxim de cifre de la partea
ntreag i de la partea zecimal pot fi
specificate ca parametri.
12
PHP-MySQL tipuri de date
13
Tipuri de date
textuale
Descriere
char(size) Pstreaz un string de lungime fix (poate conine litere,
cifre i caractere speciale). Dimensiunea fix este
specificat n paranteze
varchar(size) Pstreaz un string de lungime variabil (poate conine
litere, cifre i caractere speciale). Dimensiunea maxim
este specificat n paranteze
tinytext Pstreaz un string cu lungimea maxim 255 caractere
text
blob
Pstreaz un string cu lungimea maxim 65535 caractere
mediumtext
mediumblob
Pstreaz un string cu lungimea maxim 16777215
caractere
longtext
longblob
Pstreaz un string cu lungimea maxim 4294967295
caractere
PHP-MySQL tipuri de date
Tipuri de date pentru date Descriere
date(yyyy-mm-dd)
datetime(yyyy-mm-dd hh:mm:ss)
timestamp(yyyymmddhhmmss)
time(hh:mm:ss)
Pstreaz data i/sau ora
14
Tipuri de date Descriere
enum(value1,value2 etc) ENUM prescurtare la ENUMERATED list.
Poate stoca 65535 valori enumerate ntre ( ).
Dac se introduce o valoare care nu e n list
atunci se va insera cu un blank
set SET similar cu ENUM. SET poate avea maxim
64 de elemente n list i poate stoca mai mult
de o variant
PHP-MySQL chei primare
n Orice tabel trebuie s aib o cheie primar
folosit pentru indexare, identificare unic a
nregistrrilor i pentru stabilirea relaiilor ntre
tabele
n Valoarile dintr-un cmp care e cheie primar
nu pot fi null
n ntotdeauna cheia primar este cmp indexat
n Indexarea duce la gsirea mai rapid a
nregistrrilor pe baza valorii chei
15
PHP-MySQL chei primare
$sql =
"CREATE TABLE persoana (
personID int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(personID),
prenume varchar(15),
nume varchar(15),
varsta int )";
mysql_query($sql, $con);
16
PHP-MySQL INSERT INTO
n INSERT INTO introduce noi nregistrri n
tabele
n Sintaxa:
n INSERT INTO table_name VALUES (value1,
value2,....)
n Nu se face distincie ntre litere mari i mici
n Pentru a executa comanda se folosete
funcia PHP mysql_query()
17
PHP-MySQL INSERT INTO
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
mysql_query("INSERT INTO persoana (prenume, nume, varsta)
VALUES ('Peter', 'Griffin', '35')");
mysql_query("INSERT INTO persoana (prenume, nume, varsta)
VALUES ('Glenn', 'Quagmire', '33')");
mysql_close($con);
?>
18
PHP-MySQL INSERT INTO
n Inserarea datelor dintr-un formular n baza de
date
n Formularul:
<html> <body>
<form action="insert.php" method="post">
Prenume: <input type="text" name=prenume" />
Nume: <input type="text" name=nume" />
Vrsta: <input type="text" name=varsta" />
<input type="submit" />
</form>
</body> </html>
19
PHP-MySQL INSERT INTO
n insert.php
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$sql="INSERT INTO persoana (prenume, nume, varsta) VALUES
('$_POST[prenume]', '$_POST[nume], '$_POST[varsta]')";
if (!mysql_query($sql,$con)) {
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?>
20
PHP-MySQL SELECT
n Comanda SELECT se folosete pentru a
interoga bazele de date
n Sintaxa:
n SELECT column_name(s) FROM table_name
n Pentru a executa comanda se folosete
funcia PHP mysql_query()
21
PHP-MySQL SELECT
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT * FROM persoana");
while($row = mysql_fetch_array($result)) {
echo $row[prenume'] . " " . $row[nume'];
echo "<br />";
}
mysql_close($con);
?>
22
PHP-MySQL SELECT
<?php $con = mysql_connect("localhost","peter","abc123");
if (!$con) { die('Could not connect: ' . mysql_error()); }
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT * FROM persoana");
//afisarea rezultatelor ntr-un tabel
echo " <table border='1'> <tr> <th>Prenume</th> <th>Nume</th> </tr>";
while($row = mysql_fetch_array($result)) {
echo "<tr>"; echo "<td>" . $row[prenume'] . "</td>";
echo "<td>" . $row[nume'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?>
23
PHP-MySQL clauza WHERE
n Se folosete pentru a filtra datele ntoarse de
SELECT dup anumite criterii
n Sintaxa:
SELECT column FROM table
WHERE column operator value
n Operatori: =, !=, <, >, <=, >=, BETWEEN,
LIKE
24
PHP-MySQL clauza WHERE
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con) { die('Could not connect: ' . mysql_error()); }
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT * FROM persoana
WHERE prenume='Peter'");
while($row = mysql_fetch_array($result)) {
echo $row[prenume'] . " " . $row[nume'];
echo "<br />";
}
?>
25
PHP-MySQL clauza ORDER BY
n Se folosete pentru a sorta datele ntoarse de
SELECT
n Sintaxa:
SELECT column_name(s) FROM table_name
ORDER BY column_name
26
PHP-MySQL clauza ORDER BY
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con) { die('Could not connect: ' . mysql_error()); }
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT * FROM persoana ORDER BY varsta");
while($row = mysql_fetch_array($result)) {
echo $row[prenume'];
echo " " . $row[nume'];
echo " " . $row[vartsa'];
echo "<br />";
}
mysql_close($con);
?>
27
PHP-MySQL clauza ORDER BY
n Sortare cresctoare sau descresctoare
n SELECT column_name(s) FROM table_name
ORDER BY column_name DESC
n Sortare dup mai multe criterii
n SELECT column_name(s) FROM table_name
ORDER BY column_name1, column_name2
28
PHP-MySQL UPDATE
n Folosit pentru a modifica datele din tabele
n Sintaxa:
n UPDATE table_name SET column_name =
new_value WHERE column_name =
some_value
n Pentru a executa comanda se folosete
funcia PHP mysql_query()
29
PHP-MySQL UPDATE
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con) { die('Could not connect: ' . mysql_error()); }
mysql_select_db("my_db", $con);
mysql_query("UPDATE persoana SET varsta = '36'
WHERE prenume= 'Peter' AND nume = 'Griffin'");
mysql_close($con);
?>
30
PHP-MySQL DELETE FROM
n Folosit pentru a terge nregistrri din tabele
n Sintaxa:
n DELETE FROM table_name WHERE
column_name = some_value
n Pentru a executa comanda se folosete
funcia PHP mysql_query()
31
PHP-MySQL DELETE FROM
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con) { die('Could not connect: ' . mysql_error()); }
mysql_select_db("my_db", $con);
mysql_query("DELETE FROM persoana
WHERE nume='Griffin'");
mysql_close($con);
?>
32
PHP - ODBC
n ODBC este un API care permite conexiunea
la o surs de date (de ex. MS Access)
n Crearea conexiunii ODBC:
1. Administrative Tools n Control Panel.
2. Double-click Data Sources (ODBC).
3. Se alege System DSN.
4. Click pe Add n System DSN.
5. Select Microsoft Access Driver. Click Finish.
6. Pe ecranul urmtor, click Select pentru a localiza baza de date.
7. Baza de date primete un Data Source Name (DSN).
8. Click OK.
n Setrile trebuie fcute pe calculatorul pe
care este aplicaia
33
PHP - ODBC
n Funcia odbc_connect() se folosete pentru
conexiunea la o surs de date ODBC
n Funcia odbc_exec() se folosete pentru a
executa o comand SQL
$conn=odbc_connect('northwind','','');
$sql="SELECT * FROM customers";
$rs=odbc_exec($conn,$sql);
34
PHP - ODBC
n Funcia odbc_fetch_row() folosit pentru a
obine o nregistrare
n odbc_fetch_row($rs)
n Funcia odbc_result() folosit pentru a obine
cmpurile dintr-o ntregistrare
$cname=odbc_result($rs,1);
$cname=odbc_result($rs,"CompanyName");
n odbc_close($conn); // nchide conexiunea
35
PHP ODBC exemplu complet
<html> <body>
<?php $conn=
odbc_connect('northwind','','');
if (!$conn) {
exit("Connection Failed: " . $conn);
}
$sql="SELECT * FROM
customers";
$rs=odbc_exec($conn,$sql);
if (!$rs) {exit("Error in SQL");}
echo "<table><tr>";
echo "<th>Companyname</th>";
echo "<th>Contactname</th></tr>";
while (odbc_fetch_row($rs)) {
$compname=
odbc_result($rs,"CompanyName");
$conname=
odbc_result($rs,"ContactName");
echo "<tr><td>$compname</td>";
echo "<td>$conname</td></tr>";
}
odbc_close($conn);
echo "</table>";
?>
</body> </html>
36
1
Dezvoltarea aplicaiilor web
Curs AJAX
Aplicaii web
n Browser Scripting
n JavaScript, HTML DOM, DHTML, VBScript, AJAX
n Server Scripting
n SQL, ASP, PHP, ADO
2
AJ AX
n AJAX Asynchronous JavaScript And XML
n AJAX tip de programare popularizat de
Google n 2005 cu Google Suggest
n AJAX nu este un nou limbaj de
programare ci o nou modalitate de a
folosi standarde existente
n AJAX permite crearea de aplicaii web mai
rapide, mai bune i mai prietenoase
3
AJ AX
n Cerine: HTML/XHTML, JavaScript
n JavaScript-ul comunic direct cu serverul,
folosind obiectul XMLHttpRequest. Folosind
acest obiect JavaScript poate schimba date
cu serverul fr a rencrca pagina
n AJAX folosete transfer asincron de date
ntre browser i web server permind
paginilor s cear secvene mici de informaie
de la server n loc de pagini ntregi
4
AJ AX
n Aplicaiile web for fi mai mici, mai rapide i
mai prietenoase
n AJAX este o tehnologie browser
independent de softul de pe webserver
n AJAX este bazat pe:
n JavaScript
n XML
n HTML
n CSS
5
AJ AX
n Standardele pe care se bazeaz sunt bine
definite, suportate de majoritatea browserelor
n Aplicaiile AJAX sunt independente de
browser i platform
n Avantaje ale aplicaiilor web fa de cele
desktop:
n Mai muli utilizatori
n Mai uor de instalat i actualizat
n Mai uor de dezvoltat
6
AJ AX
n Dezavantaje ale aplicaiilor web fa de cele
desktop:
n Interfaa nu e la fel de complex i
prietenoas
n Cu AJAX interfaa poate fi mai bogat i mai
prietenoas
n Pentru a folosi AJAX nu trebuie nvat nimic
nou se bazeaz pe standarde existente
7
AJ AX
n Tradiional n JavaScript dac vrem s lum
informaii din baze de date sau din fiiere de
pe server avem nevoie de
n formulare HTML
n metodele GET sau POST.
n se apas butonul Submit,
n se ateapt s rspund serverul,
n se ncarc o nou pagin
8
AJ AX
n Datorit interaciunii cu serverul aplicaiile
web tipice ruleaz lent
n Cu AJAX JavaScript-ul comunic direct cu
serverul prin intermediul obiectului
XMLHttpRequest
n Cu HTTP Request pagina web poate cere
date de la server n fundal fr a rencrca
pagina i fr ca userul s observe aceasta
9
AJ AX
n XMLHttpRequest permite actualizarea paginii
web cu date de pe server dup ce pagina s-a
ncrcat
n Google suggest funcioneaz dup acest
principiu se ncepe tastarea cuvntului i
Google sugereaz o list de termeni de
cutare
n XMLHttpRequest n Internet Explorer 5.0+,
Safari 1.2, Mozilla 1.0 / Firefox, Opera 8+,
and Netscape 7.
10
AJ AX
n username completata de user
n time completat de AJAX
<html> <body>
<form name="myForm">
Name: <input type="text" name="username" />
Time: <input type="text" name="time" />
</form></body>
</html>
11
AJ AX
n Crearea obiectului XMLHttpRequest
n IE folosete ActiveXObject
n Alte browsere XMLHttpRequest
12
AJ AX crearea obiectului
HttpRequest
<script type="text/javascript">
function ajaxFunction() {
var xmlHttp;
try {
xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
} catch (e) {
try {// Internet Explorer 6.0+
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try { // IE 5.5+
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("Your browser does not support AJAX!");
return false;
}
}
}
}
</script>
13
AJ AX obiectul HttpRequest
n Proprieti
n onreadystatechange stocheaz funcia care
va primi i va procesa rspunsul de la server
xmlHttp.onreadystatechange=function()
{
// cod
}
n readyState pstreaz starea rspunsului de
la server; de fiecare dat cnd se schimb se
execut funcia onreadystatechange
14
AJ AX obiectul HttpRequest
Stare Descriere
0 Request neiniializat
1 Request setat
2 Request trimis
3 Request-ul este procesat
4 Request finalizat
15
Valorile posibile pentru readyState
AJ AX
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
// Scoate datele din raspunsul serverului
}
}
16
AJ AX
n Proprieti
n responseText conine datele trimise de server
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4) {
document.myForm.time.value =
xmlHttp.responseText;
}
}
17
AJ AX - Transmiterea request-ului la server
n Se folosesc funciile open() i send()
n Exemplu:
xmlHttp.open("GET","time.php",true);
xmlHttp.send(null);
n Arg 1: metoda get sau post
n Arg 2: url-ul scriptului de pe server
n Arg 3: request gestionat asincron
18
AJ AX cnd se execut funcia
<form name="myForm">
Name:
<input type="text
onkeyup= "ajaxFunction();"
name="username" />
Time: <input type="text" name="time" />
</form>
testAJAX.htm
19
AJ AX scriptul de pe server
n time.php
<?php
echo(date("G:i:s"));
?>
20
AJ AX exemplu Suggest
n Vom demonstra cum poate comunica o
pagin web cu un server pe msur ce user-
ul introduce introduce date ntr-un formular
n http://localhost/ajax/suggest.htm
21
AJ AX exemplu Suggest
<form>
First Name: <input type="text" id="txt1"
onkeyup="showHint(this.value)">
</form>
<p>Suggestions:
<span id="txtHint"></span>
</p>
22
AJ AX exemplu Suggest
function showHint(str) {
if (str.length==0) {
document.getElementById("txtHint").innerHTML=""; return;
}
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null) {
alert ("Your browser does not support AJAX!");
return;
}
var url="gethint.php";
url=url+"?q="+str; url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
23
AJ AX exemplu Suggest
function GetXmlHttpObject() {
var xmlHttp=null;
try { // Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
} catch (e) { // Internet Explorer
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
24
AJ AX exemplu Suggest
function stateChanged() {
if (xmlHttp.readyState==4) {
document.getElementById("txtHint").innerHTML =
xmlHttp.responseText;
}
}
n Se execut de fiecare dat cnd starea obiectului
XMLHTTP se schimb.
n Cnd starea devine 4 ("complete"), conintul lui
txtHint este completat cu textul primit ca rspuns.
25
AJ AX exemplu Suggest
n Pe server ruleaz gethint.php
n AJAX poate fi folosit pentru:
n A interaciona cu baze de date
n A comunica n mod interactiv cu fiiere XML
26

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