Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Ruffo
Cosa impareremo
!! generazione dinamica del contenuto delle pagine; !! generazione dinamica di link; !! funzioni di accesso al filesystem del server; !! funzioni di ricerca su stringhe; !! invio di dati alle pagine attraverso query specificate nellURI; !! invio di file attraverso form (X)HTML.
Struttura dellapplicazione
!! Semplificazioni:
!! Una sola galleria
!! Visualizzazione:
!! Pagina indice che visualizza miniature di dimensioni predeterminate, e link alle immagini a dimensione normale; !! Pagina di visualizzazione della singola immagine, con collegamenti alle immagini precedente e successiva
!! Le funzioni e informazioni di configurazione sono memorizzate a parte !! (create una dir gallery in Public: tutto andr l)
Schema dellapplicazione
!! costrutti:
!! include(nomefile); require(nomefile); (quasi uguali) !! include_once(nomefile); require_once(nomefile);
!! condizionale
!! if(cond) istr ; !! if(cond) istr else istr2 ;
!! selezione multipla
!! switch(espr) { case val1:istr1; val2: istr2; valN: istrN }
!! cicli
!! for($i=min;$i<max; $i=$i+incr) istr; !! while(cond) istr; !! (altri)
Note: costanti
!! define(NOME_COSTANTE,valore) !! Si usano senza segno di dollaro !! Poco usate in PHP perch le variabili sono facili da definire anche implicitamente
Note: generaLinkImmagine
!! Questa funzione crea un link legato ad una miniatura dellimmagine !! La miniatura per fittizia: limmagine di partenza, ridimensionata tramite gli attributi dellelemento <img>
!! e quindi il browser caricher comunque le immagini intere !! Poco efficiente
Note: Filesystem/1
!! funzioni per la gestione dei files (lettura, scrittura, etc) !! funzioni "base":
!! int fopen ( string filename, string mode [, ])
!! restituisce un puntatore al file o FALSE in caso di fallimento !! filename un file locale o un URI; !! mode=r,r+,w,w+,a,a+ (lettura, sovrascrittura, scrittura alla fine; il + sempre lettura/scrittura)
!! funzioni booleane is_dir(), is_file(), is_link(), is_readable(), is_writable(), solo per file locali
Note: Filesystem/2
!! (fp il puntatore a un file aperto in lettura)
!! string fgetc ( int fp)
!! restituisce un carattere
!! Su directory:
!! Int opendir(string path), int readdir($fp) legge file per file, FALSE non ce ne sono pi, closedir($fp)
Note: Filesystem/3
!! funzioni che semplificano la vita
!! array file ( string filename [, ])
!! legge il file nominato ed inserisce ogni sua riga in un elemento del vettore restituito
!! da PHP 4.3:
!! string file_get_contents ( string filename [, ])
!! simile a file()
Note: stringhe
!! Concatenazione di stringhe: . (punto)
!! es. $s = "Lato " . "server" ; !! abbreviato: $s .= "stringa" equiv. $s=$s."stringa
Note
!! Se non si accede passando un parametro immagine via GET, non si visualizza nulla
Ed ora?
!! Mettete qualche immagine in una directory dentro Public/ gallery
!! Es. immagini
Note di sicurezza
!! Cos come , lapplicazione permette a CHIUNQUE di inserire nuove immagini
!! Pericoloso! Finito lesercizio, togliete o rinominate inserisci.php
!! Inclusione di file
!! Se i file inclusi contengono dati sensibili (es. password) bisogna essere certi che non possano essere visualizzati
!! Es. evitare estensioni diverse da .php!
!! Se un file incluso svolge unoperazione destinata solo ad utenti autorizzati, necessario autenticare lutente anche dentro il file incluso e non solo nel file includente
!! Altrimenti il file incluso potrebbe essere richiamato autonomamente da un utente malevolo
Esercizi extra
!! Modificare linserimento delle immagini affinch sia possibile solo ad un utente predefinito !! DIFFICILE: Modificare indice.php ed inserimento immagini affinch vengano create automaticamente delle vere miniature, ed utilizzate nella visualizzazione dellindice (almeno per le immagini JPEG)
!! Suggerimento: controllare la documentazione della libreria GD ed in particolare le funzioni getimagesize(), imagecreatefromjpeg(), imagecopyresampled(), imagejpeg()