Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Modello client-server, Appunti di Informatica

modello client-server e le sue principali caratteristiche

Tipologia: Appunti

2021/2022

Caricato il 15/06/2022

giovanni-durante-1
giovanni-durante-1 🇮🇹

3

(1)

1 documento

1 / 8

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Lezione 8
PHP: UN LINGUAGGIO SERVER SIDE
INTRODUZIONE
Ogni operazione eseguita sul Web coinvolge un client e un server. Un client è un
dispositivo (ad esempio un browser) che effettua una richiesta ad un server remoto. Il
server remoto attraverso un linguaggio di scripting (come per esempio PHP)
interpreta la richiesta del client ed invia una risposta (ad esempio una pagina HTML,
un oggetto JSON o un XML) al client. A questo punto il client è in grado di
interpretare, a sua volta, la risposta ricevuta e fornirla all’utente; nel caso del browser
riceverà una pagina HTML che mostrerà all’utente.
Il web funziona dunque, semplificando molto, a due livelli:
1. le pagine web risiedono su un server e vengono inviate all’utente da un web
server, cioè da un programma che si trova su un computer remoto, e che per
lo più non fa nient’altro che inviare le pagine a chi ne fa richiesta, elaborando in
loco, se necessario, alcuni contenuti tramite un linguaggio server side come
PHP.
2. l’utente da casa visualizza sul proprio browser le pagine che gli sono stato
inviate. Un browser è un programma che permette di leggere le pagine scritte in
linguaggio HTML: Internet Explorer, Mozilla Firefox, Safari e altri...
Quando visualizziamo le nostre pagine web da casa ci sono dunque due computer che
si parlano: il server e il client.
PHP è un linguaggio per lo scripting server-side, ovvero un linguaggio che risiede
in un server in remoto e che in fase di esecuzione interpreta le informazioni ricevute
da un client tramite un Web server, le elabora e restituisce un risultato al client che
ha formulato la richiesta.
Supponiamo ad esempio di accedere ad una pagina di un sito Web in cui dobbiamo
effettuare il login. Dal nostro browser all’interno della pagina (ad esempio
www.nomesito.com/login) inseriremo le nostre credenziali per l’autenticazione.
Semplificando il più possibile, le azioni che vengono compiute saranno le seguenti:
il browser effettua una richiesta con le credenziali al server remoto tramite il
protocollo HTTP;
il Web server riceve la richiesta e la interpreta verificando che i dati inviati siano
corretti;
Ing. Stefano Colombo – Dip. Informatica
pf3
pf4
pf5
pf8

Anteprima parziale del testo

Scarica Modello client-server e più Appunti in PDF di Informatica solo su Docsity!

Lezione 8

PHP: UN LINGUAGGIO SERVER SIDE

INTRODUZIONE

Ogni operazione eseguita sul Web coinvolge un client e un server. Un client è un dispositivo (ad esempio un browser) che effettua una richiesta ad un server remoto. Il server remoto attraverso un linguaggio di scripting (come per esempio PHP ) interpreta la richiesta del client ed invia una risposta (ad esempio una pagina HTML, un oggetto JSON o un XML) al client. A questo punto il client è in grado di interpretare, a sua volta, la risposta ricevuta e fornirla all’utente; nel caso del browser riceverà una pagina HTML che mostrerà all’utente. Il web funziona dunque, semplificando molto, a due livelli:

  1. le pagine web risiedono su un server e vengono inviate all’utente da un web server , cioè da un programma che si trova su un computer remoto, e che per lo più non fa nient’altro che inviare le pagine a chi ne fa richiesta, elaborando in loco, se necessario, alcuni contenuti tramite un linguaggio server side come PHP.
  2. l’utente da casa visualizza sul proprio browser le pagine che gli sono stato inviate. Un browser è un programma che permette di leggere le pagine scritte in linguaggio HTML: Internet Explorer, Mozilla Firefox, Safari e altri... Quando visualizziamo le nostre pagine web da casa ci sono dunque due computer che si parlano: il server e il client. PHP è un linguaggio per lo scripting server-side , ovvero un linguaggio che risiede in un server in remoto e che in fase di esecuzione interpreta le informazioni ricevute da un client tramite un Web server, le elabora e restituisce un risultato al client che ha formulato la richiesta. Supponiamo ad esempio di accedere ad una pagina di un sito Web in cui dobbiamo effettuare il login. Dal nostro browser all’interno della pagina (ad esempio www.nomesito.com/login) inseriremo le nostre credenziali per l’autenticazione. Semplificando il più possibile, le azioni che vengono compiute saranno le seguenti:
  • il browser effettua una richiesta con le credenziali al server remoto tramite il protocollo HTTP;
  • il Web server riceve la richiesta e la interpreta verificando che i dati inviati siano corretti;
  • il web server restituisce una risposta al client che potrà essere diversa a seconda del fatto che la risorsa richiesta sia disponibile o meno. Quello di cui si occupa PHP è appunto elaborare i dati veicolati tramite una richiesta HTTP e fornire un’adeguata risposta al client. Nel nostro caso il linguaggio avrà il compito di verificare che i dati di login siano corretti e restituire una risposta diversa a seconda della validità delle informazioni ricevute; tale meccanismo viene rappresentato dalla figura seguente. Figura 1. Richiesta client/server. PHP si differenzia dai linguaggi di scripting client side , come per esempio JavaScript, per via del fatto che il sorgente viene eseguito nel server , generando markup HTML da inviare al client; quest’ultimo riceverà i risultati dell’esecuzione di un’applicazione ma il codice eseguito non gli sarà mai visibile. E’ importante sottolineare fin da subito, per evitare confusioni ed interpretazioni errate, la profonda differenza esistente tra PHP o JavaScript, che sono veri e propri linguaggio di programmazione e HTML, che può essere inglobato nelle istruzioni di questi linguaggi o, come spiegato poco prima, essere l’output dell’esecuzione di uno di questi programmi, ma che non è un linguaggio di programmazione. L'HTML è un linguaggio di formattazione che descrive le modalità di impaginazione o visualizzazione grafica (layout) del contenuto, testuale e non, di una pagina web attraverso tag di formattazione. Sebbene l'HTML supporti l'inserimento di script e oggetti esterni quali immagini o filmati, non è un linguaggio di programmazione: non prevede alcuna definizione di variabili, strutture dati, funzioni, strutture di controllo ecc.; il suo codice è in grado soltanto di strutturare e decorare dati testuali. I documenti HTML vengono immagazzinati su macchine elaboratrici cosiddette server che sono costantemente collegate e connesse alla rete Internet. Su queste macchine è installato un software specifico che si occupa di produrre e inviare i documenti ai browser degli utenti che ne fanno richiesta usando il protocollo HTTP per il trasferimento dati.

STORIA E DEFINIZIONE

PHP nasce nel 1994 dalla tastiera di Rasmus Lerdorf; inizialmente esso veniva presentato come una serie di Common Gateway Interface (CGI) per binari scritti in C, al fine di tracciare il numero di visite all’interno di una homepage personale. Da qui il primo nome del PHP: Personal Home Page. In seguito però verrà rinominato in Hypertext Preprocessor , mantenendo tuttavia l’acronimo originale. Il linguaggio si diffuse velocemente presso la community Open Source, al punto che nel 1998 venne rilasciata la versione 3 che, alla fine dello stesso anno, coprirà circa il 10% dei server presenti in Rete. Nel 2000 verrà rilasciata la versione 4. Le release di PHP attualmente in uso sono le 5.6 – 7.0 – 7.1 – 7.2. Secondo gli ultimi aggiornamenti PHP risulta utilizzato in circa l’85% dei siti Web a livello mondiale, seguito da ASP. È di gran lunga il linguaggio server-side più usato e deve gran parte del suo successo alla sintassi molto simile al C e alla sua facilità di apprendimento. Caratteristiche e vantaggi del PHP Come detto, il PHP appartiene alla famiglia dei linguaggi C-Like, ovvero quei linguaggi la cui sintassi è molto simile a quella del C. Vediamo nella seguente tabella alcune differenze e similitudini tra quest’ultimo e PHP. Linguaggio C Linguaggio PHP Tipizzazioni molto forte Tipizzazione debole Paradigmi supportati: imperativo, procedurale, strutturato Paradigmi supportati: imperativo, funzionale, object-oriented, procedurale, riflessivo Supporta i puntatori Non supporta i puntatori Utilizzato principalmente per software Desktop Utilizzato principalmente per applicativi Web Operazioni con le stringhe particolarmente complicate Operazioni con le stringhe molto semplici da effettuare Non supporta I/O filesafe Supporta I/O filesafe Non supporta system calls Supporta system calls Tipi di dati numerici supportati: int8_t, u int8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, int, uint, char, uchar, short, ushort, long, ulong, long long, ulong long Tipi di dati numerici supportati: 32-bit signed int, 64-bit signed int (long integer) Tipi di dati float supportati: single precision float, double, long double Tipi di dati float supportati: double precision float Supporta array di dimensioni fisse Non supporta array di dimensioni fisse Non supporta array associativi Supporta array associativi

Il PHP è stato sviluppato principalmente per il Web, questo implica che la maggior parte delle sue caratteristiche sono state implementate in funzione di esso. Il linguaggio, ad esempio, consente di accedere in maniera semplicissima alle richieste HTTP di tipo GET e POST. La specifica HTTP definisce 9 tipi di metodi alcuni dei quali non sono però usati o supportati dal PHP; i più diffusi restano sicuramente i già citati GET e POST. GET è il metodo con cui vengono richieste la maggior parte delle informazioni ad un Web server, tali richieste vengono veicolate tramite query string, cioè la parte di un URL che contiene dei parametri da passare in input ad un’applicazione (ad esempio www.miosito.com/pagina-richiesta?id=123&page=3). Il metodo POST, invece, consente di inviare dati ad un server senza mostrarli in query string, è ad esempio il caso delle form. Un’altra caratteristica importante è l’accesso in lettura/scrittura ai cookie del browser e il supporto alle sessioni sul server. I cookie sono delle righe di testo usate per tenere traccia di informazioni relative ad un sito Web sul client dell’utente. Le sessioni sono utilizzate anch’esse per memorizzare informazioni relative all’utente, ma vengono salvate sul server e non sul client; esse vengono utilizzate, ad esempio, per gestire l’accesso a contenuti riservati da parte di utenti registrati. Questi argomenti verranno trattati in sezioni dedicate. PHP fornisce delle librerie per accedere alla maggior parte dei database (MySQL, Postgres, SQLite..), per interagire con i server Web (Apache..), per manipolare le immagini (GD), per effettuare connessioni remote (cUrl) e molto molto altro, inoltre, anche se nato come linguaggio per Web, potrà essere utilizzato come linguaggio per lo scripting da riga di comando. Uno dei punti di forza del PHP è la community molto attiva. Sono migliaia le librerie di terze parti che ampliano le funzionalità di base e, nella maggior parte dei casi, sono tutte rilasciate con licenza Open Source. Numerosissimi anche i framework sviluppati con questo linguaggio (Zend Framework, Symfony Framework, CakePHP..) così come anche i CMS (WordPress, Drupal, Joomla..). PHP è multipiattaforma , cioè può essere utilizzato sia in ambienti unix-based (Linux, Mac OSX) che su Windows. La combinazione più utilizzata, però, resta quella LAMP ovvero Linux come sistema operativo, Apache come Web server, MySQL per i database e PHP. Perché imparare PHP Perché è importante conoscere il PHP? Perché è il linguaggio di scripting lato server più utilizzato al Mondo e la richiesta di sviluppatori dotati di questa competenza è ancora in crescita; perché la curva di apprendimento rispetto ad altri linguaggi è molto meno ripida e sarà possibile divenire operativi in tempi più brevi; infine, fattore non secondario, perché PHP è Open Source.

AMPPS è un software che consente di installare automaticamente Apache, MySQL, PHP, il linguaggio Python e Softaculous (una script library che automatizza l’installazione di Web applications in un sito Internet). È una soluzione cross-platform, quindi installabile indipendentemente dal sistema operativo ed è l‘applicativo installato sulle macchine di laboratorio. WAMP è un development tool per Windows che installa e configura per noi Apache, MySQL e PHP. Utile l’interfaccia sulla barra vicino all’orologio di sistema con cui è possibile cambiare la versione dei vari software o abilitare/disabilitare le singole estensioni di Apache e PHP. XAMPP installa su tutti i sistemi operativi Apache, MySQL, PHP e Python, attraverso il Package management system Bitnami consente, come AMPPS, di installare sulla nostra macchina i principali CMS con qualche click. MAMP è nato per piattaforme Apple, in seguito però è stata rilasciata anche una versione per Windows. Contiene al suo interno Apache, MySQL, PHP, Python e il linguaggio PERL. Gli Editor di testo Per scrivere il codice dei nostri script non abbiamo bisogno di particolari software ma sarebbe sufficiente un qualsiasi editor di testo. È preferibile però utilizzare un editor che supporti l’ indentazione e la colorazione del codice , in maniera rendere più leggibili i sorgenti. Tra gli editor di testo più noti abbiamo:

  • Notepad++ per Windows (free);
  • PsPad per Windows (free);
  • Sublime per Windows, Linux e Mac (free);
  • Atom per Windows, Linux e Mac (free);
  • DreamWeaverper Windows e Mac (premium);
  • Codaper Mac (premium);
  • VIM per Linux, Windows e Mac (free). Notepad++ e PsPad sono stati probabilmente i più famosi editor per Windows. Entrambi consentono di installare plugin che aggiungono funzionalità e supporto ai vari linguaggi di programmazione. Sublime è un editor multipiattaforma che sta riscuotendo sempre più successo. I suoi punti di forza sono le prestazioni e un Package Manager che consente di personalizzare ampiamente sia le funzionalità che l’aspetto grafico del software. Atom è un software realizzato dai creatori del servizio per il code hosting GitHub che riprende molte delle feature di Sublime. È customizzabile in ogni sua forma e in continua evoluzione; è il software tra l’altro installato sulle macchine di laboratorio. Dreamweaver è l’editor di casa Adobe. Probabilmente uno degli editor premium più famosi e utilizzati di sempre.

Coda è un software per Mac molto potente. Uno dei suoi punti di forza è la possibilità di connettersi automaticamente in FTP o in SSH al server, oppure di eseguire direttamente query SQL sul nostro database. VIM è una versione più potente e con interfaccia grafica del famosissimo editor VI distribuito nella quasi totalità dei sistemi UNIX. Anch’esso è multipiattaforma. Gli IDE Nel caso in cui siano necessari strumenti più avanzati come l’ autocompletamento del codice , si potrebbe preferire un IDE al semplice editor di testo. Gli IDE ( Integrated Development Environment ) sono software che aiutano i programmatori a sviluppare codice attraverso l’autocompletamento delle funzioni, dei metodi, delle classi, tramite la colorazione del codice o la segnalazione di errori di sintassi senza dover eseguire il codice per individuarli. Alcuni degli IDE più noti sono i seguenti, tutti multipiattaforma:

  • PHPStorm (premium);
  • NetBeans (free);
  • Eclipse (free);
  • Aptana Studio (free);
  • Zend Studio (premium). PHPStorm è uno degli IDE più completi attualmente sul mercato. Nonostante il suo nome possa trarre in inganno, non supporta solo PHP ma vari linguaggi. Gli strumenti messi a disposizione sono davvero tantissimi così come le estensioni rilasciate dalla community. NetBeans e Eclipse nascono come IDE per sviluppare Java ma, grazie alla community rilasciano dei pacchetti che supportano PHP. Aptana Studio è un altro IDE orientato allo sviluppo Web, basato su Eclipse, fornisce un’interessante set di strumenti che semplificano la vita dello sviluppatore. Zend Studio è un ambiente di sviluppo anch’esso molto potente rilasciato da Zend, la software house che più ha contribuito negli anni al successo del PHP e che ha sviluppato Zend Framework.