Basi di Dati e Sistemi Informativi

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

CORSO DI SICUREZZA SU RETI II PROF. A. DE SANTIS ANNO 2006/07 Informatica granata Gruppo 2 ISP Gruppo 3 ISP.
DBMS (DataBase Management System)
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
PHP.
Utilizzare PHP 5 Corso Interazione Uomo – Macchina AA 2005/2006.
INTERNET : ARPA sviluppa ARPANET (rete di computer per scopi militari)
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
Le gerarchie di tipi.
Mantenimento dello stato Laboratorio Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Connessione con MySQL.
Java2 Esercitazioni del corso di Sistemi Informativi Marina Mongiello
Database nel Web Modulo Didattico: Francesca Platania
Università La Sapienza Web programming e programmazione multimediale 1 Web Programming e comunicazione multimediale Lezione 10: PHP.
JavaScript Laboratorio di Applicazioni Informatiche II mod. A.
1 Basi di dati e Web Prof. Stefano Paraboschi Prof. Barbara Pernici.
OO.1 Marco Ronchetti - Java Sql package.
UNIVERSITÀ DI PERUGIA DIPARTIMENTO DI MATEMATICA E INFORMATICA Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Esercitazione 6 MySQL Laboratorio di Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Corso di Informatica A.A
PHP – Un’introduzione Linguaggi e Traduttori 2003 Facoltà di Economia
Gruppo ISP1 Commessa tuttipunti.org. Sommario Descrizione commessa Organizzazione del lavoro Lavoro svolto Problematiche di sicurezza Impostazioni di.
PHP PHP Hypertext Preprocessor
PHP PHP Hypertext Preprocessor
APPLICAZIONI WEB In questo corso impareremo a scrivere un'applicazione web (WA) Marco Barbato - Corso di Applicazioni Web – A.A
Daniel Stoilov Tesi di Laurea
Elaborazione di Franco Grivet Chin
Corso di PHP.
Ing. Enrico Lecchini BetaTre S.r.l.
Analisi (Analista) Progettazione (Progettista) Sviluppo o Traduzione (Sviluppatore) Documentazione.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Maria Vittoria Avolio Laurea.
Introduzione alle ASP: primi passi negli script. Frosini Andrea Università degli studi di Siena Dipartimento di Scienze Matematiche.
Basi di Dati e Sistemi Informativi
Sistemi Informativi sul Web
Basi di Dati e Sistemi Informativi SQL per Applicazioni Home page del corso:
Il World Wide Web Lidea innovativa del WWW è che esso combina tre importanti e ben definite tecnologie informatiche: Documenti di tipo Ipertesto. Sono.
Array e Funzioni in PHP Laboratorio di Progettazione Web AA 2007/2008 Chiara Renso ISTI- CNR -
BIOINFO3 - Lezione 41 ALTRO ESEMPIO ANCORA Progettare il comando di creazione di una tabella di pubblicazioni scientifiche. Come chiave usare un numero.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Amministrazione della rete: web server Apache
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
ASP – Active Server Pages - 1 -Giuseppe De Pietro Introduzione ASP, acronimo di Active Server Pages, sta ad indicare una tecnologia per lo sviluppo di.
Applicazione Web Informatica Abacus Informatica Classe VIA 2008/2009 N.Ceccon INF (01) Revisione 4.0 settembre 2008.
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
PHP - PHP: Hypertext Preprocessor. Introduzione PHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor") è un linguaggio di scripting general-purpose.
Lezione 8.
Protocolli e architetture per WIS. Web Information Systems (WIS) Un Web Information System (WIS) usa le tecnologie Web per permettere la fruizione di.
Pagine ASP parte 3 I data base Stefano Schacherl.
Laboratorio 4: PHP e MySQL
Introduzione a Javascript
Eprogram informatica V anno. ASP.NET Introduzione ASP.NET (Active Server Page) è il linguaggio che, sfruttando la tecnologia.NET, permette di: -scrivere.
Programmazione Web PHP e MySQL 1. 2Programmazione Web - PHP e MySQL Esempio: un blog.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
MySQL Database Management System
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
PHP MySQL Accesso a database via web. Connessione Script PHP per la connessione a un server MySQL mysql_connect(nomeServer,nomeUtente,password);
Protocolli e architetture per WIS. Cronologia di Internet ricerche sulla commutazione di pacchetto (Leonard Kleinrock) 1967 Nasce il progetto.
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Google Visualization API
Università degli Studi G.D’Annunzio (Pe) Corso di Laurea Specialistica in Eco.Informatica.
Servizi Internet Claudia Raibulet
Eprogram informatica V anno.
Eprogram informatica V anno. Introduzione a PHP Introduzione La diffusione di PHP ha avuto un notevole incremento dalla fine degli anni Novanta a oggi,
Eprogram informatica V anno. Programmare in rete.
SQLite. Introduzione a SQLite Oltre alla possibilità di memorizzare informazioni persistenti attraverso Preferences e files, Android mette a disposizione.
Eccezioni in Java. Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel linguaggio allo scopo.
ASP – Active Server Pages - 1 -Giuseppe Tandoi ASP – Active Server Pages Tecnologia per lo sviluppo di pagine dinamiche.
Transcript della presentazione:

Basi di Dati e Sistemi Informativi Implementazione di WIS con PHP/MySQL Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/

Implementazione di WIS & PHP Per l’implementazione di WIS, sono necessari i seguenti software: DMBS  nel nostro caso, MySQL Web server  nel nostro caso, Apache Tecnologia Scripting server-side  PHP Pacchetti integrati per diverse piattaforme: LAMP XAMP MAMP (http://www.mamp.info)

Implementazione di WIS & PHP Dopo aver installato LAMP/MAMP/XAMP, e’ necessario avviare i server PHP/MySQL …

Implementazione di WIS & PHP PHP e’ un linguaggio di scripting server-side. Gli script PHP sono eseguiti direttamente dall’ interprete contenuto nel web-server (Apache). Sicurezza  Gli script sono trasparenti al client. Compatibilita’  Nessun problema di compatibilita’ tra client differenti. Accesso a risorse  Gli script possono accedere alle risorse contenute sul server.

Implementazione di WIS & PHP Uno script PHP si presenta come un insieme di istruzioni racchiuse tra tag <?php><?>. <html> <head><title>Primo Script PHP</title></head> <body> <p> <b> Data corrente: </b> <?php echo date("m.d.y"); ?> </p> </body> </html>

Implementazione di WIS & PHP http://www.cs.unibo.it/data.php RISORSA RICHIESTA <html> <head> </head> <body> <p> <b> Data corrente: </b> <?php echo date("m.d.y"); ?> </p> </body> </html> <html> <head> </head> <body> <p> <b> Data corrente: </b> 11.21.12</p> </body> </html> SERVER-SIDE CLIENT-SIDE

Implementazione di WIS & PHP PHP e’ a tutti gli effetti un linguaggio di programmazione ad alto livello (come C, Java, etc): Costrutti: variabili, costrutti di selezione, iterazione, funzioni, etc Estensione object-oriented Librerie (integrazione DBMS, web-service, gestione stringhe, etc) Gestione componenti per il Web (cookie, sessioni, etc)

Implementazione di WIS & PHP Il comando echo consente di inviare una stringa sul browser (e solo dopo stampa a video!) <html> <head></head> <body> <?php $testVariable=“<b>Salve</b>” echo $testVariable ?> </body> </html> <html> <head></head> <body> Salve </body> </html>

Implementazione di WIS & PHP Il comando echo consente di inviare una stringa sul browser (e solo dopo stampa a video!) <html> <head></head> <body> <?php $testVariable=“Salve” echo $testVariable ?> </body> </html> <html> <head></head> <body> Salve </body> </html>

Implementazione di WIS & PHP E’ possibile inserire commenti in due modi: Mediante il carattere // (commento su singola riga) $testVariable=5 // Dichiarazione Mediante il carattere: /* (commenti su piu righe) */ /* Dichiarazione di una variabile Commento su piu’ righe */ $testVariable=5

Implementazione di WIS & PHP PHP e’ un linguaggio debolmente tipato. Non e’ necessario dichiarare una variabile prima del suo utilizzo (come invece avviene in Java) Una singola variabile puo’ contenere un qualsiasi tipo di dato. I nomi delle variabili sono preceduti da $. $testVariable=5 $testVariable=‘Tre’

Implementazione di WIS & PHP Tramite il comando array, e’ possibile definire degli array, non necessariamente omogeenei … $myarray=array(“hello”,2,3.5,”3”); echo $myarray[0]; echo $myarray[1]; E’ possibile aggiungere/modificare elementi degli array in maniera dinamica: $myarray[0]=“world”; $myarray[4]=“4; $myarray[] = “newelem” // Aggiunta in coda!

Implementazione di WIS & PHP Gli indici degli array non devono essere necessariamente interi, ma possono anche essere stringhe (array associativi). $birthdays[“Sara”]=“10/02/1982”; $birthdays[“Michele”]=“12/02/1982”; Creazione di array associativi: $birthdays=array(“Sara” => “10/02/1982”, “Michele” =>”12/02/1982”);

Implementazione di WIS & PHP STRUTTURE DI CONTROLLO: if-else Il comando if-else consente di eseguire un certo insieme di istruzioni se e’ soddisfatta una certa condizione (ramo if) o un altro insieme (ramo else) se la condizione non e’ soddisfatta. if (condizione) { … Istruzioni Ramo if } else { … Istruzioni Ramo else }

Implementazione di WIS & PHP STRUTTURE DI CONTROLLO: if-else Il comando if-else consente di eseguire un certo insieme di istruzioni se e’ soddisfatta una certa condizione (ramo if) o un altro insieme (ramo else) se la condizione non e’ soddisfatta. if ($name==“Marco”) { echo(“Benvenuto, Marco”); } else { echo(“Utente sconosciuto”); }

Implementazione di WIS & PHP STRUTTURE DI CONTROLLO: while Il comando while consente di eseguire un certo insieme di istruzioni nel mentre e’ soddisfatta una certa condizione. while (Condizione) { … Istruzione/i da ripetere } Condizione= una qualsiasi espressione logico/matematica.

Implementazione di WIS & PHP STRUTTURE DI CONTROLLO: while Il comando while consente di eseguire un certo insieme di istruzioni nel mentre e’ soddisfatta una certa condizione. $count=1; while ($count<=10) { // Stampo 10 valori echo($count); $count++; } echo(“Fine del ciclo”);

Implementazione di WIS & PHP STRUTTURE DI CONTROLLO: for Il comando for consente di eseguire un certo insieme di istruzioni nel mentre e’ soddisfatta una certa condizione. for (espressione; condizione; espressione) { … Istruzione/i da ripetere } Condizione= una qualsiasi espressione logico/matematica.

Implementazione di WIS & PHP STRUTTURE DI CONTROLLO: for Il comando for consente di eseguire un certo insieme di istruzioni nel mentre e’ soddisfatta una certa condizione. for ($count=1; $count<=10; $count++) { echo($count); // Stampo 10 valori } echo(“Fine del ciclo”);

Implementazione di WIS & PHP DEFINIZIONE DI FUNZIONI: function Un programma PHP puo’ includere funzioni, che ricevono parametri in ingresso e restituiscono (eventualmente) un valore di ritorno. function somma($a, $b, $c) { result=$a + $b +$c; return $result; } $val=somma(1,5,6); echo($val)

Implementazione di WIS & PHP DEFINIZIONE DI FUNZIONI: function All’interno di una funzione possono essere definite variabili locali. Con l’istruzione global si puo’ accedere a variabili globali definite nello script. function somma($b, $c) { global $a; result=$a+ $b +$c; return $result; } $a=10; $val=somma(5,6);

Implementazione di WIS & PHP DEFINIZIONE DI FUNZIONI: function E’ possibile invocare una funzione anche specificando un numero di parametri inferiore a quelli previsti dall’intestazione della funzione. function f1($a, $b, $c=20) { result=$a*$b+$c; return $result; } $a=10; $b=20; $val=f1($a,$b);

Implementazione di WIS & PHP PASSAGGIO DEI PARAMETRI Esistono due tecniche per passare parametri in ingresso ad uno script PHP: Metodo GET: I parametri sono inseriti in appendice alla URL dello script PHP. Metodo POST: I parametri sono inviati (non in forma visibile) insieme alla richiesta HTTP.

Implementazione di WIS & PHP PASSAGGIO DEI PARAMETRI: metodo GET Invio dei parametri lato client: http:/www.cs.unibo.it/script.php?nome=Michele http:/www.cs.unibo.it/script.php? nome=Michele&cognome=Rossi Recupero dei parametri lato server: (script.php) $name=$_GET[“nome”]; $lastname=$_GET[“cognome”]; $_GET e’ una variabile di sessione di PHP contenente i parametri nell’URL (array associativo)

Implementazione di WIS & PHP PASSAGGIO DEI PARAMETRI: metodo GET Invio dei parametri lato client: http:/www.cs.unibo.it/script.php?nome=Michele Utilizzo dei parametri lato server: (script.php) <?php $name=$_GET[“nome”]; Echo(“Benvenuto, “.$name.”!”); ?> Concatenatore di stringhe

Implementazione di WIS & PHP PASSAGGIO DEI PARAMETRI: metodo POST Invio dei parametri lato client: <form action=“script.php” method=“post” <div><label for=“firstname”> Nome: </label> <input type=“text” name=“firstname” id=“firstname”> </div> <div><label for=“lastname”> Cognome: </label> <input type=“text” name=“lastame” id=“firstname”> <div> <input type=“submit” value=“Vai”></div> </form>

Implementazione di WIS & PHP PASSAGGIO DEI PARAMETRI: metodo POST Recupero dei parametri lato server: (script.php) <?php $name=$_POST[“firstname”]; $name=$_POST[“lastname”]; Echo(“Benvenuto, “$name.$lastname.”!”); ?> Vantaggi rispetto al metodo GET: (i) dimensione/numer parametri; (ii) privacy

Implementazione di WIS & PHP PASSAGGIO DEI PARAMETRI: metodo GET/POST Recupero dei parametri lato server: (script.php) <?php $name=$_REQUEST[“firstname”]; $name=$_REQUEST[“lastname”]; Echo(“Benvenuto, “$name.$lastname.”!”); ?> $REQUEST_ astrae dalla modalita’ di invio parametri (GET/POST).

Implementazione di WIS & PHP PROGRAMMAZIONE ad OGGETTI In PHP, e’ possibile creare una classe con il costrutto class. Una classe puo’ contenere metodi ed attributi. class myClass { public $a=10; // Attributo public function sayHello() { echo(“Hello! ”); }

Implementazione di WIS & PHP PROGRAMMAZIONE ad OGGETTI Con il costrutto new, e’ possibile creare oggetti di una certa classe, mentre con il simbolo  e’ possibile accedere a metodi/attributi di un oggetto. $myObject=new myClass(); $myObject a = $myObject a + 5; $myObject printHello();

Implementazione di WIS & PHP PROGRAMMAZIONE ad OGGETTI Se si vuole accedere a metodi/attributi di un oggetto all’interno della definzione della classe stessa, e’ necessario usare la variabile this per far riferimento all’oggetto corrente. class myClass { public $a=10; // Attributo public function sayHello() { echo($thisa); }}

Implementazione di WIS & PHP PROGRAMMAZIONE ad OGGETTI Ogni classe puo’ avere un costruttore (il metodo __construct), che puo’ ricevere parametri in ingresso per l’inizializzazione dell’oggetto. class myClass { public $a=10; // Attributo public function __construct($val) { $thisa = $val; } myObject=new myClass(5);

Implementazione di WIS & PHP PROGRAMMAZIONE ad OGGETTI Una classe puo’ disporre di metodi ed attributi statici, dichiarati attraverso il costrutto static. class myClass { public static $var=10; // Attributo public static function hello() { echo(“Salve”); } echo myClass::$var; myClass::hello();

Implementazione di WIS & PHP PROGRAMMAZIONE ad OGGETTI Come in altri linguaggi ad oggetti (Java, C++, etc) anche in PHP e’ possibile costruire gerarchie di classi mediante l’ereditarieta’. E’ inoltre possibile limitare la visibilita’ degli attributi/metodi mediante gli indicatori: public, private, protected

Implementazione di WIS & PHP PROGRAMMAZIONE ad OGGETTI class A { // Definizione dell’oggetto A public $a=10; public $b=20; public function get_a()) { return $thisa; } class B extends A { // Definizione dell’oggetto B public function get_b() { return $thisb; $b=new B(); echo($bget_a()); echo($bget_b());

Implementazione di WIS & PHP PROGRAMMAZIONE ad OGGETTI Sfruttando l’ereditarieta’ tra classi, e’ possibile fare overriding di metodi definiti dalla classe genitore. Altri costrutti OOP in PHP: Classi astratte (costrutto abstract) Interfacce (costrutto interface) Type Hinting (dalla versione 5 in poi …)

Implementazione di WIS & PHP CONNESSIONE CON UN DBMS Per poter interfacciare uno script PHP con un DBMS, in modo da recuperare/inserire/cancellare/modificare dati da un DB, e’ necessario: Connettersi ad un DB Configurare la connessione Costruire/Eseguire la query SQL Gestire i risultati della query SQL

Implementazione di WIS & PHP PDO (PHP Data Object): Estensione di PHP per la connessione con un DBMS (es. MySQL). E’ necessario creare un oggetto PDO, specificando come parametri: Tipo di DB (es. sql) Hostname del server che ospita il DB Nome del DB Credenziali dell’utente (lato DBMS)

Implementazione di WIS & PHP Esempio di connessione: $pdo=new PDO(“mysql:host=localhost; dbname=mydb”, “marco”, “mypassword”); L’istruzione ritorna un oggetto di tipo PDO che rappresenta la connessione con il DB … Che succede se la connessione non e’ disponibile? Viene restituita un’eccezione da gestire…

Implementazione di WIS & PHP Esempio di connessione con try/catch: try { $pdo=new PDO(‘mysql:host=localhost; dbname=mydb’, ‘marco’,’mypasswd’); } catch(PDOException ex) { echo(“Connessione non riuscita”); exit();

Implementazione di WIS & PHP CONNESSIONE CON UN DBMS Per poter interfacciare uno script PHP con un DBMS, in modo da recuperare/inserire/cancellare/modificare dati da un DB, e’ necessario: Connettersi ad un DB Configurare la connessione Costruire/Eseguire la query SQL Gestire i risultati della query SQL

Implementazione di WIS & PHP Sollevare un’eccezione ogni qual volta un oggetto PDO non riesce ad eseguire un’operazione sul DB: $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); Configurare la codifica dei dati: $pdoexec(‘SET NAMES “utf8”’);

Implementazione di WIS & PHP CONNESSIONE CON UN DBMS Per poter interfacciare uno script PHP con un DBMS, in modo da recuperare/inserire/cancellare/modificare dati da un DB, e’ necessario: Connettersi ad un DB Configurare la connessione Costruire/Eseguire la query SQL Gestire i risultati della query SQL

Implementazione di WIS & PHP Il comando exec consente di inviare una query SQL di aggiornamento/inserimento/cancellazione al DBMS e di eseguirla. Input: Stringa della query SQL da eseguire Output: Numero righe interessate dalla query $sql=‘INSERT into STUDENTI VALUES (“Marco”, “Rossi”)’; // Creazione della query in una stringa $result=$pdoexec($sql);

Implementazione di WIS & PHP E’ necessario utilizzare try/catch in ogni query! try{ $sql=‘INSERT into STUDENTI VALUES (“Marco”, “Rossi”)’; $result=$pdoexec($sql); } catch(PDOException $e) { echo(‘Codice errore’.egetMesssage()); exit(); echo(‘Numero Righe inserite:’.$result’);

Implementazione di WIS & PHP Il comando query consente di inviare una query SQL di ricerca (SELECT) al DBMS e di eseguirla. Input: Stringa della query SQL da eseguire. Output: Un oggetto PDOStatement contenente un insieme di risultati della query SQL. $sql=‘SELECT * FROM STUDENTI’; $result=$pdoquery($sql);

Implementazione di WIS & PHP CONNESSIONE CON UN DBMS Per poter interfacciare uno script PHP con un DBMS, in modo da recuperare/inserire/cancellare/modificare dati da un DB, e’ necessario: Connettersi ad un DB Configurare la connessione Costruire/Eseguire la query SQL Gestire i risultati della query SQL

Implementazione di WIS & PHP Un oggetto di tipo PDOStatement e’ un result set, contentente un elenco di tutte le righe restituite dalla query. Il metodo fetch() consente di prelevare la riga successiva del result set. Se non ci sono righe, viene restituito false (nessuna eccezione sollevata). Ogni riga e’ un array associativo, con indici pari ad i nomi degli attributi della tabella risultato.

Implementazione di WIS & PHP Esempio di query SELECT: try{ $sql=‘SELECT * FROM STUDENTI’; $result=$pdoquery($sql); } catch(PDOException) { …} while($row=$resultfetch()) { echo(‘Nome:’.$row[‘name’]); Oggetto PDOStatement

Implementazione di WIS & PHP In alternativa, e’ possibile usare il costrutto foreach try{ $sql=‘SELECT * FROM STUDENTI’; $result=$pdoquery($sql); } catch(PDOException) { …} foreach($result as $row) { echo(‘Nome:’.$row[‘name’]);

Implementazione di WIS & PHP Per ragioni di sicurezza (es. evitare attacchi di SQL injection da parte dell’utente), e’ meglio evitare di inviare direttamente al DBMS una query costruita a partire da parametri forniti dall’utente. In alternativa: Si costruisce il template della query. Si invia il template della query al DBMS. Il DBMS prepara l’esecuzione della query. Si inviano i parametri utente.

Implementazione di WIS & PHP Costruire il template della query: $sql='SELECT COUNT(*) AS counter FROM Login WHERE (Utente=:lab1) AND (Password=:lab2)'; 2. Inviare la query al DBMS, per predisporne l’esecuzione: $res=$pdo->prepare($sql); $res e’ un oggetto di tipo PDOStatement ..

Implementazione di WIS & PHP Riempire il template della query con i parametri (che vanno al posto delle label definite prima): $res->bindValue(":lab1",$username); $res->bindValue(":lab2",$password); 4. Eseguire la query SQL sul DBMS $res->execute();

Implementazione di WIS & PHP Il database potrebbe contenere dei dati sensibili (es. password di accesso), che potrebbero necessitare di meccanismi di protezione aggiuntivi per l’accesso. In PHP, e’ possibile cifrare i dati con MD5: $password=md5($_POST[‘password’]); Per aumentare la sicurezza, si possono aggiungere delle stringhe alla password prima di cifrarla: $password=md5($_POST[‘password’].”jdd”);

Implementazione di WIS & PHP Il database potrebbe contenere dei dati sensibili (es. password di accesso), che potrebbero necessitare di meccanismi di protezione aggiuntivi per l’accesso. In alternativa, la stessa cifratura MD5 puo’ essere eseguita dal DBMS (mySQL): $sql=‘INSERT INTO Utenti(User,Password) VALUES(“’.$username’”,MD5(“’.$password’”)) $result=pdo->query($sql);

Implementazione di WIS & PHP A volte, l’applicazione Web ha necessita’ di salvare delle informazioni di stato sul client. Cio’ puo’ essere fatto attraverso il meccanismo dei cookie. Un cookie e’ una coppia <nome-valore>, associata ad uno specifico sito web, e memorizzato sul browser del client. Il cookie viene inviato dal server web al client (browser). Ad ogni successiva richiesta allo stesso server, il client invia il cookie, finche’ esso non scade.

Implementazione di WIS & PHP Un browser richiede un URL cui corrisponde uno script PHP, al cui interno c’e’ la chiamata setcookie. La pagina prodotta dallo script PHP viene spedita al client, insieme ad un header HTML contenente <nome,valore> del cookie. Quando riceve l’header, il browser memorizza il cookie. Tutte le successive richieste a tale sito contengono la coppia <nome, valore> del cookie.

Implementazione di WIS & PHP Quando riceve una richiesta con un header cookie, lo script PHP crea una variabile nell’array $_COOKIE con il nome del cookie in questione, ed il relativo valore. Es. echo $_COOKIE[‘mycookie_name’] Q. Come creare un cookie in uno script PHP?

Implementazione di WIS & PHP <mycookie, 4> HTTP request (myscript.php) Browser (client) HTTP response Web server “cs.unibo.it” <mycookie, 4> <?php setcookie(“mycookie”,4); ?> Web server Cookie cs.unibo.it <mycookie,4> myscript.php $_COOKIE[‘mycookie’]=4

Implementazione di WIS & PHP setcookie(name, value, expiriyTime, path, domain, secure, httpOnly) Tutti i parametri sono opzionali, tranne name. expiryTime specifica la validita’ temporale del cookie (numero secondi a partire dal 1/1/1970). secure indica se il cookie deve essere inviato solo su connessioni sicure (https).

Implementazione di WIS & PHP Q. Dove inserire la chiamata setcookie? I cookie sono inviati tra gli header HTTP della pagina, quindi setcookie deve essere chiamata prima che venga inviato un solo byte sulla connessione! <html></html> </head> </head> <body> >? php setcookie(‘mycookie’); <?> </body></html> ERRORE!

Implementazione di WIS & PHP PROBLEMA: I cookie consentono di memorizzare solo piccole quantita’ di dati… Le sessioni rappresentano uno strumento per gestire lo stato della connessione client-server, memoriizzando dei dati temporanei sul server. Ogni sessione: Ha un identificativo univoco (id di sessione). Ha un insieme di variabili di sessione.

Implementazione di WIS & PHP Una sessione viene creata dal server attraverso il metodo start_session(). Viene inviato un cookie con l’id della sessione al browser del client. Ad ogni richiesta da parte del browser per il medesimo sito, viene inviato il cookie per identificare la sessione corrente. Per chiudere la sessione, il server puo’ utilizzare il metodo session_destroy().

Implementazione di WIS & PHP In PHP, una sessione puo’ avere delle variabili temporanee associate, memorizzate sul server. Tutte le variabili di sessione sono entry di $_SESSION: $_SESSION[‘nomevariabile’]=‘nuovovalore’; Per rimuovere una variabile, si usa il metodo unset: unset($_SESSION[‘nomevariabile’]);

Implementazione di WIS & PHP Nella pratica, un programma PHP puo’ essere composto da tanti file. E’ possibile utilizzare la direttiva include per includere un file sorgente (PHP/HTML) all’interno di un file PHP. Utile per due motivi: Suddividere un programma PHP in moduli, eventualmente utilizzabile da altri moduli. Suddividere la logica di gestione dell’applicazione (in PHP) dalla presentazione dei dati (in HTML)

Implementazione di WIS & PHP Esempio di inclusione di un file html all’interno di uno script PHP: <?php if (isset($_POST[‘user’]) and isset($_POST[‘password’]) { … Codice PHP } ?> include ‘formlogin.html’;

Implementazione di WIS & PHP Il linguaggio PHP mette a disposizione una libreria molto vasta di funzioni pre-definite di vario tipo (operazioni su stringhe, file, mail, etc). printf($formato, $argomenti) Inserisce all’interno della stringa $formato dei posizionatori tipizzati che verranno sostituiti dagli argomenti forniti come secondo argomento. printf(“Utente:%s Prodotti:%d”,$user,$nrprod);

Implementazione di WIS & PHP sprintf($formato, $argomenti) Come la printf, ma restituisce una stringa in output. $str=sprintf(“Utente:%s Prodotti:%d”,$user,$nrprod); substr($str,$inizio,$fine) Estrae la sottostringa di $str dal carattere $inizio al carattere $fine. $str=substr(“ProvaStringa”,4,7);

Implementazione di WIS & PHP str_replace($str1, $str2, $str) Sostituisce la stringa $str1 con $str2 all’interno della stringa $str. $str=str_replace(“ab”, “ac”, “babbo”); split($expr,$str) Suddivide una stringa $str in base all’occorrenza di un separatore. $array1=split(“-”,”335-6767690”);

Implementazione di WIS & PHP date(argomenti) Stampa la data corrente, in base alla formattazione definita dall’utente. $echo date(“m.d.y”); mail($mail, $subject, $msg, $headers) Invia una mail all’indirizzo $mail, con subject $subject, corpo $msg, ed $headers aggiuntivi. mail(dest@cs.unibo.it, “Salve”, “Msg di prova”, “From: prova@cs.unibo.it”);

Implementazione di WIS & PHP fopen, fread, fwrite, fclose, etc Operazioni su file (apertura, lettura, scrittura, etc) shellexec($cmd) Apre una shell sul server ed esegue il comando indicato (solo dietro opportuna configurazione). $data_server=shellexec(‘date’); echo $data_server;