Web Programming - Giulio Rossetti
Transcript
Web Programming - Giulio Rossetti
Web Programming Lezione 1: LAMP e Introduzione a PHP Giulio Rossetti Guru@Work 10/03/2011 Contatti Materiale Tutto il materiale del corso sarà reso disponibile sul sito: www .guruatwork.com (e su blog .giuliorossetti.net) Domande Per domande su temi inerenti al corso è possibile inviare mail all’indirizzo [email protected] specificando nel Subject [G @W : PHP] Cosa è PHP? “Un programma per computer fa quello che gli dici, non quello che vuoi” - Greer • Php: Hypertext Processor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione di pagine web. • Alcune caratteristiche “tecniche” • • • • • è un linguaggio di scripting è interpretato (non compilato) è Server side (non client side - come ad es. Javascript) è debolmente tipizzato (vedremo cosa significa..) consente la programmazione Object Oriented • Ed inoltre.. è Open Source Programmazione Web.. cosa è necessario? “In nome della necessità sono stati compiuti i delitti più inutili ed efferati.” - Disraeli • Un computer con sistema operativo installato; • Un server Web per visualizzare le pagine prodotte; • Un DBMS (Database management system) per salvare le informazioni (non vedremo come in questo corso); • Un linguaggio di programmazione (es. PHP) e le basi di HTML (è utile conoscere anche i CSS). In altre parole... un “sistema” LAMP (Linux - Apache - mysql - PHP) “Un sistema operativo” perché “Linux”?!? “Aver paura del diavolo è uno dei modi di dubitare di Dio.” - Gibran Il SO può essere qualsiasi (si parla di MAMP - in caso di Osx - WAMP in caso di Windows) ma.. • .. ci piace il Free Software .. • .. il 90% dei server online usa Linux come SO .. quindi LAMP sia! Nello specifico faremo riferimento alla distribuzione Ubuntu liberamente scaricabile dal sito www.ubuntu.it Cosa è un “Web server” e come funziona? “Che cosa rende filosofi? Il coraggio di non serbare alcuna domanda nel cuore.” - Schopenhauer Un Web Server (noi useremo Apache) è un “servizio” installato su di un computer e che si occupa di: • rendere accessibili in rete alcuni file presenti sul pc (le pagine del nostro sito); • servire i visitatori del sito ospitato restituendo tali file una volta che questi siano stati richiesti. Database: il backend di un sito dinamico.. “Bisogna avere buona memoria per mantenere le promesse.” Nietzsche In un sito dinamico le pagine sono create al momento della richiesta da parte del visitatore: il loro contenuto è costruito a partire dalle informazioni salvate su un database. Prepariamo il tutto... “Allora tutto il film della mia vita mi è passato davanti agli occhi in un momento! E io non ero nel cast!” - Woody Allen L’adozione di Ubuntu rende la fase di installazione di Apache, PHP, mysql un operazione estremamente banale: 1 Apriamo il “Gestore pacchetti” nel menù “Sistema−→Amministrazione” 2 Cerchiamo, e selezioniamo per l’installazione i pacchetti: php5, mysql-client-5.1, mysql-server, phpmyadmin, apache2 3 Installiamo. Ci verranno chiesti un nome utente ed una password per mysql e phpmyadmin: forniamo tali credenziali impostando valori che siamo sicuri di ricordare. Come? Dove? Perché? “È meglio conoscere qualcosa delle domande, che tutto delle risposte.” - Thurber Per controllare che Apache sia installato correttamente aprite un browser e immettete come URL: • http://localhost/ Dovrebbe comparire una pagina con scritto “It Works!”: in tale caso complimenti tutto sembra funzionare a modo! Apache utilizza come root path per i file da ricercare • /var/www/ su cui hanno permessi di scritura solo gli utenti appartenenti al gruppo Apache. Potete quindi: • cambiare i diritti di scrittura sulla cartella (fatelo SOLO quando lavorate in locale sul vostro pc!!) • oppure aggiungere il vostro utente al gruppo Apache (se non ne facesse già parte) • ... altre alternative che non vedremo. Ed ora: PHP! “All’inizio era il Verbo.. il complemento oggetto venne molto tempo dopo.” - Giobbe Covatta Per programmare in PHP può essere utilizzato un qualsiasi editor di testo (oltre ad ambienti di sviluppo dedicati e non): noi useremo gedit. • è didatticamente semplice; • è preinstallato in quasi tutte le distribuzioni GNU/Linux; • fornisce un minimo di syntax hilithening; • non è complesso da usare. Un inizio classico: “Ciao mondo!” “Ogni stecca ripetuta due volte è l’inizio di un arrangiamento.” - Frank Zappa Uno script PHP è salvato in un file di testo avente come estensione .php. Nel nostro caso avremo: <?php echo “Ciao mondo!”; ?> Salviamo il tutto in un file dal nome index.php all’interno della root del nostro web server (/etc/www/): la pagina sarà quindi accedibile all’indirizzo: http://localhost/index.php Cosa è un programma? “L’essere è il non essere non è” - Parmenide Un programma è “qualcosa” che presi in ingresso dei dati esegue delle computazioni sugli stessi (non necessariamente modificandoli) e restituisce un risultato (visibile o invisibile all’utente). Ogni programma che si rispetti è definito da alcuni componenti: • i dati su cui questo si troverà a operare, • l’algoritmo che implementa. Variabili: lo “stato” del programma “Essere o non essere, questo è il problema” - William Shakespeare (Amleto) I dati su cui opera un programma sono (in qualche modo) salvati nella memoria del computer e possono essere acceduti tramite le “variabili”. Ogni variabile identifica uno spazio di memoria; ciascuna variabile ha un nome, definito dal programmatore, che viene usato per accedere tale particolare spazio di memoria. In ogni preciso istante lo stato di un programma può essere univocamente determinato dalla conoscenza di: • valore delle variabili • punto di esecuzione dell’algoritmo Tipizzazione questa sconosciuta... � � � “ τ → τ = (int × τ ) → int non è soddisfacibile” - Il Nonno di Heidi In molti linguaggi (C, Java, Python..) ogni variabile ha associato un tipo che specifica quale sia il suo possibile contenuto (int, float, String, boolean...). In PHP questo non avviene: all’interno dello spazio riferito da un nome di variabile possono essere memorizzati indistintamente valori di qualsiasi tipo. <?php $nome = “Giulio”; $temperatura = 20; echo “Ciao “ . $nome . ” mi hanno detto che oggi ci sono “ . $temperatura . ”°C”; ?> Cosa è un Algoritmo? “Un giorno le macchine riusciranno a risolvere tutti i problemi, ma mai nessuna di esse potrà porne uno.” - Albert Einstein “Un algoritmo è un procedimento definito da un numero finito di passi discreti ed effettivi che dati dei valori in input produce un risultato in output.” • Finito: espresso da un numero definito di istruzioni • Discreti ed Effettivi: ogni istruzione ha una terminazione (è “discreta”) e causa una modifica dello stato (è “effettiva”) Algoritmo: una rappresentazione grafica “I’m not insane... my mom had me tested!” - Sheldon Cooper Programmazione Imperativa “Agisci in modo che la massima della tua morale possa essere innalzata a legge universale.” - Immanuel Kant (Imperativo categorico) E’ possibile dividere i linguaggi di programmazione in 2 “famiglie”: • I linguaggi imperativi: in cui si definisce passo passo l’algoritmo che il programma deve eseguire; • I linguaggi dichiarativi: in cui si dichiarano delle “regole” e si lascia al programma l’onere di applicarle. PHP è un linguaggio di tipo Imperativo orientato agli Oggetti. Controllo del Flusso: Condizionali “Se non incontri mai qualcosa che ti offende, non vivi in una società libera.” - Daniele Luttazzi If... “Se riesci a mantenere la calma quando tutti intorno a te la stanno perdendo...” - Joseph Rudyard Kipling Il costrutto di scelta consente di diversificare l’operato del programma in base a condizioni prestabilite if( <condizione> ) { <codice> } elseif (<condizione>) { <codice> } else { <codice> } Switch “n un minuto c’è il tempo per decisioni e scelte che il minuto successivo rovescerà.” - Thomas Stearns Eliot Il costrutto Switch permette di diversificare l’operato del programma al valore dell’espressione testata switch (<condizione>) { case <valore1>: <codice> break; case <valore2>: <codice> break; .... default: <codice>; break; } Controllo del Flusso: Cicli “Repetita iuvant” While: un ciclo potenzialmente infinito “Fratelli! Ciò che facciamo in vita, riecheggia nell’eternità.” - Massimo Decimo Meridio Il costrutto While permette di ripetere un blocco di codice finché la condizione testata è soddisfatta. while (<condizione>) { <codice> <aggiornamento condizione> } For: contiamo i passi... “Lı̀, sempre lı̀, lı̀ nel mezzo, finché ce n’hai stai lı̀.” - Luciano Ligabue Il costrutto For permette di ripetere un blocco di codice per un numero prestabilito di volte. for (<inizializzazione contatore>; <condizione>; <aggiornamento contatore>) { <codice> }