0 evaluări0% au considerat acest document util (0 voturi)
8 vizualizări193 pagini
mitica are mere There are many systems development methodologies, and each of them is unique in terms of the order and the importance of each phase of the development cycle. Some are formal standards methodologies used by governmental agencies, while others have been developed by consultancy firms to be sold to customers. Many organizations have their national methodologies that have been refined over the years
mitica are mere There are many systems development methodologies, and each of them is unique in terms of the order and the importance of each phase of the development cycle. Some are formal standards methodologies used by governmental agencies, while others have been developed by consultancy firms to be sold to customers. Many organizations have their national methodologies that have been refined over the years
mitica are mere There are many systems development methodologies, and each of them is unique in terms of the order and the importance of each phase of the development cycle. Some are formal standards methodologies used by governmental agencies, while others have been developed by consultancy firms to be sold to customers. Many organizations have their national methodologies that have been refined over the years
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