PHP Esempi d’uso del PHP per operazioni comuni Roberto Barbiera Corso di formazione per “Programmatori Web”
Overview Generazione di documenti PDF Upload di file da WEB Inoltro di email Integrazione di applicazioni  con il CAS (Central Authentication Service) 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO "PROGRAMMATORI WEB"
06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO "PROGRAMMATORI WEB" Generazione di documenti PDF
Generazione di documenti PDF La classe FPDF FPDF è una classe PHP che permette di generare documenti PDF direttamente da PHP.  La F di FPDF sta per "Free": può essere utilizzata per qualsiasi utilizzo e modificata per soddisfare esigenze particolari Ecco una lista delle sue caratteristiche principali: Scelta dell'unità di misura, del formato pagina e dei margini  Utilizzo dell'intestazione e del piè di pagina  Cambio pagina automatico  Ritorno a capo automatico e giustificazione del testo  Supporto immagini (JPEG e PNG)  Gestione dei Links  Gestione dei colori 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO "PROGRAMMATORI WEB"
Generazione di documenti PDF   Esempio di utilizzo 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; <?php  require ('fpdf.php');  $pdf= new FPDF();  $pdf-> AddPage ();  $pdf-> SetFont ('Arial','B',16);  $pdf-> Cell( 40,10,'Hello World!');  $pdf-> Output ();  ?> Dopo aver incluso il file libreria, creiamo un oggetto  FPDF .  Il costruttore  FPDF()  viene usato, qui sopra, con i valori di default: le pagine sono formato A4, verticale, e con unità di misura in millimetri.  $pdf=new FPDF('P','mm','A4');
FPDF([ string  orientation [,  string  unit [,  mixed  format]]]) orientation:  Orientamento della pagina. Possibili valori sono (case insensitive):  P  (Portrait ) o L (Landscape ) unit:  Unità di misura. Possibili valori sono:  pt: punti  mm : millimetri  cm: centimetri  in: pollici  format:  Il formato utilizzato per la pagina. Può essere uno dei seguenti valori (case insensitive):  A3 ,A4 ,A5 ,Letter ,Legal  un formato personalizzato nella forma di array bidimensionale contenente la larghezza e l'altezza (nell'unità di misura data da unit).  06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Generazione di documenti PDF   FDF. Il costruttore
AddPage([ string  orientation]) Aggiunge una nuova pagina al documento. Se è già presente una pagina viene chiamato prima il metodo  Footer()  per inserire il piè di pagina. Quindi viene aggiunta la pagina, la posizione corrente viene impostata nell'angolo superiore sinistro, tenendo conto del margine superiore e sinistro, quindi viene chiamato  Header()  per visualizzare l'intestazione.  Il font impostato prima della chiamata viene ripristinato automaticamente. Non c'è bisogno di chiamare di nuovo  SetFont()  se si vuole continuare con lo stesso font. Lo stesso dicasi per colori e larghezza di riga.  L'origine del sistema di coordinate è nell'angolo superiore sinistro e l'incremento delle ordinate fa muovere verso il basso.  Il parametro  orientation  se non specificato assume il  valore passato nel costruttore 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Generazione di documenti PDF   FDF->AddPage()
SetFont( string  family [,  string  style [,  float  size]]) Imposta il font utilizzato per stampare stringhe di caratteri. E' obbligatorio chiamare questo metodo almeno una volta prima di stampare del testo oppure il documento risultante potrebbe non essere valido.  Il font può essere sia uno standard oppure uno aggiunto tramite il metodo AddFont().  Parametri family :Famiglia del font. Può essere sia un nome definito da AddFont() o una delle famiglie standard (case insensitive): Courier (fixed-width) , Helvetica o Arial (sinonimi; sans serif) , Times (serif) , Symbol (symbolic)  style:  Stile del font. Possibili valori sono (case insensitive): stringa vuota: normale, B: grassetto, I: corsivo, U: sottolineato , o qualsiasi combinazione. Il valore di default è normale.  size:  Dimensione del font in punti.  Se non è stata specificata nessuna dimensione dall'inizio del documento, viene preso il valore 12. 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Generazione di documenti PDF   FDF->SetFont()
Cell( float  w [,  float  h [,  string  txt [,  mixed  border [,  int  ln [,  string  align [,  int  fill [,  mixed  link]]]]]]]) Stampa una cella (area rettangolare) con bordi, colore di sfondo e stringa di caratteri opzionali. L'angolo superiore sinistro della cella corrisponde alla posizione corrente. Il testo può essere allineato o centrato. Dopo la chiamata, la posizione corrente si sposta a destra o sulla linea successiva. E' possibile inserire un link sul testo.  Se l'interruzione di pagina automatica è abilitata e la cella va oltre i limiti, viene inserita una interruzione di pagina prima dell'output. 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Generazione di documenti PDF   FDF->Cell()
string  Output([ string  name [,  string  dest]]) Passa il documento a una destinazione: stringa, file locale o browser. Nell'ultimo caso, verrà usato il plug-in (se presente), oppure sarà forzata l'apertura di una finestra di download (&quot;Salva con nome&quot;). Se necessario, il metodo richiama prima Close() per chiudere il documento. Parametri name:  Il nome del file. Se non viene specificato, il documento sarà inviato al browser (destinazione I) con il nome doc.pdf.  dest:  Destinazione dove mandare il documento. Può essere specificato uno dei seguenti valori:  I : manda il 'file inline' al browser. Il plug-in sarà utilizzato se presente. Il nome specificato con name sarà utilizzato quando l'utente selezionerà l'opzione &quot;Salva con nome&quot; sul link generato sul PDF.  D : manda al browser e forza il download del file con il nome dato con name.  F : salva il file in locale con il nome dato con name.  S : ritorna il documento come stringa. name is ignored.  Se il parametro  dest  non viene specificato ma viene specificato un nome, la destinazione sarà F. Se non viene specificato alcun parametro, la destinazione sarà I. 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Generazione di documenti PDF   FDF->Output()
06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Upload di file da WEB
Spesso si ha la necessità di consentire agli utenti del proprio sito WEB l’upload di file (es. presentazione di pratiche on-line) L’utente deve poter selezionare il file dal filesystem del proprio PC e deve inviarlo al server Il server deve recepire il  file e memorizzarlo sul DB 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Upload di file da WEB  Il problema
PHP semplifica il caricamento di file da WEB. Utilizza uno speciale array $_FILES contenente informazioni sui file inviati tramite metodo POST. E’ buona norma verificare l’integrità  del caricamento prima di accettarlo.  Il file deve avere una dimensione (chiave ‘size’ in $_FILES) maggiore di zero Il file deve essere stato caricato con un’operazione POST 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Upload di file da WEB  Gli strumenti del PHP
Esistono 6 variabili di configurazione (php.ini) di PHP che influenzano i caricamenti di file in POST: file_uploads  -> abilita l’upload dei file max_execution_time  -> tempo massimo di esecuzione di ciascuno script max_input_time  -> tempo massimo per effettuare il parsing dei dati in input upload_max_filesize  -> dimensione massima dei file da caricare post_max_size  -> dimensione massima dei dati in POST upload_tmp_dir  -> directory temporanea di upload 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Upload di file da WEB Variabili di configurazione
Creiamo una form web di tipo multipart/form-data Impostiamo  MAX_FILE_SIZE  (in byte) in un campo hidden  06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Upload di file da WEB  Passo 1: la form WEB < form   enctype =&quot;multipart/form-data&quot;  action =“upload.php&quot;  method =&quot;post&quot;> < input   type =&quot;hidden&quot;  name =&quot;MAX_FILE_SIZE&quot;  value =&quot;8000000&quot;> Seleziona il file: < input   type =&quot;file&quot;  name =&quot;data&quot;> < input   type =&quot;submit&quot;  name =&quot;submit&quot;  value =&quot;Invia&quot;> </ form >
I file vengono prima salvati in una directory temporanea del server (es. C:\xampp\tmp) Verificare la dimensione del file Verificare che si stia lavorando su di un file caricato via web mediante la chiamata della funzione is_uploaded_file() 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Upload di file da WEB  Passo 2: verifica dei dati caricati // controllo della dimensione del file if  ($_FILES['data']['size'] == 0) { die (&quot;ERRORE: File caricato di zero byte &quot;); } // controllo della validità del file if  (! is_uploaded_file ($_FILES['data']['tmp_name'])) { die (&quot;ERROR: File non valido&quot;); }
06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Upload di file da WEB  Passo 3: salvataggio del file // mette il  contenuto in una variabile $fileData =  addslashes ( file_get_contents ($_FILES['data']['tmp_name'])); // ottiene il  nome e il tipo $fileType = $_FILES['data']['type']; $fileName = $_FILES['data']['name']; // apre la connessione al DB $connection =  mysqli_connect ('localhost', 'corso', 'corso', 'corsoPhp') or die (&quot;ERROR: Cannot connect&quot;); // crea ed esegue la insert sulla tabella $sql = &quot;INSERT INTO tb_file (file, nome, tipo) VALUES ('$fileData', '$fileName', '$fileType')&quot;; mysqli_query ($connection, $sql)  or die  (&quot;ERROR: &quot; . mysqli_error($connection) . &quot; (query $sql)&quot;); // chiude la connessione mysqli_close ($connection);
06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Inoltro di email
Si desidera predisporre un servizio WEB che consenta agli utenti di inviare email ad un determinato indirizzo 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Inoltro di email  Il problema
E’ possibile utilizzare: La funzione built-in  mail() Le classi  Mail_mime   e  Mail  di PEAR 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Inoltro di email   Gli strumenti del PHP
bool  mail  ( string $to , string $subject , string $message[, string $header [, string $parameters ]] ) Accetta 5 argomenti: il destinatario, l’oggetto del messaggio, il corpo del messaggio, intestazione opzionali (separate da ‘\r\n’) e parametri opzionali. Tra le intestazioni opzionali l’intestazione “From:” è obbligatoria Il valore restituito indica solamente se il messaggio è stato consegnato all’agente di posta locale o al server SMTP; non offre alcuna indicazione sul fatto che il messaggio abbia raggiunto il destinatario 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Inoltro di email  La funzione mail() L'implementazione Windows della funzione  mail()  differisce sotto molti aspetti dall'implementazione Unix. In Windows non usa un programma in locale per comporre i messaggi, ma opera direttamente sui socket (vedi parametri SMTP e smtp_port in php.ini. In UNIX utilizza il comando sendmail
Consente in maniera semplice di generare messaggi di  posta multiparti. Si crea un oggetto  Mail_mime()  con due parti: un componente di testo semplice e un componente HTML in linea, allegati rispettivamente con i metodi  setTXTBody()  e  setHTMLBody().  Secondo la specifica MIME, le due parti vengono concatenate in un singolo messaggio. Si trasmette quindi il messaggio utilizzando la classe  Mail  di PEAR. 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Inoltro di email   Le classi Mail_mime e Mail
Per allegare un file è possibile utilizzare il metodo  addAttachment();  è possibile richiamare il metodo per ogni file che si intende aggiungere Se si desidera inserire nel corpo del messaggio immagini in linea, è sufficiente: fare riferimento alle immagini nel corpo HTML Aggiungere al messaggio con il metodo  addHTMLImage() 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Inoltro di email   Le classi Mail_mime e Mail
06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Integrazione di applicazioni  con il CAS Central Authentication Service
CAS è un sistema di autenticazione centralizzato ideato originalmente dalla Yale University allo scopo di offrire un modo affidabile per l’autenticazione di utenti in applicazioni.  CAS è diventato un JA-SIG project nel Dicembre del 2004. https://sso.unipa.it/cas  (CAS Personale UNIPA) https://sso.unipa.it/studenticas   (CAS Studenti) Riferimento interno: Davide Ficano ( [email_address] )  06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Integrazione di applicazioni  con il CAS  Il  CAS
Per integrare il CAS in applicazioni PHP si può fare riferimento a: http://www.ja-sig.org/wiki/display/CASC/phpCAS E’ necessario abilitare l’estensione PHP  extension=php_curl.dll nei seguenti files di XAMPP 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Integrazione di applicazioni  con il CAS  Predisporre l’ambiente
Scaricare phpCAS client da: http://www.ja-sig.org/downloads/cas-clients/php/ Scompattare l’archivio ed includerlo nell’  include_path   del PHP 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Integrazione di applicazioni  con il CAS  Integrare il CAS NOTA:  In PHP 5.x sostituire nel file CAS.php la linea di codice: if (version_compare(PHP_VERSION,'5','>=')) { con la seguente if (version_compare(PHP_VERSION,'5','>=') && !function_exists(&quot;domxml_new_doc&quot;)) {
In ogni pagina privata dell’applicazione includere le seguenti linee di codice: 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; include_once ('CAS/CAS.php'); phpCAS::client (CAS_VERSION_2_0,'sso.unipa.it',443,'cas',false); phpCAS::setNoCasServerValidation (); phpCAS::forceAuthentication (); $username =  strtoupper ( phpCAS::getUser() );  if  ( isset ($username) &&  trim ($username) != &quot;&quot;) { //imposta una variabile di sessione indicante il fatto che l'utente è loggato //nell'applicazione locale $_SESSION ['loggedInLocally'] = true;  // imposta una variabile di sessione contentente lo username $_SESSION ['username'] =  phpCAS::getUser();  } Integrazione di applicazioni  con il CAS  Integrare il CAS
Per effettuare il logout da tutte le applicazioni integrate col CAS invocare il metodo  logout() Per effettuare il logout solamente dalla propria applicazione è sufficiente ripulire le variabili di sessione. 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Integrazione di applicazioni  con il CAS  Integrare il CAS include_once ('CAS/CAS.php'); phpCAS::setDebug (); phpCAS::client (CAS_VERSION_2_0,'sso.unipa.it',443,'cas',false); phpCAS::logout ();

Php Operazioni Comuni Barbiera 97

  • 1.
    PHP Esempi d’usodel PHP per operazioni comuni Roberto Barbiera Corso di formazione per “Programmatori Web”
  • 2.
    Overview Generazione didocumenti PDF Upload di file da WEB Inoltro di email Integrazione di applicazioni con il CAS (Central Authentication Service) 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot;
  • 3.
    06/06/09 UNIVERSITA' DEGLISTUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Generazione di documenti PDF
  • 4.
    Generazione di documentiPDF La classe FPDF FPDF è una classe PHP che permette di generare documenti PDF direttamente da PHP. La F di FPDF sta per &quot;Free&quot;: può essere utilizzata per qualsiasi utilizzo e modificata per soddisfare esigenze particolari Ecco una lista delle sue caratteristiche principali: Scelta dell'unità di misura, del formato pagina e dei margini Utilizzo dell'intestazione e del piè di pagina Cambio pagina automatico Ritorno a capo automatico e giustificazione del testo Supporto immagini (JPEG e PNG) Gestione dei Links Gestione dei colori 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot;
  • 5.
    Generazione di documentiPDF Esempio di utilizzo 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; <?php require ('fpdf.php'); $pdf= new FPDF(); $pdf-> AddPage (); $pdf-> SetFont ('Arial','B',16); $pdf-> Cell( 40,10,'Hello World!'); $pdf-> Output (); ?> Dopo aver incluso il file libreria, creiamo un oggetto FPDF . Il costruttore FPDF() viene usato, qui sopra, con i valori di default: le pagine sono formato A4, verticale, e con unità di misura in millimetri. $pdf=new FPDF('P','mm','A4');
  • 6.
    FPDF([ string orientation [, string unit [, mixed format]]]) orientation: Orientamento della pagina. Possibili valori sono (case insensitive): P (Portrait ) o L (Landscape ) unit: Unità di misura. Possibili valori sono: pt: punti mm : millimetri cm: centimetri in: pollici format: Il formato utilizzato per la pagina. Può essere uno dei seguenti valori (case insensitive): A3 ,A4 ,A5 ,Letter ,Legal un formato personalizzato nella forma di array bidimensionale contenente la larghezza e l'altezza (nell'unità di misura data da unit). 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Generazione di documenti PDF FDF. Il costruttore
  • 7.
    AddPage([ string orientation]) Aggiunge una nuova pagina al documento. Se è già presente una pagina viene chiamato prima il metodo Footer() per inserire il piè di pagina. Quindi viene aggiunta la pagina, la posizione corrente viene impostata nell'angolo superiore sinistro, tenendo conto del margine superiore e sinistro, quindi viene chiamato Header() per visualizzare l'intestazione. Il font impostato prima della chiamata viene ripristinato automaticamente. Non c'è bisogno di chiamare di nuovo SetFont() se si vuole continuare con lo stesso font. Lo stesso dicasi per colori e larghezza di riga. L'origine del sistema di coordinate è nell'angolo superiore sinistro e l'incremento delle ordinate fa muovere verso il basso. Il parametro orientation se non specificato assume il valore passato nel costruttore 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Generazione di documenti PDF FDF->AddPage()
  • 8.
    SetFont( string family [, string style [, float size]]) Imposta il font utilizzato per stampare stringhe di caratteri. E' obbligatorio chiamare questo metodo almeno una volta prima di stampare del testo oppure il documento risultante potrebbe non essere valido. Il font può essere sia uno standard oppure uno aggiunto tramite il metodo AddFont(). Parametri family :Famiglia del font. Può essere sia un nome definito da AddFont() o una delle famiglie standard (case insensitive): Courier (fixed-width) , Helvetica o Arial (sinonimi; sans serif) , Times (serif) , Symbol (symbolic) style: Stile del font. Possibili valori sono (case insensitive): stringa vuota: normale, B: grassetto, I: corsivo, U: sottolineato , o qualsiasi combinazione. Il valore di default è normale. size: Dimensione del font in punti. Se non è stata specificata nessuna dimensione dall'inizio del documento, viene preso il valore 12. 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Generazione di documenti PDF FDF->SetFont()
  • 9.
    Cell( float w [, float h [, string txt [, mixed border [, int ln [, string align [, int fill [, mixed link]]]]]]]) Stampa una cella (area rettangolare) con bordi, colore di sfondo e stringa di caratteri opzionali. L'angolo superiore sinistro della cella corrisponde alla posizione corrente. Il testo può essere allineato o centrato. Dopo la chiamata, la posizione corrente si sposta a destra o sulla linea successiva. E' possibile inserire un link sul testo. Se l'interruzione di pagina automatica è abilitata e la cella va oltre i limiti, viene inserita una interruzione di pagina prima dell'output. 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Generazione di documenti PDF FDF->Cell()
  • 10.
    string Output([string name [, string dest]]) Passa il documento a una destinazione: stringa, file locale o browser. Nell'ultimo caso, verrà usato il plug-in (se presente), oppure sarà forzata l'apertura di una finestra di download (&quot;Salva con nome&quot;). Se necessario, il metodo richiama prima Close() per chiudere il documento. Parametri name: Il nome del file. Se non viene specificato, il documento sarà inviato al browser (destinazione I) con il nome doc.pdf. dest: Destinazione dove mandare il documento. Può essere specificato uno dei seguenti valori: I : manda il 'file inline' al browser. Il plug-in sarà utilizzato se presente. Il nome specificato con name sarà utilizzato quando l'utente selezionerà l'opzione &quot;Salva con nome&quot; sul link generato sul PDF. D : manda al browser e forza il download del file con il nome dato con name. F : salva il file in locale con il nome dato con name. S : ritorna il documento come stringa. name is ignored. Se il parametro dest non viene specificato ma viene specificato un nome, la destinazione sarà F. Se non viene specificato alcun parametro, la destinazione sarà I. 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Generazione di documenti PDF FDF->Output()
  • 11.
    06/06/09 UNIVERSITA' DEGLISTUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Upload di file da WEB
  • 12.
    Spesso si hala necessità di consentire agli utenti del proprio sito WEB l’upload di file (es. presentazione di pratiche on-line) L’utente deve poter selezionare il file dal filesystem del proprio PC e deve inviarlo al server Il server deve recepire il file e memorizzarlo sul DB 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Upload di file da WEB Il problema
  • 13.
    PHP semplifica ilcaricamento di file da WEB. Utilizza uno speciale array $_FILES contenente informazioni sui file inviati tramite metodo POST. E’ buona norma verificare l’integrità del caricamento prima di accettarlo. Il file deve avere una dimensione (chiave ‘size’ in $_FILES) maggiore di zero Il file deve essere stato caricato con un’operazione POST 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Upload di file da WEB Gli strumenti del PHP
  • 14.
    Esistono 6 variabilidi configurazione (php.ini) di PHP che influenzano i caricamenti di file in POST: file_uploads -> abilita l’upload dei file max_execution_time -> tempo massimo di esecuzione di ciascuno script max_input_time -> tempo massimo per effettuare il parsing dei dati in input upload_max_filesize -> dimensione massima dei file da caricare post_max_size -> dimensione massima dei dati in POST upload_tmp_dir -> directory temporanea di upload 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Upload di file da WEB Variabili di configurazione
  • 15.
    Creiamo una formweb di tipo multipart/form-data Impostiamo MAX_FILE_SIZE (in byte) in un campo hidden 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Upload di file da WEB Passo 1: la form WEB < form enctype =&quot;multipart/form-data&quot; action =“upload.php&quot; method =&quot;post&quot;> < input type =&quot;hidden&quot; name =&quot;MAX_FILE_SIZE&quot; value =&quot;8000000&quot;> Seleziona il file: < input type =&quot;file&quot; name =&quot;data&quot;> < input type =&quot;submit&quot; name =&quot;submit&quot; value =&quot;Invia&quot;> </ form >
  • 16.
    I file vengonoprima salvati in una directory temporanea del server (es. C:\xampp\tmp) Verificare la dimensione del file Verificare che si stia lavorando su di un file caricato via web mediante la chiamata della funzione is_uploaded_file() 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Upload di file da WEB Passo 2: verifica dei dati caricati // controllo della dimensione del file if ($_FILES['data']['size'] == 0) { die (&quot;ERRORE: File caricato di zero byte &quot;); } // controllo della validità del file if (! is_uploaded_file ($_FILES['data']['tmp_name'])) { die (&quot;ERROR: File non valido&quot;); }
  • 17.
    06/06/09 UNIVERSITA' DEGLISTUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Upload di file da WEB Passo 3: salvataggio del file // mette il contenuto in una variabile $fileData = addslashes ( file_get_contents ($_FILES['data']['tmp_name'])); // ottiene il nome e il tipo $fileType = $_FILES['data']['type']; $fileName = $_FILES['data']['name']; // apre la connessione al DB $connection = mysqli_connect ('localhost', 'corso', 'corso', 'corsoPhp') or die (&quot;ERROR: Cannot connect&quot;); // crea ed esegue la insert sulla tabella $sql = &quot;INSERT INTO tb_file (file, nome, tipo) VALUES ('$fileData', '$fileName', '$fileType')&quot;; mysqli_query ($connection, $sql) or die (&quot;ERROR: &quot; . mysqli_error($connection) . &quot; (query $sql)&quot;); // chiude la connessione mysqli_close ($connection);
  • 18.
    06/06/09 UNIVERSITA' DEGLISTUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Inoltro di email
  • 19.
    Si desidera predisporreun servizio WEB che consenta agli utenti di inviare email ad un determinato indirizzo 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Inoltro di email Il problema
  • 20.
    E’ possibile utilizzare:La funzione built-in mail() Le classi Mail_mime e Mail di PEAR 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Inoltro di email Gli strumenti del PHP
  • 21.
    bool mail ( string $to , string $subject , string $message[, string $header [, string $parameters ]] ) Accetta 5 argomenti: il destinatario, l’oggetto del messaggio, il corpo del messaggio, intestazione opzionali (separate da ‘\r\n’) e parametri opzionali. Tra le intestazioni opzionali l’intestazione “From:” è obbligatoria Il valore restituito indica solamente se il messaggio è stato consegnato all’agente di posta locale o al server SMTP; non offre alcuna indicazione sul fatto che il messaggio abbia raggiunto il destinatario 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Inoltro di email La funzione mail() L'implementazione Windows della funzione mail() differisce sotto molti aspetti dall'implementazione Unix. In Windows non usa un programma in locale per comporre i messaggi, ma opera direttamente sui socket (vedi parametri SMTP e smtp_port in php.ini. In UNIX utilizza il comando sendmail
  • 22.
    Consente in manierasemplice di generare messaggi di posta multiparti. Si crea un oggetto Mail_mime() con due parti: un componente di testo semplice e un componente HTML in linea, allegati rispettivamente con i metodi setTXTBody() e setHTMLBody(). Secondo la specifica MIME, le due parti vengono concatenate in un singolo messaggio. Si trasmette quindi il messaggio utilizzando la classe Mail di PEAR. 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Inoltro di email Le classi Mail_mime e Mail
  • 23.
    Per allegare unfile è possibile utilizzare il metodo addAttachment(); è possibile richiamare il metodo per ogni file che si intende aggiungere Se si desidera inserire nel corpo del messaggio immagini in linea, è sufficiente: fare riferimento alle immagini nel corpo HTML Aggiungere al messaggio con il metodo addHTMLImage() 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Inoltro di email Le classi Mail_mime e Mail
  • 24.
    06/06/09 UNIVERSITA' DEGLISTUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Integrazione di applicazioni con il CAS Central Authentication Service
  • 25.
    CAS è unsistema di autenticazione centralizzato ideato originalmente dalla Yale University allo scopo di offrire un modo affidabile per l’autenticazione di utenti in applicazioni. CAS è diventato un JA-SIG project nel Dicembre del 2004. https://sso.unipa.it/cas (CAS Personale UNIPA) https://sso.unipa.it/studenticas (CAS Studenti) Riferimento interno: Davide Ficano ( [email_address] ) 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Integrazione di applicazioni con il CAS Il CAS
  • 26.
    Per integrare ilCAS in applicazioni PHP si può fare riferimento a: http://www.ja-sig.org/wiki/display/CASC/phpCAS E’ necessario abilitare l’estensione PHP extension=php_curl.dll nei seguenti files di XAMPP 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Integrazione di applicazioni con il CAS Predisporre l’ambiente
  • 27.
    Scaricare phpCAS clientda: http://www.ja-sig.org/downloads/cas-clients/php/ Scompattare l’archivio ed includerlo nell’ include_path del PHP 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Integrazione di applicazioni con il CAS Integrare il CAS NOTA: In PHP 5.x sostituire nel file CAS.php la linea di codice: if (version_compare(PHP_VERSION,'5','>=')) { con la seguente if (version_compare(PHP_VERSION,'5','>=') && !function_exists(&quot;domxml_new_doc&quot;)) {
  • 28.
    In ogni paginaprivata dell’applicazione includere le seguenti linee di codice: 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; include_once ('CAS/CAS.php'); phpCAS::client (CAS_VERSION_2_0,'sso.unipa.it',443,'cas',false); phpCAS::setNoCasServerValidation (); phpCAS::forceAuthentication (); $username = strtoupper ( phpCAS::getUser() ); if ( isset ($username) && trim ($username) != &quot;&quot;) { //imposta una variabile di sessione indicante il fatto che l'utente è loggato //nell'applicazione locale $_SESSION ['loggedInLocally'] = true; // imposta una variabile di sessione contentente lo username $_SESSION ['username'] = phpCAS::getUser(); } Integrazione di applicazioni con il CAS Integrare il CAS
  • 29.
    Per effettuare illogout da tutte le applicazioni integrate col CAS invocare il metodo logout() Per effettuare il logout solamente dalla propria applicazione è sufficiente ripulire le variabili di sessione. 06/06/09 UNIVERSITA' DEGLI STUDI DI PALERMO - CORSO &quot;PROGRAMMATORI WEB&quot; Integrazione di applicazioni con il CAS Integrare il CAS include_once ('CAS/CAS.php'); phpCAS::setDebug (); phpCAS::client (CAS_VERSION_2_0,'sso.unipa.it',443,'cas',false); phpCAS::logout ();