Introduzione a PHP
402 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Qual è il ruolo di un server web nell'esecuzione di PHP?

Un server web interpreta il codice PHP e genera una pagina HTML da inviare al client.

Perché è comune utilizzare un database con PHP?

È comune perché PHP gestisce frequentemente dati dinamici che richiedono un database per l'acquisizione e la modifica.

Cosa fa un interprete PHP quando riceve un file PHP?

L'interprete PHP esegue il codice contenuto nel file e genera una risposta HTML.

Quali componenti sono inclusi in un pacchetto come XAMPP?

<p>XAMPP include un server Apache, un interprete PHP e un database MySQL o MariaDB.</p> Signup and view all the answers

Come puoi eseguire un file PHP localmente?

<p>Puoi utilizzare un ambiente di sviluppo come Visual Studio Code che avvia un server web integrato.</p> Signup and view all the answers

Qual è la struttura di un file PHP e quali tag sono usati?

<p>Un file PHP utilizza tag di apertura e chiusura simili a quelli HTML per racchiudere il codice PHP.</p> Signup and view all the answers

Perché un server web non invia direttamente file PHP al client?

<p>Perché i file PHP devono essere eseguiti dall'interprete PHP per generare una pagina HTML dinamica.</p> Signup and view all the answers

Quali sono i più diffusi server web per eseguire PHP?

<p>I più diffusi server web per eseguire PHP sono Apache e Nginx.</p> Signup and view all the answers

Quali operazioni può effettuare PHP con un database?

<p>PHP può acquisire, modificare e interrogare dati in un database.</p> Signup and view all the answers

In cosa è simile la sintassi di PHP rispetto a JavaScript?

<p>La sintassi di PHP è simile a quella di JavaScript nella struttura dei controlli di flusso come i cicli.</p> Signup and view all the answers

Qual è la principale caratteristica che distingue PHP da altri linguaggi di scripting?

<p>PHP è un linguaggio server-side, eseguito principalmente sul server.</p> Signup and view all the answers

Cosa rende PHP un linguaggio open source vantaggioso per lo sviluppo?

<p>Essendo open source, PHP è estensibile e supportato da una comunità attiva di sviluppatori.</p> Signup and view all the answers

In che modo PHP può essere utilizzato senza un server web?

<p>PHP può essere eseguito localmente su una macchina con un interprete PHP installato.</p> Signup and view all the answers

Quando è stata rilasciata la prima versione di PHP e qual è l'attuale versione supportata?

<p>La prima versione di PHP è stata rilasciata nel 1995; l'attuale versione supportata è la 8.3.</p> Signup and view all the answers

Qual è la durata del supporto per ciascuna versione di PHP e quali attività sono svolte in quegli anni?

<p>Ogni versione ha un supporto di circa tre anni: i primi due anni per nuove funzionalità, l'ultimo per risolvere problemi di sicurezza e bug.</p> Signup and view all the answers

Perché le versioni di PHP precedenti alla 8 non dovrebbero essere utilizzate in produzione?

<p>Le versioni precedenti alla 8 sono obsolete e non ricevono più supporto, comportando rischi di sicurezza.</p> Signup and view all the answers

Quale versione di PHP non è mai stata ufficialmente rilasciata e perché?

<p>La versione 6 non è mai stata rilasciata a causa di disaccordi interni sulla direzione del linguaggio.</p> Signup and view all the answers

Quali sistemi operativi supportano PHP e cosa implica questa caratteristica?

<p>PHP è multi-piattaforma e supporta Linux, Windows, Mac OS, tra gli altri.</p> Signup and view all the answers

Come si distingue PHP nella formazione rispetto ad altri linguaggi più recenti?

<p>Molte funzionalità di PHP sono comuni da almeno dieci anni, come quelle delle versioni 5.4 e 5.6.</p> Signup and view all the answers

Qual è la relazione tra PHP e la comunità di sviluppatori riguardo alla documentazione?

<p>La comunità di sviluppatori fornisce una notevole quantità di documentazione e risorse attraverso il sito <a href="http://www.php.net">www.php.net</a>.</p> Signup and view all the answers

Qual è il simbolo utilizzato per dichiarare le variabili in PHP?

<p>$</p> Signup and view all the answers

Cosa significa che PHP è case-sensitive in relazione alle variabili?

<p>Significa che $Top e $top sono considerate due variabili diverse.</p> Signup and view all the answers

Quali sono i caratteri permessi per creare identificatori in PHP?

<p>Caratteri alfanumerici e underscore (_), non possono iniziare con un numero.</p> Signup and view all the answers

Qual è il valore predefinito assegnato a una variabile non inizializzata in PHP?

<p>0 per gli interi, 0.0 per i float, e stringa vuota per le stringhe.</p> Signup and view all the answers

Che funzione si usa per verificare se una variabile è stata settata in PHP?

<p>isset()</p> Signup and view all the answers

In PHP, quali sono i tipi di dati scalari supportati?

<p>Booleani, interi, numeri in virgola mobile e stringhe.</p> Signup and view all the answers

Cos'è la funzione unset() in PHP?

<p>Rimuove una variabile e la rende non esistente.</p> Signup and view all the answers

Quale tipo di caratteri è consigliato utilizzare per evitare problemi di compatibilità in PHP?

<p>Caratteri standard dell'alfabeto ASCII.</p> Signup and view all the answers

Qual è la principale differenza tra le versioni di PHP dalla 5 all'8?

<p>La versione 8 introduce caratteristiche più avanzate e miglioramenti nelle performance.</p> Signup and view all the answers

Quale simbolo può essere utilizzato per commenti su singola riga in PHP oltre a '//'?

<h1></h1> Signup and view all the answers

Qual è la differenza tra l'uso di singoli e doppi apici per le stringhe in PHP?

<p>I doppi apici espandono le variabili all'interno della stringa, mentre i singoli apici non lo fanno.</p> Signup and view all the answers

Cosa restituisce la funzione gettype() in PHP?

<p>Restituisce il tipo di una variabile.</p> Signup and view all the answers

Come si può rappresentare un numero intero in base ottale in PHP?

<p>Un numero intero in base ottale è prefissato da 0.</p> Signup and view all the answers

Cosa succede a un numero intero in caso di overflow in PHP?

<p>Il numero intero viene automaticamente convertito in un numero a virgola mobile (float).</p> Signup and view all the answers

Quale funzione si può utilizzare per gestire gli errori di arrotondamento in PHP?

<p>Si può utilizzare la funzione round() o floor().</p> Signup and view all the answers

Cosa deve essere fatto per usare apici all'interno di una stringa con doppi apici?

<p>Gli apici devono essere 'escapati' con il backslash ().</p> Signup and view all the answers

Cosa fa la funzione var_dump() in PHP?

<p>Stampa sia il tipo che il valore di una variabile.</p> Signup and view all the answers

Qual è il formato di una stringa HEREDOC in PHP?

<p>Una stringa HEREDOC inizia con una etichetta di apertura seguita da un ritorno a capo, e termina con la stessa etichetta su una nuova riga.</p> Signup and view all the answers

Come si definisce un numero binario in PHP?

<p>Un numero binario è prefissato da 0b.</p> Signup and view all the answers

Qual è l'importanza della funzione is_int() in PHP?

<p>is_int() verifica se una variabile è di tipo intero.</p> Signup and view all the answers

Qual è la differenza tra HEREDOC e NOWDOC in PHP?

<p>HEREDOC permette l'espansione delle variabili, mentre NOWDOC no.</p> Signup and view all the answers

Come si escapano gli apici all'interno di una stringa racchiusa da doppi apici in PHP?

<p>Si utilizzano il backslash (&quot;) prima dell'apice.</p> Signup and view all the answers

Cosa succede se si utilizza una variabile all'interno di una stringa racchiusa da singoli apici in PHP?

<p>La variabile non viene espansa e viene stampato il suo nome invece del suo valore.</p> Signup and view all the answers

Cos'è una stringa HEREDOC e come si inizia?

<p>Una stringa HEREDOC è un tipo di stringa multilinea che inizia con un identificatore self-defined seguito da una nuova linea.</p> Signup and view all the answers

Perché è importante conoscere la differenza tra l'uso di singoli e doppi apici per le stringhe in PHP?

<p>Influenza il modo in cui vengono interpretate le variabili e gli escape sequences.</p> Signup and view all the answers

Qual è il simbolo utilizzato per creare variabili variabili in PHP?

<p>$$</p> Signup and view all the answers

Come si definisce un array numerico in PHP?

<p>$array = array(3, 2, 5);</p> Signup and view all the answers

Qual è la funzione da utilizzare per trasformare un array in una stringa separata da un delimitatore?

<p>implode()</p> Signup and view all the answers

Quale funzione ordina un array associativo in base ai valori?

<p>asort()</p> Signup and view all the answers

Cosa restituisce la funzione explode() in PHP?

<p>Un array</p> Signup and view all the answers

Come si aggiunge un elemento alla fine di un array in PHP?

<p>$array[] = -1;</p> Signup and view all the answers

Qual è il risultato di un'operazione di overflow di un numero intero in PHP?

<p>Diventa un numero negativo</p> Signup and view all the answers

Qual è la sintassi per definire un array associativo in PHP?

<p>$albo = array(&quot;nome&quot; =&gt; &quot;Topolino&quot;, &quot;anno&quot; =&gt; 1949);</p> Signup and view all the answers

Qual è la funzione che ordina un array numerico in ordine decrescente?

<p>rsort()</p> Signup and view all the answers

Cosa rappresenta il simbolo '$' in PHP?

<p>Il simbolo per dichiarare le variabili</p> Signup and view all the answers

Qual è la differenza principale tra il metodo GET e il metodo POST nell'invio di un form?

<p>Il metodo GET invia i dati come parte dell'URL, mentre il metodo POST invia i dati nel corpo della richiesta.</p> Signup and view all the answers

Come vengono rappresentati i caratteri speciali in una URL quando si utilizza il metodo GET?

<p>I caratteri speciali sono rappresentati utilizzando la notazione %xx, dove xx è il codice esadecimale del carattere.</p> Signup and view all the answers

Cosa accade se nel valore di un campo di un form ci sono caratteri come '=' o '&'?

<p>Questi caratteri devono essere codificati per evitare ambiguità, usando la notazione % per '=' e %26 per '&amp;'.</p> Signup and view all the answers

Quale simbolo viene utilizzato per rappresentare uno spazio in una stringa URL codificata?

<p>Nella codifica x-www-form-urlencoded, uno spazio è rappresentato dal simbolo +.</p> Signup and view all the answers

Qual è l'importanza della codifica dei caratteri in PHP quando si usano form?

<p>La codifica assicura che i dati vengano trasmessi correttamente e siano interpretati senza ambiguità dal server.</p> Signup and view all the answers

Quale file gestisce i dati inviati tramite un form utilizzando il metodo GET in PHP?

<p>Il file specificato nell'URL, come ad esempio lab7.1.php.</p> Signup and view all the answers

Cosa rappresenta la stringa %20 nei parametri URL?

<p>La stringa %20 rappresenta uno spazio codificato in URL.</p> Signup and view all the answers

Perché si utilizza la codifica esadecimale per i caratteri speciali nelle URL?

<p>La codifica esadecimale rappresenta il codice Latin-1 e garantisce la corretta trasmissione dei dati.</p> Signup and view all the answers

In che modo vengono separati i valori di più campi in una URL quando si utilizza il metodo GET?

<p>I valori dei campi sono separati dal carattere &amp; (e-commerciale).</p> Signup and view all the answers

Come si comporta PHP quando non vengono codificati correttamente i dati in un form?

<p>PHP potrebbe non interpretare correttamente i dati, causando errori nella gestione delle informazioni.</p> Signup and view all the answers

Come vengono codificati i caratteri speciali nello URI per il nome e cognome 'Marco Noè'?

<p>Lo spazio viene sostituito da + e la é da %E8.</p> Signup and view all the answers

Qual è la differenza principale tra i metodi GET e POST in termini di invio di dati?

<p>Il metodo GET invia i dati tramite la URL, mentre il metodo POST li invia nel corpo della richiesta.</p> Signup and view all the answers

Quale intestazione HTTP è tipicamente presente nelle richieste POST per specificare il tipo di dati inviati?

<p>L'intestazione Content-Type specifica il tipo di codifica dei dati.</p> Signup and view all the answers

Cosa indica il formato 'multipart/form-data' nella codifica dei dati?

<p>È utilizzato per inviare file o più sezioni di dati in una richiesta.</p> Signup and view all the answers

Com'è formata l'URI per una richiesta GET a insaula.php con i parametri NUM e Sede?

<p>L'URI sarà simile a /insaula.php?NUM=12A&amp;Sede=Sede+centrale.</p> Signup and view all the answers

Qual è la codifica predefinita utilizzata per il metodo POST?

<p>La codifica predefinita è x-www-form-urlencoded.</p> Signup and view all the answers

Che funzione svolgono gli array globali $_GET e $_POST in PHP?

<p>Permettono di accedere ai parametri inviati dai form in modo semplice.</p> Signup and view all the answers

Come vengono rappresentati i caratteri non ASCII nelle richieste URI?

<p>Vengono codificati in percentuale, ad esempio la è diventa %E8.</p> Signup and view all the answers

Quale vantaggio offre il metodo POST rispetto al metodo GET per l'invio di dati?

<p>Il metodo POST non mostra i dati nella URL, offrendo maggiore sicurezza.</p> Signup and view all the answers

Quale valore di Content-Length potrebbe presentarsi in una richiesta POST?

<p>Content-Length potrebbe indicare il numero di byte dei dati inviati nel body.</p> Signup and view all the answers

Qual è il rischio principale associato ai controlli solamente lato client nei form?

<p>I controlli lato client possono essere bypassati da utenti malevoli che manipolano il form, compromettere la sicurezza dei dati.</p> Signup and view all the answers

Perché è consigliato gestire l'input delle checkbox sul server in modo specifico?

<p>Poiché le checkbox possono avere diverse combinazioni di selezione, il server deve gestire correttamente queste variazioni per evitare bug.</p> Signup and view all the answers

Qual è la differenza di gestione tra un campo di input di tipo radio e checkbox per il server?

<p>Il campo radio permette una sola selezione, mentre le checkbox consentono selezioni multiple o nessuna.</p> Signup and view all the answers

Perché è preferibile usare il metodo POST per l'upload di file rispetto al metodo GET?

<p>Il metodo POST supporta l'invio di file di grandi dimensioni, mentre il GET ha limitazioni sulla lunghezza della query string.</p> Signup and view all the answers

Cosa implica la codifica 'multipart/form-data' nella gestione dei file?

<p>Permette l'invio diretto dei byte del file senza codifiche, facilitando il caricamento di file sul server.</p> Signup and view all the answers

Qual è un potenziale problema quando si assume che un dato sia sempre presente nei form?

<p>Si potrebbero generare errori o bug se i dati non vengono effettivamente inviati.</p> Signup and view all the answers

In che modo un controllo JavaScript sui dati influisce sulla sicurezza dei dati inviati?

<p>Poiché i controlli JavaScript possono essere facilmente aggirati, non fornendo una protezione adeguata per i dati inviati.</p> Signup and view all the answers

Qual è il ruolo della severità nel gestire gli errori di input tramite form?

<p>Il server deve essere in grado di gestire errori di input in modo robusto per evitare crash o comportamenti imprevisti.</p> Signup and view all the answers

Perché i controlli di integrità dei dati sono essenziali nel contesto dei file upload?

<p>Per garantire che solo file validi e previsti vengano accettati dal server, evitando potenziali attacchi.</p> Signup and view all the answers

Qual è la differenza principale tra controlli lato client e controlli lato server?

<p>I controlli lato client sono suscettibili a manipolazione, mentre quelli lato server garantiscono la sicurezza dei dati.</p> Signup and view all the answers

Qual è la funzione della riga vuota nella sintassi HTTP?

<p>Separare l'header dal body del messaggio HTTP.</p> Signup and view all the answers

Cosa caratterizza la codifica multipart/form-data rispetto a quella URL encoded?

<p>Gli elementi del form sono separati in parti distinte nel body del messaggio, non vengono codificati come in <code>URL encoded</code>.</p> Signup and view all the answers

Qual è la funzione del boundary in una richiesta multipart/form-data?

<p>Definire le delimitazioni tra le diverse parti del form nel body del messaggio.</p> Signup and view all the answers

Cosa indica la presenza del -- dopo un boundary finale nel multipart/form-data?

<p>Segna la conclusione del messaggio e indica che non ci sono altre parti da elaborare.</p> Signup and view all the answers

In che modo deve essere gestito il caso in cui un dato non venga inviato in un form?

<p>Lo sviluppatore deve prevedere che il dato possa non essere presente per garantire la robustezza della pagina.</p> Signup and view all the answers

Quale informazione deve essere presente nell'header quando si utilizza multipart/form-data?

<p>Il <code>Content-Type</code> deve essere impostato su <code>multipart/form-data</code>.</p> Signup and view all the answers

Che cosa rappresentano i campi Accept e Referer nell'header HTTP?

<p><code>Accept</code> specifica i tipi di contenuto che il client può ricevere, mentre <code>Referer</code> indica da quale pagina proviene la richiesta.</p> Signup and view all the answers

Cosa accade alla codifica dello spazio con multipart/form-data?

<p>Lo spazio rimane invariato e non viene sostituito con il carattere <code>+</code>.</p> Signup and view all the answers

Quale valore rappresenta nella richiesta multipart/form-data, un campo come NUM con valore 12A?

<p>Un campo del form che contiene dati inviati dal client al server.</p> Signup and view all the answers

In cosa consiste la sequenza di caratteri detta boundary in un form?

<p>È una sequenza unica utilizzata per delimitare le parti inviate in un form multipart.</p> Signup and view all the answers

Qual è un vantaggio significativo della visibilità dei parametri nella query string del metodo GET?

<p>Consente un debug più facile e la modifica diretta dell'URI per osservare le varie risposte del server.</p> Signup and view all the answers

Qual è il motivo principale per cui si utilizza il metodo POST invece di GET per inviare dati di grandi dimensioni?

<p>POST non ha limiti sulle dimensioni dei dati che possono essere inviati, a differenza di GET.</p> Signup and view all the answers

In che modo il metodo POST offre vantaggi in termini di privacy rispetto al metodo GET?

<p>POST non lascia tracce visibili nell'URI, rendendo i dati più protetti durante la trasmissione.</p> Signup and view all the answers

Qual è la funzione di un interprete, come PHP, nel contesto di una richiesta web dinamica?

<p>L'interprete elabora le richieste e restituisce pagine HTML interattive al browser dell'utente.</p> Signup and view all the answers

Qual è la caratteristica comune a molte tecnologie server-side nella generazione di pagine web dinamiche?

<p>Il server riceve una richiesta dal browser, la elabora e restituisce una pagina HTML, spesso interagendo con un database.</p> Signup and view all the answers

Perché, in determinate situazioni, è preferibile utilizzare un linguaggio lato server come Python o JavaScript rispetto a PHP?

<p>Dipende dal contesto applicativo e dalle specifiche esigenze di sviluppo, poiché ogni linguaggio ha i propri punti di forza.</p> Signup and view all the answers

Qual è il principale limite del metodo GET in relazione alla quantità di dati che può gestire?

<p>GET di solito non supera alcuni migliaia di caratteri per la trasmissione dei dati.</p> Signup and view all the answers

In cosa si distingue la risposta del server quando si utilizzano metodi come GET o POST?

<p>La risposta può variare in base alla visibilità e alla quantità di dati trasmessi, influenzando l'interazione con l'utente.</p> Signup and view all the answers

Qual è l'importanza della compatibilità con diversi sistemi operativi per PHP?

<p>Consente agli sviluppatori di utilizzare PHP su vari ambienti, facilitando la sua diffusione e adottabilità.</p> Signup and view all the answers

Come può un interprete come PHP interagire con un database durante l'elaborazione di una richiesta?

<p>Può recuperare o memorizzare dati, permettendo di generare contenuti personalizzati per gli utenti.</p> Signup and view all the answers

Qual è l'effetto di trasmettere un file su una dimensione notevolmente aumentata?

<p>Trasmettere un file può triplicarne la dimensione, il che è problematico.</p> Signup and view all the answers

Che cosa permette il metodo multipart nel contesto della trasmissione di file?

<p>Il multipart permette di trasmettere un file specificando il tipo di codifica attraverso un form.</p> Signup and view all the answers

Qual è la funzione del boundary nel formato multipart MIME?

<p>Il boundary serve a delimitare le diverse parti del contenuto nel messaggio multipart.</p> Signup and view all the answers

Quali vantaggi offre il metodo GET rispetto al metodo POST?

<p>Il metodo GET offre maggiore comprensibilità e supporta caching e indicizzazione.</p> Signup and view all the answers

In quali situazioni è obbligatorio utilizzare il metodo POST?

<p>Il metodo POST è obbligatorio quando si devono trasmettere file.</p> Signup and view all the answers

Come è strutturata una richiesta multipart con un file e controlli di tipo testo?

<p>La richiesta contiene un controllo file e altri controlli, ognuno separato da boundary.</p> Signup and view all the answers

Quali informazioni specifica il controllo file nella richiesta multipart?

<p>Il controllo file specifica il tipo di contenuto e il nome del file, come 'text/plain'.</p> Signup and view all the answers

Perché è importante la scelta tra i metodi GET e POST nel trasferimento di dati?

<p>La scelta influisce sulla chiarezza dell'azione utente e sulle capacità di caching.</p> Signup and view all the answers

Cosa rappresenta il valore '3' nel controllo di tipo testo chiamato numeroCopie?

<p>Rappresenta il numero di copie del file da inviare o elaborare.</p> Signup and view all the answers

Qual è la sintassi per terminare un messaggio multipart?

<p>Un messaggio multipart termina con un boundary seguito da '--'.</p> Signup and view all the answers

Qual è il motivo principale per cui si utilizza la codifica multipart quando si trasmette un file?

<p>La codifica multipart è necessaria per evitare che un file possa triplicare la sua dimensione durante la trasmissione.</p> Signup and view all the answers

Cosa rappresenta il controllo 'numeroCopie' in un form multipart?

<p>Il controllo 'numeroCopie' rappresenta il numero di copie del file che l'utente desidera inviare, impostato dall'utente a 3 nel nostro esempio.</p> Signup and view all the answers

Qual è la differenza principale tra i metodi GET e POST nel contesto della trasmissione di file?

<p>Il metodo POST è obbligatorio per la trasmissione di file, mentre GET può essere utilizzato per trasmettere dati semplici e offre vantaggi come il caching.</p> Signup and view all the answers

Che ruolo gioca il boundary in una richiesta multipart?

<p>Il boundary funge da delimitatore che separa le varie parti della richiesta, permettendo una corretta interpretazione del contenuto.</p> Signup and view all the answers

Perché a volte è vantaggioso utilizzare il metodo GET nei form?

<p>Il metodo GET rende più chiaro all'utente cosa sta facendo, oltre a permettere caching e indicizzazione delle richieste.</p> Signup and view all the answers

Cosa accade se si tenta di trasmettere un file di dimensioni notevoli senza multipart?

<p>Il file potrebbe triplicare la sua dimensione, rendendo difficile o impossibile la sua trasmissione senza la codifica multipart.</p> Signup and view all the answers

Qual è la rappresentazione del contenuto del file in un messaggio HTTP multipart?

<p>Il contenuto del file è rappresentato come form-data in cui il nome del controllo è myFile e il contenuto è in formato text/plain.</p> Signup and view all the answers

Qual è uno degli svantaggi relativi al metodo GET?

<p>Un possibile svantaggio del metodo GET è che può esporre parametri sensibili nell'URL, compromettendo la sicurezza.</p> Signup and view all the answers

Cosa indica la conclusione di una parte in un messaggio multipart?

<p>La conclusione di una parte è indicata da un boundary seguito da --, che segnala la fine del body del messaggio.</p> Signup and view all the answers

Qual è il principale limite del metodo GET in termini di quantità di dati?

<p>Il metodo GET ha un limite di qualche migliaio di caratteri per la quantità di dati inviabili.</p> Signup and view all the answers

Cosa si intende per 'file di piccole dimensioni' nel contesto della trasmissione?

<p>Un file di piccole dimensioni in questo contesto è descritto come contenente solo una riga di testo, come '8, 2.3, 12, 2.3'.</p> Signup and view all the answers

In quali situazioni è preferibile utilizzare il metodo POST rispetto a GET?

<p>Il metodo POST è preferibile quando si devono inviare molti dati o file di grandi dimensioni.</p> Signup and view all the answers

Qual è la caratteristica distintiva del web dinamico rispetto a quello statico?

<p>Il web dinamico risponde in tempo reale alle richieste dell'utente e può variare il contenuto in base a variabili esterne.</p> Signup and view all the answers

Quali tecnologie di scripting server-side sono comunemente utilizzate insieme a PHP?

<p>Oltre a PHP, linguaggi come Python, Perl e JavaScript sono comunemente utilizzati.</p> Signup and view all the answers

Cosa suggerisce l'utilizzo di framework e librerie nello sviluppo web?

<p>L'uso di framework e librerie permette di scrivere codice in modo più efficiente e robusto.</p> Signup and view all the answers

Qual è uno dei principali svantaggi del web dinamico riguardo al caching?

<p>La difficoltà nel fare caching e bookmarking delle pagine è un grande svantaggio del web dinamico.</p> Signup and view all the answers

Quale messaggio HTTP indica una risorsa non trovata e come viene restituito tramite PHP?

<p>Il messaggio HTTP che indica una risorsa non trovata è il famoso errore 404, restituito tramite uno status di errore in PHP.</p> Signup and view all the answers

Per quale motivo l'approccio CGI è considerato superato nel contesto attuale dello sviluppo web?

<p>L'approccio CGI richiede molte risorse ed è stato soppiantato da metodi di scripting più efficienti.</p> Signup and view all the answers

Qual è il ruolo dell’header HTTP Content-Type in un’applicazione PHP?

<p>L'header HTTP Content-Type indica il tipo di contenuto che viene restituito al browser, come ad esempio 'text/html'.</p> Signup and view all the answers

Che tipo di operazioni complesse può eseguire un server nel contesto del web dinamico?

<p>Il server può eseguire operazioni complesse e interagire con un database per elaborare richieste specifiche.</p> Signup and view all the answers

Qual è la funzione del ciclo foreach in PHP quando si lavora con gli array associativi?

<p>Permette di scorrere gli elementi dell'array associativo in modo semplice ed efficiente, accedendo sia alle chiavi che ai valori.</p> Signup and view all the answers

Come si accede a un valore in un array associativo in PHP?

<p>Utilizzando la sintassi $vocab['chiave'], dove 'chiave' rappresenta l'elemento desiderato nell'array.</p> Signup and view all the answers

Cosa fa il ciclo for nel contesto del codice fornito?

<p>Inizializza l'array con una serie di stringhe, incrementando la variabile fino a 10.</p> Signup and view all the answers

Qual è la differenza tra l'utilizzo di foreach e un ciclo for tradizionale in PHP?

<p>Foreach gestisce automaticamente l'indice e scorre direttamente sugli elementi, mentre for richiede la gestione manuale degli indici.</p> Signup and view all the answers

Come si possono stampare sia chiavi che valori di un array associativo utilizzando foreach?

<p>Si utilizza la sintassi foreach ($array as $chiave =&gt; $valore) per estrarre entrambi durante l'iterazione.</p> Signup and view all the answers

In quale situazione è comune utilizzare gli array associativi in PHP?

<p>È comune usarli per rappresentare coppie chiave-valore, come un dizionario o un vocabolario.</p> Signup and view all the answers

Cosa rappresenta 'giallo' e 'yellow' nell'esempio di vocabolario in PHP?

<p>'giallo' è la chiave italiana e 'yellow' è il valore corrispondente in inglese nell'array associativo.</p> Signup and view all the answers

Qual è l'importanza della sintassi as chiave => valore all'interno di foreach?

<p>Questa sintassi consente di associare chiaramente ogni valore alla sua chiave durante l'iterazione dell'array.</p> Signup and view all the answers

Cosa si intende per 'gestione implicita' degli indici nel ciclo foreach?

<p>Significa che il ciclo foreach si occupa di incrementare automaticamente l'indice per ogni iterazione.</p> Signup and view all the answers

Cosa stamperebbe il ciclo foreach nel caso di un array contenente 'test1' a 'test10'?

<p>Stamperebbe i valori test1, test2, ..., test10 in sequenza sulla pagina.</p> Signup and view all the answers

Qual è la differenza tra l'uso della funzione count() su un array monodimensionale rispetto a un array multidimensionale?

<p>La funzione <code>count()</code> su un array monodimensionale restituisce semplicemente il numero totale di elementi, mentre su un array multidimensionale può utilizzare il flag <code>COUNT_RECURSIVE</code> per contare gli elementi anche nelle sottodimensioni.</p> Signup and view all the answers

Perché è consigliato calcolare la lunghezza di un array una sola volta in un ciclo for invece di farlo ad ogni iterazione?

<p>Calcolare la lunghezza dell'array una sola volta è più efficiente perché evita il costo computazionale di chiamare <code>count()</code> ripetutamente in un ciclo.</p> Signup and view all the answers

Quali funzioni vengono utilizzate per manipolare l'indice di un array in PHP e quali sono le loro funzioni principali?

<p>Le funzioni sono <code>reset()</code>, <code>end()</code>, <code>next()</code>, <code>prev()</code>, <code>key()</code> e <code>current()</code>, che servono rispettivamente per riportare l'indice all'inizio, posizionarlo alla fine, avanzare o retrocedere nell'array, e per ottenere la chiave o il valore corrente.</p> Signup and view all the answers

Cosa succede se si utilizza un ciclo while con key() per scorrere un array fino a quando restituisce null?

<p>Il ciclo <code>while</code> continuerà a iterare finché la chiave corrente non sarà <code>null</code>, permettendo di accedere a tutti gli elementi dell'array in modo sequenziale.</p> Signup and view all the answers

Cosa rappresentano le chiavi e i valori in un array associativo e come vengono stampati usando printf?

<p>Le chiavi rappresentano identificatori unici per ogni valore associato e possono essere stampate utilizzando <code>printf</code> con il formato <code>%s</code> per visualizzare sia la chiave che il valore associato correttamente.</p> Signup and view all the answers

Quale vantaggio offre la funzione each() e perché è stata deprecata a partire da PHP 8.0?

<p><code>each()</code> restituiva sia la chiave che il valore dell'elemento corrente, ma è stata deprecata perché la funzione <code>foreach</code> offre una soluzione più semplice e diretta per iterare su array.</p> Signup and view all the answers

Come si può stampare un array in ordine inverso utilizzando le funzioni appropriate in PHP?

<p>Si può utilizzare <code>end()</code> per posizionare l'indice alla fine dell'array e poi utilizzare un ciclo <code>while</code> con <code>prev()</code> per retrocedere attraverso gli elementi.</p> Signup and view all the answers

Qual è l'importanza di racchiudere variabili complesse tra parentesi graffe in PHP durante la stampa?

<p>Racchiudere variabili complesse tra parentesi graffe garantisce la corretta visualizzazione e interpreta correttamente il contesto delle variabili all'interno delle stringhe.</p> Signup and view all the answers

Quali sono le implicazioni di una struttura ciclica nella leggibilità e nell'efficienza del codice?

<p>Una struttura ciclica ben scritta migliora la leggibilità del codice, mentre l'efficienza è aumentata scegliendo cicli appropriati che minimizzano le chiamate a funzioni come <code>count()</code>.</p> Signup and view all the answers

Come possiamo utilizzare la funzione printf per visualizzare i valori di un array associativo in modo formattato?

<p>Utilizzando <code>printf</code>, possiamo stampare ogni chiave e valore dell'array associativo specificando il formato <code>%s</code> per ciascuno in un ciclo che itera attraverso l'array.</p> Signup and view all the answers

Perché è fondamentale la sanitizzazione dell'input in un'applicazione web?

<p>È fondamentale per prevenire attacchi informatici e garantire la sicurezza dei dati ricevuti dal server.</p> Signup and view all the answers

Qual è il risultato della funzione trim() su una stringa con spazi iniziali e finali?

<p>La funzione <code>trim()</code> restituisce la stessa stringa eliminando gli spazi all'inizio e alla fine.</p> Signup and view all the answers

Quali caratteri potrebbero causare problemi negli input degli utenti per i nomi di file?

<p>Gli spazi e caratteri speciali possono causare malfunzionamenti e interpretazioni errate.</p> Signup and view all the answers

Qual è un approccio comune per evitare problemi di sanitizzazione degli input?

<p>Un approccio comune è usare funzioni che eliminano spazi e caratteri indesiderati dai dati di input.</p> Signup and view all the answers

Come può un input con uno spazio inaspettato influenzare l'esecuzione di un comando in un sistema operativo?

<p>Può essere interpretato come la fine del comando, portando a malfunzionamenti.</p> Signup and view all the answers

Che ruolo svolge la funzione trim() nel migliorare la robustezza del codice?

<p>Aiuta a garantire che gli input non contengano spazi indesiderati che potrebbero causare errori.</p> Signup and view all the answers

Qual è l'importanza di avere controllo sugli input ricevuti dagli utenti?

<p>È essenziale per evitare dati non validi che possono compromettere il funzionamento dell'applicazione.</p> Signup and view all the answers

In quali modi possono essere sanitizzati gli input in un'applicazione PHP?

<p>Gli input possono essere sanitizzati rimuovendo spazi indesiderati e verificando il tipo di dato.</p> Signup and view all the answers

Quali sono i rischi associati a input non sanitizzati in un'applicazione web?

<p>Gli input non sanitizzati possono portare a vulnerabilità come attacchi di tipo SQL injection.</p> Signup and view all the answers

Cosa succede se un nome di file contiene spazi e viene processato?

<p>Il sistema potrebbe interpretare gli spazi come separatori di comandi, causando malfunzionamenti.</p> Signup and view all the answers

Quali sono i principali casi in cui una variabile è considerata vuota in PHP?

<p>Una variabile è considerata vuota se è una stringa vuota, l'intero 0, il valore null, false, un array vuoto, o una variabile non inizializzata.</p> Signup and view all the answers

Qual è la funzione di FILTER_VALIDATE_EMAIL in PHP?

<p>FILTER_VALIDATE_EMAIL verifica se una stringa è un'email valida e restituisce true se lo è, false altrimenti.</p> Signup and view all the answers

Cosa rimuove la funzione FILTER_SANITIZE_EMAIL?

<p>FILTER_SANITIZE_EMAIL rimuove i caratteri non validi da un indirizzo email.</p> Signup and view all the answers

In quale caso si utilizza FILTER_NULL_ON_FAILURE?

<p>FILTER_NULL_ON_FAILURE è usato per restituire null in caso di fallimento dell'operazione di filtraggio invece di false.</p> Signup and view all the answers

Cosa verifica FILTER_VALIDATE_IP in PHP?

<p>FILTER_VALIDATE_IP verifica se un valore è un indirizzo IP valido (sia IPv4 che IPv6).</p> Signup and view all the answers

Che ruolo svolge FILTER_VALIDATE_BOOLEAN in PHP?

<p>FILTER_VALIDATE_BOOLEAN verifica se un valore corrisponde a un valore booleano, restituendo true o false a seconda dell'input.</p> Signup and view all the answers

Qual è l'importanza di utilizzare espressioni regolari con FILTER_VALIDATE_REGEXP?

<p>FILTER_VALIDATE_REGEXP consente di creare filtri personalizzati per verificare se i dati corrispondono a espressioni regolari specifiche.</p> Signup and view all the answers

Quale filtro utilizzeresti per validare un URL in PHP?

<p>Utilizzerei FILTER_VALIDATE_URL per verificare se una stringa è un URL valido.</p> Signup and view all the answers

Cosa restituisce FILTER_VALIDATE_FLOAT se il valore non è valido?

<p>FILTER_VALIDATE_FLOAT restituisce false se il valore non è un numero in virgola mobile valido.</p> Signup and view all the answers

Come viene gestita la validazione degli interi con FILTER_VALIDATE_INT?

<p>FILTER_VALIDATE_INT verifica se un valore è un numero intero, con possibilità di specificare un range minimo e massimo.</p> Signup and view all the answers

Quale problema si presenta fino alla versione 5.4.11 di PHP riguardo ai valori +0 e -0 nel contesto dei float?

<p>Fino a tale versione, i valori +0 e -0 non venivano considerati validi per il tipo float.</p> Signup and view all the answers

Come può filter_var essere utilizzato per validare un'email?

<p>filter_var può essere utilizzato con FILTER_VALIDATE_EMAIL per controllare la sintassi dell'indirizzo email.</p> Signup and view all the answers

In che modo viene effettuato il controllo sulla variabile 'cognome' in un array in PHP?

<p>Si utilizza la funzione isset per verificare se $_GET['cognome'] esiste.</p> Signup and view all the answers

Qual è l'importanza del filtro FILTER_VALIDATE_INT con le opzioni min_range e max_range?

<p>Permette di validare che un numero intero rientri in un intervallo specifico, come tra 18 e 65 anni.</p> Signup and view all the answers

Quale funzione PHP è utilizzata per controllare se una variabile è valida o meno?

<p>La funzione utilizzata è filter_var.</p> Signup and view all the answers

Come si definisce un'opzione per limitare l'età a un certo intervallo in PHP?

<p>Si definiscono le opzioni in un array associativo con le chiavi 'min_range' e 'max_range'.</p> Signup and view all the answers

Quale valore viene assegnato se la variabile 'email' non è presente in $_GET?

<p>La variabile 'email' viene impostata a null.</p> Signup and view all the answers

Cosa restituisce l'uso di filter_var con FILTER_VALIDATE_EMAIL per un'email non valida?

<p>Restituisce false, indicando che l'email non è valida.</p> Signup and view all the answers

Che vantaggio offre la possibilità di passare flag alle funzioni di filtraggio in PHP?

<p>Consente di verificare criteri aggiuntivi come limiti minimi e massimi per i valori.</p> Signup and view all the answers

Come viene gestita la variabile 'age' per assicurare che rientri in un preciso intervallo?

<p>Viene utilizzata filter_var con FILTER_VALIDATE_INT e opzioni per stabilire min_range e max_range.</p> Signup and view all the answers

Qual è la differenza principale tra filter_var() e filter_input() in PHP?

<p>filter_var() filtra una singola variabile, mentre filter_input() si applica direttamente alle variabili di input come $_GET e $_POST.</p> Signup and view all the answers

Quando si dovrebbe utilizzare filter_var_array() rispetto a filter_var()?

<p>filter_var_array() è utile quando si desidera filtrare un intero array di variabili, mentre filter_var() è per singole variabili.</p> Signup and view all the answers

Quale funzione si utilizza per ottenere l'elenco dei filtri disponibili in PHP?

<p>La funzione filter_list() restituisce un elenco dei filtri disponibili nel sistema.</p> Signup and view all the answers

Qual è l'importanza della funzione trim() quando si gestisce un indirizzo email da $_GET?

<p>trim() rimuove spazi indesiderati all'inizio e alla fine dell'indirizzo email per garantire una validazione accurata.</p> Signup and view all the answers

Come si definiscono i parametri minimi e massimi per validare un numero intero in PHP?

<p>Si definiscono usando un array di opzioni con le chiavi 'min_range' e 'max_range'.</p> Signup and view all the answers

Che valore restituisce filter_var() quando l'input non è valido?

<p>filter_var() restituisce 'false' se l'input non soddisfa i criteri di validazione.</p> Signup and view all the answers

Cosa controlla la funzione FILTER_VALIDATE_EMAIL in PHP?

<p>FILTER_VALIDATE_EMAIL verifica se una stringa è un indirizzo email valido secondo le regole di formattazione.</p> Signup and view all the answers

Qual è il risultato di filter_input() se la variabile di input non è impostata?

<p>filter_input() restituisce 'null' se la variabile di input non è impostata.</p> Signup and view all the answers

Quale filtro sarebbe appropriato per assicurarsi che un'età rientri in un dato intervallo in PHP?

<p>FILTER_VALIDATE_INT con opzioni per specificare min_range e max_range è appropriato per questo scopo.</p> Signup and view all the answers

Perché è importante validare gli input ricevuti da $_POST e $_GET?

<p>La validazione degli input previene attacchi di sicurezza come l'iniezione di codice e garantisce l'integrità dei dati.</p> Signup and view all the answers

Qual è la funzione di preg_match() in PHP?

<p>preg_match() verifica se una stringa corrisponde a un pattern definito da un'espressione regolare.</p> Signup and view all the answers

Cosa indicano i simboli ^ e $ nelle espressioni regolari in PHP?

<p>Il simbolo ^ indica l'inizio di una stringa, mentre $ indica la fine della stringa.</p> Signup and view all the answers

Come funziona la funzione preg_replace() in PHP?

<p>preg_replace() sostituisce parti di una stringa in base a un'espressione regolare.</p> Signup and view all the answers

Qual è lo scopo dell'espressione regolare utilizzata in preg_match per validare la password?

<p>L'espressione regolare verifica che la password sia composta da 6 a 12 caratteri, accettando solo lettere e simboli ! e ?.</p> Signup and view all the answers

Qual è la differenza tra preg_grep() e preg_match() in PHP?

<p>preg_grep() restituisce un array di stringhe che corrispondono al pattern, mentre preg_match() restituisce un valore booleano.</p> Signup and view all the answers

Come viene gestita la differenza tra un match trovato e nessun match in preg_match?

<p>Un match trovato restituisce 1, mentre un match non trovato restituisce 0; un errore restituisce false.</p> Signup and view all the answers

Cosa significa il flag PREG_OFFSET_CAPTURE in preg_match?

<p>Il flag <code>PREG_OFFSET_CAPTURE</code> permette di ottenere l'indice del match all'interno della stringa.</p> Signup and view all the answers

Cosa fa la funzione preg_last_error() in PHP?

<p>preg_last_error() restituisce l'ultimo errore accaduto durante l'esecuzione di un'espressione regolare.</p> Signup and view all the answers

Che funzione hanno le parentesi quadre [] nelle espressioni regolari in PHP?

<p>Le parentesi quadre [] indicano una classe di caratteri, specificando un insieme di caratteri ammissibili.</p> Signup and view all the answers

Qual è il formato richiesto per la data nella validazione tramite preg_match?

<p>La data deve essere nel formato gg-mm-aaaa.</p> Signup and view all the answers

Come si rappresentano le ripetizioni nelle espressioni regolari in PHP?

<p>Le ripetizioni si rappresentano con {n,m} per un intervallo, * per zero o più occorrenze, e + per una o più occorrenze.</p> Signup and view all the answers

Qual è il ruolo delle parentesi tonde nell'espressione regolare per la data?

<p>Le parentesi tonde vengono utilizzate per catturare i vari elementi della data, come giorno, mese e anno.</p> Signup and view all the answers

In che modo preg_match restituisce le informazioni sui match quando si utilizzano le parentesi per catturare?

<p>Restituisce un array contenente i match e i rispettivi valori catturati.</p> Signup and view all the answers

Cosa indica un flag come 'i' nelle espressioni regolari in PHP?

<p>Il flag 'i' indica che la corrispondenza dell'espressione regolare è case-insensitive, quindi non fa distinzione tra maiuscole e minuscole.</p> Signup and view all the answers

Quali sono i principali utilizzi delle espressioni regolari in PHP?

<p>Le espressioni regolari in PHP vengono utilizzate per la validazione, ricerca e sostituzione in stringhe.</p> Signup and view all the answers

Cosa restituisce preg_match quando non viene trovata alcuna corrispondenza?

<p>Restituisce 0, indicando che non è stato trovato alcun match.</p> Signup and view all the answers

Qual è la sintassi per utilizzare preg_split() in PHP?

<p>preg_split() divide una stringa in base al pattern fornito da un'espressione regolare.</p> Signup and view all the answers

Perché è importante considerare le maiuscole e minuscole nell'espressione regolare /^ciao/i?

<p>Il flag 'i' rende la ricerca insensibile al case, consentendo di trovare 'Ciao' o 'ciao' ugualmente.</p> Signup and view all the answers

Come verificare se una stringa inizia con 'ciao' utilizzando preg_match?

<p>Si utilizza l'espressione regolare <code>/^ciao/i</code> per controllare l'inizio della stringa.</p> Signup and view all the answers

Quale sarebbe un esempio di una password non valida secondo il pattern utilizzato?

<p>Una password come 'abc!123' non è valida perché supera i 12 caratteri.</p> Signup and view all the answers

Qual è la differenza principale tra client e server in un'architettura client-server?

<p>Il client è l'entità che richiede un servizio, mentre il server è l'entità che fornisce quel servizio.</p> Signup and view all the answers

Cosa rappresenta l'header in un'unità di dato HTTP?

<p>L'header contiene informazioni sul funzionamento di HTTP e altre descrizioni utili per il trasferimento dei dati.</p> Signup and view all the answers

In quale formato può essere trasmesso il body di un'unità di dato HTTP se il destinatario è un umano?

<p>Il body può essere trasmesso in formato HTML o XML.</p> Signup and view all the answers

Che cosa permette di gestire il tipo MIME nelle trasmissioni HTTP?

<p>Il tipo MIME permette di indicare il formato dei dati trasmessi, come text/plain per testo semplice o text/html per pagine HTML.</p> Signup and view all the answers

Quale aspetto è emerso come fondamentale per il miglioramento delle trasmissioni HTTP nel tempo?

<p>L'aumento dell'efficienza nelle trasmissioni è emerso come fondamentale.</p> Signup and view all the answers

Come è strutturato un'unità di dato HTTP?

<p>Un'unità di dato HTTP è suddivisa in due parti principali: header e body.</p> Signup and view all the answers

Qual è uno degli obiettivi principali che gli sviluppatori di HTTP si sono posti?

<p>Uno degli obiettivi principali è permettere il trasferimento di una grande varietà di dati seguendo le esigenze dell'evoluzione di Internet.</p> Signup and view all the answers

Cosa implica la mediazione di un browser nel paradigma client-server?

<p>Il browser funge da interfaccia tra l'utente finale e il server, permettendo la richiesta e visualizzazione delle informazioni.</p> Signup and view all the answers

Qual è il problema principale legato alle richieste HTTP/1.0 per una pagina web complessa?

<p>Ogni risorsa richiede una connessione TCP separata, causando un notevole overhead.</p> Signup and view all the answers

Cosa rappresenta lo schema in una URL e qual è il più comune?

<p>Lo schema definisce il protocollo, e il più comune è HTTP.</p> Signup and view all the answers

Come influenza il protocollo HTTP/1.1 la gestione delle connessioni rispetto a HTTP/1.0?

<p>HTTP/1.1 consente il riutilizzo delle connessioni TCP, riducendo l'overhead.</p> Signup and view all the answers

Nel contesto di una URL, cosa indica l'host?

<p>L'host è il server che ospita la risorsa sulla rete.</p> Signup and view all the answers

Qual è l'effetto dell'overhead delle connessioni TCP nelle pagine web con molti elementi?

<p>L'overhead aumenta la latenza complessiva per il caricamento delle pagine.</p> Signup and view all the answers

In quali situazioni il protocollo 'file' viene utilizzato nelle URL?

<p>Viene usato per accedere a file locali direttamente dal file system.</p> Signup and view all the answers

Qual è la sintassi corretta di una URL e quali sono le sue componenti principali?

<p>La sintassi è schema://host/percorso, con schema, host e percorso come componenti principali.</p> Signup and view all the answers

Come si differenziano le richieste per ciascuna risorsa in HTTP/1.0?

<p>Ogni risorsa è una richiesta separata che implica la creazione di una connessione TCP unica.</p> Signup and view all the answers

Qual è il vantaggio principale del caching nei protocolli HTTP?

<p>Riduce l'uso della banda e la capacità computazionale dei server evitando frequenti trasmissioni di dati.</p> Signup and view all the answers

Cosa rappresenta la S in HTTPS?

<p>Indica che la comunicazione è sicura e crittografata attraverso il protocollo TLS.</p> Signup and view all the answers

Qual è la differenza principale tra HTTP/2 e HTTP/3?

<p>HTTP/2 utilizza TCP, mentre HTTP/3 utilizza il protocollo QUIC basato su UDP.</p> Signup and view all the answers

Perché HTTP 0.9 non ha avuto larga diffusione?

<p>Era un protocollo estremamente semplice che supportava solo il metodo GET senza separazione tra header e body.</p> Signup and view all the answers

Qual è l'importanza degli RFC nel contesto di Internet?

<p>Gli RFC descrivono protocolli e linee guida, permettendo uno sviluppo trasparente e collaborativo.</p> Signup and view all the answers

Come funziona il meccanismo dei cookie in HTTP?

<p>I cookie permettono al server di memorizzare informazioni come le preferenze dell'utente per sessioni future.</p> Signup and view all the answers

Quali migliorie ha introdotto HTTP/1.1 rispetto a HTTP/1.0?

<p>HTTP/1.1 ha introdotto il riutilizzo delle connessioni TCP, la compressione dei dati e meccanismi di caching.</p> Signup and view all the answers

Per quali motivi HTTP è considerato stateless?

<p>Perché ogni richiesta è indipendente e non mantiene memoria delle interazioni precedenti.</p> Signup and view all the answers

Qual è il ruolo del protocollo TLS in HTTPS?

<p>TLS garantisce la sicurezza dei dati trasmessi, proteggendo la confidenzialità e l'integrità.</p> Signup and view all the answers

Che vantaggi presenta l'uso di UDP nel protocollo QUIC?

<p>UDP migliora la velocità e riduce la latenza nella trasmissione dei dati, anche se a scapito dell'affidabilità.</p> Signup and view all the answers

Quando è appropriato utilizzare un protocollo con controlli di affidabilità rigorosi?

<p>Quando il canale fisico presenta un alto livello di errori, come nei casi di rumore o collisioni.</p> Signup and view all the answers

In che modo HTTP/3 è stato standardizzato e quali sono le sue caratteristiche?

<p>HTTP/3 è stato standardizzato nel 2022 e utilizza QUIC, migliorando velocità e sicurezza nella trasmissione.</p> Signup and view all the answers

Quali sono le conseguenze della flessibilità di HTTP 1.0 rispetto a 1.1?

<p>HTTP 1.0 permette la chiusura della connessione dopo ogni richiesta, mentre 1.1 mantiene le connessioni aperte.</p> Signup and view all the answers

Cosa implica la codifica dei dati a 8-bit in HTTP 1.0?

<p>Significa che non è necessaria una codifica speciale per i dati, facilitando l'invio di vari tipi di contenuti.</p> Signup and view all the answers

Qual è la funzione della porta in un URL e quale porta predefinita utilizza HTTP?

<p>La porta serve come canale di comunicazione per accedere alla risorsa; HTTP utilizza la porta predefinita 80.</p> Signup and view all the answers

Cosa avviene se si prova a collegarsi a una porta non in ascolto su un server?

<p>Non si riceverebbe alcuna risposta dal server, poiché non vi è alcuna risorsa disponibile su quella porta.</p> Signup and view all the answers

Come si differenziano le porte predefinite per HTTP e HTTPS?

<p>HTTP usa la porta 80, mentre HTTPS utilizza la porta 443, per distinguere i due protocolli.</p> Signup and view all the answers

Qual è la funzione del path in un URL?

<p>Il path indica il percorso per accedere alla specifica risorsa all'interno di un host.</p> Signup and view all the answers

Cosa è un'ancora in un URL e come viene utilizzata?

<p>L'ancora permette di saltare a un punto specifico all'interno di un documento, utilizzando un id o un tag di ancoraggio.</p> Signup and view all the answers

Qual è la differenza tra file PHP e HTML nel percorso di un URL?

<p>Il percorso deve specificare il tipo di file, quindi PHP avrà un'estensione .php, mentre HTML avrà .html.</p> Signup and view all the answers

In che modo un browser gestisce il collegamento a una porta predefinita?

<p>Il browser si collega automaticamente alla porta predefinita se non viene specificata, come la porta 80 per HTTP.</p> Signup and view all the answers

Cosa significa che l'accesso a una risorsa può essere ristretto?

<p>Significa che è necessario autenticarsi con uno username e una password per accedere alla risorsa.</p> Signup and view all the answers

Qual è il significato di DNS in relazione all'accesso alle risorse?

<p>Il DNS (Domain Name System) traduce i nomi degli host in indirizzi IP, facilitando l'accesso alle risorse su internet.</p> Signup and view all the answers

Quali informazioni devono essere incluse in un URL per accedere a una risorsa specifica?

<p>Un URL deve includere l'host, la porta (opzionale), e il path della risorsa.</p> Signup and view all the answers

Qual è il ruolo dello schema HTTP nel contesto degli URL?

<p>HTTP funge da schema principale per localizzare e accedere alle risorse su internet.</p> Signup and view all the answers

Quali sono le principali differenze tra i metodi HTTP GET e POST?

<p>Il metodo GET recupera risorse senza inviare dati, mentre il metodo POST invia dati al server per l'elaborazione.</p> Signup and view all the answers

Che informazioni contiene l'header di una richiesta HTTP?

<p>L'header contiene chiavi e valori come Content-Type e Content-Length che descrivono la richiesta.</p> Signup and view all the answers

Cosa rappresenta il codice di stato '404' in una risposta HTTP?

<p>'404' indica che la risorsa richiesta non è stata trovata sul server.</p> Signup and view all the answers

Qual è la differenza tra i metodi HEAD e GET in HTTP?

<p>Il metodo HEAD restituisce solo gli header della risposta, senza il corpo, mentre GET include il corpo della risorsa.</p> Signup and view all the answers

Qual è la funzione del DNS in relazione agli URL?

<p>Il DNS associa nomi logici ai nodi di rete, facilitando l'accesso alle risorse tramite nomi più facilmente memorizzabili.</p> Signup and view all the answers

Come viene definita una URL logica e quale esempio si può fare?

<p>Una URL logica identifica una risorsa indipendentemente dalla sua posizione fisica, come per esempio 'urn:isbn:9781234567890'.</p> Signup and view all the answers

Quali informazioni possono essere contenute in un body di una richiesta POST?

<p>Il body può contenere dati come immagini, video o file audio, a seconda dell'applicazione.</p> Signup and view all the answers

In che modo una connessione TCP si integra nella sintassi di una richiesta GET?

<p>Una connessione TCP deve essere stabilita prima di inviare la richiesta GET, permettendo la trasmissione dei dati.</p> Signup and view all the answers

Cosa viene riportato in una risposta server dopo una richiesta HTTP di successo?

<p>Il server restituisce un messaggio che include il codice di stato '200 OK' e potenzialmente ulteriori header informativi.</p> Signup and view all the answers

Cosa indica un codice di stato HTTP che inizia con 2?

<p>Indica un successo nella richiesta, con la risorsa recuperata correttamente.</p> Signup and view all the answers

Qual è il significato del codice di stato 404?

<p>Indica che la risorsa non è stata trovata, di solito a causa di un indirizzo errato.</p> Signup and view all the answers

Che differenza c'è tra il codice 301 e il codice 302?

<p>Il codice 301 indica uno spostamento permanente della risorsa, mentre il codice 302 indica uno spostamento temporaneo.</p> Signup and view all the answers

Qual è il risultato del codice di stato 204?

<p>Indica un successo, ma la risposta non contiene alcun contenuto.</p> Signup and view all the answers

A cosa si riferisce il codice di errore 500?

<p>Indica un errore interno del server, senza specificare la natura del problema.</p> Signup and view all the answers

Cosa comporta un codice di stato che inizia con 4?

<p>Indica un errore del client, come una richiesta non valida.</p> Signup and view all the answers

Qual è la funzione del codice di stato 503?

<p>Indica che il servizio non è disponibile e il server non è in grado di rispondere temporaneamente.</p> Signup and view all the answers

Qual è l'importanza della prima cifra del codice di stato HTTP?

<p>Identifica le macro-categorie semantiche delle risposte HTTP.</p> Signup and view all the answers

Cosa significa il codice 202 in una risposta HTTP?

<p>Significa che la richiesta è stata accettata, ma la risorsa non è stata completamente fornita.</p> Signup and view all the answers

Cosa rappresenta il codice 304?

<p>Indica che la risorsa non è stata modificata e non è necessario scaricarla di nuovo.</p> Signup and view all the answers

Cosa indica il codice di stato 301 in una redirection?

<p>Il codice di stato 301 indica che la risorsa è stata permanentemente spostata a una nuova URI.</p> Signup and view all the answers

Come deve comportarsi un browser in caso di redirection con metodo POST?

<p>Il browser non deve inviare automaticamente i dati alla nuova URI, richiedendo invece l'intervento dell'utente.</p> Signup and view all the answers

Qual è la funzione dell'header 'Location' in una risposta HTTP?

<p>L'header 'Location' specifica la nuova URI a cui il client dovrebbe accedere in caso di redirection.</p> Signup and view all the answers

Cosa restituisce un server se una risorsa non è stata modificata dopo una certa data?

<p>Il server restituisce il codice di stato 304, che indica che la risorsa non è modificata.</p> Signup and view all the answers

Qual è la differenza tra l'header 'Referrer' e 'User-Agent'?

<p>'Referrer' indica la pagina di origine del client, mentre 'User-Agent' fornisce informazioni sul tipo di client che effettua la richiesta.</p> Signup and view all the answers

Cos'è l'header 'WWW-Authenticate' e a cosa serve?

<p>L'header 'WWW-Authenticate' chiede al client di fornire credenziali per l'autenticazione.</p> Signup and view all the answers

In quale situazione viene utilizzato l'header 'Pragma'?

<p>L'header 'Pragma' viene utilizzato per indicare se una pagina può essere memorizzata nella cache.</p> Signup and view all the answers

Quali informazioni possono essere contenute nel campo User-Agent?

<p>Il campo User-Agent può contenere dettagli su browser, dispositivo e piattaforma in uso.</p> Signup and view all the answers

Qual è il significato dell'header 'Date' in una risposta HTTP?

<p>L'header 'Date' indica la data e l'ora in cui il messaggio HTTP è stato creato.</p> Signup and view all the answers

Quando si utilizza un codice di stato 304, cosa deve fare il client?

<p>Il client deve utilizzare la copia memorizzata nella cache della risorsa, poiché non è stata modificata.</p> Signup and view all the answers

Che tipo di informazioni forniscono i campi 'Expires' e 'Last-Modified' in una richiesta HTTP?

<p>'Expires' indica la validità della pagina, mentre 'Last-Modified' mostra l'ultima data di modifica della risorsa.</p> Signup and view all the answers

Qual è il formato standard accettato per la data nel campo 'Last-Modified'?

<p>Il formato ufficiale prevede tre caratteri per il giorno della settimana, due per il giorno, tre per il mese, quattro per l'anno, e due per ora, minuti e secondi con il fuso orario GMT.</p> Signup and view all the answers

Quale strumento permette di analizzare il traffico di rete e quali protocolli può osservare?

<p>Wireshark permette di analizzare il traffico di rete, inclusi protocolli come HTTP, TCP e IP.</p> Signup and view all the answers

Cosa consente di fare la 'modalità promiscua' nelle schede di rete cablate?

<p>Permette di acquisire tutti i pacchetti in transito, non solo quelli indirizzati al proprio dispositivo.</p> Signup and view all the answers

Come si differenzia il formato RFC 850 da quello ufficiale per il campo 'Last-Modified'?

<p>RFC 850 separa gli elementi della data con trattini e usa solo due cifre per l'anno, rendendolo meno utile a lungo termine.</p> Signup and view all the answers

Qual è l'uso della 'modalità monitor' per le schede wireless?

<p>La 'modalità monitor' consente di acquisire tutti i pacchetti di rete in transito, indipendentemente dall'indirizzo di destinazione.</p> Signup and view all the answers

Qual è l'importanza della corretta definizione delle date nei protocolli HTTP?

<p>Le date corrette sono utili per determinare la validità della cache e la freschezza delle risorse caricate.</p> Signup and view all the answers

Che funzione ha il campo 'Expires' in una risposta HTTP?

<p>Il campo 'Expires' determina fino a quando una risorsa può essere considerata valida per la cache.</p> Signup and view all the answers

In che modo Wireshark può aiutare nella diagnosi di problemi di rete?

<p>Wireshark consente di catturare e analizzare il traffico di rete, aiutando a identificare e risolvere i problemi di connettività.</p> Signup and view all the answers

Qual è la funzione principale del campo 'Last-Modified' in un'intestazione HTTP?

<p>Il campo 'Last-Modified' informa il client sulla data dell'ultima modifica della risorsa richiesta.</p> Signup and view all the answers

Quali sono le tre aree principali dell'interfaccia utente di Wireshark?

<p>L'elenco dei pacchetti catturati, i dettagli del pacchetto selezionato e la visualizzazione in esadecimale o bit per bit.</p> Signup and view all the answers

Cosa permette di fare un filtro di cattura in Wireshark?

<p>Un filtro di cattura consente di acquisire soltanto il traffico che soddisfa certe condizioni impostate a priori.</p> Signup and view all the answers

Come si differenziano i filtri di cattura dai filtri di visualizzazione in Wireshark?

<p>I filtri di cattura si applicano prima della cattura dei dati, mentre i filtri di visualizzazione si applicano dopo che i dati sono stati acquisiti.</p> Signup and view all the answers

Cosa indica l'header 'User-Agent' in una richiesta HTTP?

<p>L'header 'User-Agent' indica il tipo di client, come il browser, che sta effettuando la richiesta.</p> Signup and view all the answers

Qual è la sintassi corretta per escludere determinate porte in un filtro di cattura?

<p>La sintassi corretta è <code>!(tcp.port == 80 || tcp.port == 25)</code>.</p> Signup and view all the answers

Quando è utile applicare filtri di visualizzazione in Wireshark?

<p>I filtri di visualizzazione sono utili per concentrarsi su determinati aspetti del traffico già acquisito.</p> Signup and view all the answers

Cosa potrebbe indicare una risposta 'No Content' in una comunicazione HTTP?

<p>Una risposta 'No Content' indica che non ci sono aggiornamenti disponibili per il sistema.</p> Signup and view all the answers

Quale header HTTP informa il server sui tipi di contenuti compressi accettati dal client?

<p>L'header 'Accept-Encoding' informa il server sui contenuti compressi accettati.</p> Signup and view all the answers

Qual è il significato di 'HTTP/1.1 200 OK' in una risposta del server?

<p>'HTTP/1.1 200 OK' indica che la richiesta è stata eseguita con successo.</p> Signup and view all the answers

Perché è importante salvare i pacchetti acquisiti in Wireshark?

<p>Salvare i pacchetti permette di analizzarli successivamente e di evidenziare aspetti diversi dello stesso trafico.</p> Signup and view all the answers

Qual è il metodo preferito per passare dati alle funzioni in PHP, evitando l'uso di variabili globali?

<p>Passare i dati tramite parametri di funzione.</p> Signup and view all the answers

Come si utilizza la funzione header() per redirigere a un'altra pagina in PHP?

<p>Si usa <code>header('Location: http://www.php.net');</code>.</p> Signup and view all the answers

Qual è la funzione per visualizzare tutte le variabili PHP in ambiente di esecuzione?

<p>La funzione <code>phpinfo();</code>.</p> Signup and view all the answers

Cosa permette di fare l'array super globale $_SERVER in PHP?

<p>Contiene informazioni sull'ambiente del server web.</p> Signup and view all the answers

Perché è sconsigliato utilizzare la keyword global per accedere a variabili globali all'interno delle funzioni?

<p>Perché riduce la chiarezza e la manutenibilità del codice.</p> Signup and view all the answers

Qual è la sintassi corretta per impostare il tipo di contenuto di una risposta HTTP in PHP?

<p>Si usa <code>header('Content-Type: application/pdf');</code>.</p> Signup and view all the answers

Come si può utilizzare un ciclo foreach per accedere alle informazioni di $_SERVER?

<p>Si usa <code>foreach ($_SERVER as $key =&gt; $value) { echo &quot;$key: $value &quot;; }</code>.</p> Signup and view all the answers

Quali tipi di dati contengono tipicamente le variabili dell'array $_SERVER?

<p>Tipicamente contengono stringhe su informazioni della richiesta HTTP e del server.</p> Signup and view all the answers

Qual è un modo corretto per passare variabili tra funzioni senza utilizzare la keyword global?

<p>Passando le variabili come argomenti della funzione.</p> Signup and view all the answers

Cosa restituisce il codice echo $_SERVER['HTTP_USER_AGENT'];?

<p>Restituisce la stringa contenente l'User-Agent del client.</p> Signup and view all the answers

In che modo si differenziano le funzioni include e require nella gestione degli errori in PHP?

<p>La funzione <code>include</code> genera un warning se il file non viene trovato, mentre <code>require</code> genera un fatal error e ferma l'esecuzione dello script.</p> Signup and view all the answers

Qual è la differenza principale tra include_once e require_once rispetto alle loro controparti senza '_once'?

<p><code>include_once</code> e <code>require_once</code> prevengono l'inclusione ripetuta dello stesso file, mentre <code>include</code> e <code>require</code> possono includere il file più volte.</p> Signup and view all the answers

In quali contesti risultano più utili le direttive include e require?

<p>Le direttive include e require sono più utili in contesti complessi dove il riutilizzo di blocchi di codice è necessario per una migliore organizzazione e modularità.</p> Signup and view all the answers

Come si gestiscono gli errori durante l'inclusione dei file con PHP?

<p>Gli errori di inclusione possono essere gestiti mediante le differenze tra <code>include</code> e <code>require</code>, e si possono anche utilizzare costrutti try-catch per un controllo più fine.</p> Signup and view all the answers

Qual è la sintassi per includere un file in PHP?

<p>La sintassi per includere un file è <code>include('percorso_del_file')</code> o <code>require('percorso_del_file')</code>, dove il percorso può essere relativo o assoluto.</p> Signup and view all the answers

Qual è il rischio principale associato all'uso di funzioni che semplificano la gestione dello stato in HTTP?

<p>Il rischio principale è che tali funzioni nascondano complesse funzionalità di backend, portando a confusione e difficoltà nel debug degli errori.</p> Signup and view all the answers

Cosa restituisce la funzione echo quando si esegue echo somma(1, 2) se somma è definita come function somma($a, $b) { return $a + $b; }?

<p><code>echo somma(1, 2)</code> restituisce <code>3</code>.</p> Signup and view all the answers

In che senso PHP è case-insensitive e come influisce sulle funzioni?

<p>PHP è case-insensitive nel senso che le funzioni possono essere scritte in maiuscolo o minuscolo senza differenze nel funzionamento.</p> Signup and view all the answers

Perché è importante organizzare il codice PHP in modo modulare?

<p>Organizzare il codice in modo modulare facilita il riutilizzo e la manutenzione del codice, specialmente in progetti complessi.</p> Signup and view all the answers

Qual è il parametro obbligatorio della funzione setcookie()?

<p>Il parametro obbligatorio è il nome del cookie.</p> Signup and view all the answers

Come si imposta il valore di scadenza di un cookie per un'ora?

<p>Si utilizza <code>time() + 3600</code> per impostare la scadenza di un'ora.</p> Signup and view all the answers

A cosa serve il parametro 'HttpOnly' in setcookie()?

<p>'HttpOnly' impedisce l'accesso al cookie tramite JavaScript, aumentando la sicurezza.</p> Signup and view all the answers

Qual è l'effetto di specificare un percorso ristretto nel setcookie()?

<p>Limita l'accesso del cookie solo alle aree specificate del server.</p> Signup and view all the answers

Qual è la sintassi per leggere un cookie in PHP?

<p>Si utilizza <code>$_COOKIE['nome_cookie']</code> per accedere al valore del cookie.</p> Signup and view all the answers

Come si imposta la scadenza di un cookie per un giorno?

<p>Si imposta con <code>time() + 86400</code> che equivale a un giorno in secondi.</p> Signup and view all the answers

Perché è importante specificare il dominio nel setcookie()?

<p>Specificare il dominio limita l'ambito del cookie, migliorando sicurezza e privacy.</p> Signup and view all the answers

Cosa rende un cookie 'Secure' quando è impostato in setcookie()?

<p>Un cookie 'Secure' viene trasmesso solo tramite connessioni sicure (HTTPS).</p> Signup and view all the answers

Cosa succede se non si imposta il valore del cookie nel setcookie()?

<p>Il cookie verrà creato senza un valore definito, risultando vuoto.</p> Signup and view all the answers

Quale rischio si corre non limitando il percorso e il dominio di un cookie?

<p>Si aumenta il rischio di accesso non autorizzato da parte di altre applicazioni o siti.</p> Signup and view all the answers

Qual è la funzione di base di un cookie nel contesto di un'interazione tra browser e server?

<p>I cookie servono a mantenere traccia delle informazioni, come l'identificazione di un utente autenticato.</p> Signup and view all the answers

Qual è la principale differenza tra le funzioni setcookie() e setrawcookie() in PHP?

<p>setcookie() modifica i dati per la trasmissione, mentre setrawcookie() invia i dati esattamente come sono.</p> Signup and view all the answers

Quale array associativo in PHP viene utilizzato per gestire i cookie?

<p>$_COOKIE è l'array associativo utilizzato per gestire i cookie in PHP.</p> Signup and view all the answers

Cosa deve essere fatto per evitare errori quando si utilizzano le funzioni setcookie() o header() in PHP?

<p>Le funzioni devono essere chiamate prima di qualsiasi output HTML per non compromettere gli header HTTP.</p> Signup and view all the answers

Come si imposta un cookie che dura un'ora in PHP?

<p>Si utilizza setcookie('nome_cookie', 'valore', time() + 3600) per impostare un cookie con durata di un'ora.</p> Signup and view all the answers

Qual è l'errore di codice nell'esempio 'echo "Ciao"; setcookie('nome_cookie', 'valore');'?

<p>L'header HTTP è già stato inviato con il comando echo, quindi setcookie() genererà un errore.</p> Signup and view all the answers

Perché i cookie sono considerati un meccanismo di scambio dati diverso rispetto a una normale richiesta?

<p>I cookie sono specificamente utilizzati per mantenere lo stato e le preferenze degli utenti tra le visite al sito.</p> Signup and view all the answers

Cosa accade se si utilizza setcookie() dopo l'invio di dati HTML?

<p>Si verifica un errore perché l'header HTTP non può essere modificato dopo che l'output HTML è iniziato.</p> Signup and view all the answers

Qual è l'importanza dei cookie nel garantire l'accesso a pagine riservate?

<p>I cookie consentono il riconoscimento degli utenti autenticati, permettendo loro di accedere facilmente a contenuti riservati.</p> Signup and view all the answers

In che modo i cookie possono essere utilizzati per memorizzare preferenze degli utenti?

<p>I cookie possono memorizzare impostazioni dell'interfaccia utente, permettendo un'esperienza personalizzata al ritorno sul sito.</p> Signup and view all the answers

Qual è la sintassi corretta in PHP per controllare se esiste un cookie prima di accedervi?

<p>Utilizzare <code>isset($_COOKIE['nome'])</code>.</p> Signup and view all the answers

Come si visualizzano tutti i cookie memorizzati in PHP?

<p>Si usa un ciclo <code>foreach</code> che itera su <code>$_COOKIE</code>.</p> Signup and view all the answers

Qual è il primo passaggio del processo di gestione dei cookie tra browser e server?

<p>Il server imposta un cookie durante la risposta alla richiesta del browser.</p> Signup and view all the answers

Cosa deve succedere affinché un cookie sia visibile al server nelle richieste successive?

<p>Il cookie deve essere impostato dal server prima di essere inviato dal browser.</p> Signup and view all the answers

Qual è il modo corretto di inviare un cookie in una richiesta HTTP?

<p>Includere <code>Cookie: nome=Andrea; cognome=Rossi</code> nell'intestazione della richiesta.</p> Signup and view all the answers

Qual è il comportamento comune dei cookie durante le prove di laboratorio?

<p>I cookie potrebbero non essere letti correttamente alla prima richiesta.</p> Signup and view all the answers

Perché è importante utilizzare isset() quando si lavora con i cookie in PHP?

<p>Per evitare errori di accesso a cookie che non sono stati impostati.</p> Signup and view all the answers

Quale struttura è utilizzata in PHP per gestire i cookie?

<p>I cookie sono gestiti come un array associativo chiamato <code>$_COOKIE</code>.</p> Signup and view all the answers

Come può essere visualizzato il valore di un cookie specifico?

<p>Stampando <code>$_COOKIE['nome']</code> se il cookie esiste.</p> Signup and view all the answers

Qual è la funzione utilizzata per impostare un cookie con una durata di un'ora?

<p>setcookie('nome_cookie', 'valore', time() + 3600);</p> Signup and view all the answers

Come si può cancellare un cookie nel browser?

<p>Impostando una scadenza nel passato con <code>setcookie('nome_cookie', 'valore', mktime(0, 0, 0, 12, 31, 2023));</code>.</p> Signup and view all the answers

Quale funzione si utilizza per creare un timestamp per una data futura specifica?

<p>mktime(0, 0, 0, mese, giorno, anno);</p> Signup and view all the answers

Cosa restituisce la funzione time() in PHP?

<p>Restituisce il numero di secondi trascorsi dall'Unix Epoch (1 gennaio 1970).</p> Signup and view all the answers

Qual è il vantaggio di utilizzare cookie per memorizzare informazioni come nome e cognome?

<p>Permette all'utente di non reinserire i dati ad ogni visita al sito per un periodo specificato.</p> Signup and view all the answers

Qual è la sintassi corretta per impostare un cookie che dura 24 ore?

<p>setcookie('nome', $_POST['your_name'], time() + 86400);</p> Signup and view all the answers

Cosa accade se non si specificano alcuni parametri nella funzione mktime()?

<p>Verranno utilizzati i valori correnti per i parametri omessi.</p> Signup and view all the answers

Perché utilizzare la radice (/) come percorso per un cookie è utile?

<p>Significa che il cookie sarà accessibile da tutte le pagine del dominio.</p> Signup and view all the answers

In che modo un cookie può essere impostato con una scadenza specifica in una data futura?

<p>Usando <code>setcookie('nome_cookie', 'valore', mktime(0, 0, 0, 12, 31, 2024));</code>.</p> Signup and view all the answers

Qual è l'effetto di impostare un cookie con una scadenza già passata?

<p>Il cookie viene cancellato dal browser.</p> Signup and view all the answers

Quale metodo si utilizza in PHP per impostare un cookie che durerà 24 ore?

<p>setcookie('nome', 'Andrea', time() + 86400, '/');</p> Signup and view all the answers

Come si può eliminare un cookie in PHP?

<p>Impostando la scadenza su una data passata con setcookie().</p> Signup and view all the answers

Quali sono i problemi di sicurezza associati all'uso dei cookie?

<p>I cookie possono essere letti da altre applicazioni e intercettati tramite attacchi man-in-the-middle.</p> Signup and view all the answers

Come influiscono i cookie sul carico di lavoro del server?

<p>I cookie spostano la gestione dello stato dal server al client, riducendo il carico del server.</p> Signup and view all the answers

Qual è la differenza principale tra l'uso di mktime() e time() nella gestione dei cookie?

<p>mktime() permette di impostare una data specifica, mentre time() fornisce il timestamp attuale.</p> Signup and view all the answers

Qual è un possibile svantaggio dell'utilizzo indiscriminato dei cookie sul rispetto della privacy?

<p>L'eccessivo utilizzo dei cookie per tracciare gli utenti può violare la loro privacy.</p> Signup and view all the answers

In che modo i browser moderni aiutano gli utenti nella gestione dei cookie?

<p>Offrono opzioni per cancellare i cookie e limitare il loro utilizzo.</p> Signup and view all the answers

Cosa viene visualizzato se un cookie è impostato correttamente e letto con successo in PHP?

<p>'Ciao Andrea' se il cookie 'nome' contiene 'Andrea'.</p> Signup and view all the answers

Quale percorso deve essere specificato per rendere un cookie accessibile su tutte le pagine del dominio?

<p>'/' deve essere specificato come percorso nel setcookie().</p> Signup and view all the answers

Qual è l'effetto di impiegare HTTPS nell'impostazione dei cookie?

<p>HTTPS protegge i cookie da attacchi man-in-the-middle.</p> Signup and view all the answers

Perché $_COOKIE potrebbe sembrare vuoto dopo l'uso di setcookie() nella stessa pagina?

<p>Perché setcookie() viene eseguito prima che i cookie siano popolati in $_COOKIE, rendendoli disponibili solo dopo un ricaricamento della pagina.</p> Signup and view all the answers

Qual è la differenza principale tra lo stato stateless del protocollo HTTP e l'uso dei cookie?

<p>HTTP è stateless perché non mantiene memoria delle richieste precedenti, mentre i cookie permettono di memorizzare informazioni sullo stato dell'utente.</p> Signup and view all the answers

Come possono i cookie migliorare la gestione dello stato in un'applicazione web?

<p>I cookie consentono di mantenere le preferenze dell'utente e le informazioni sullo stato attraverso le sessioni, anche dopo che l'utente si scollega o chiude il browser.</p> Signup and view all the answers

Quali tecniche venivano utilizzate in passato per mantenere lo stato dell'utente prima dei cookie?

<p>Si usavano la riscrittura degli URL e campi nascosti nei form.</p> Signup and view all the answers

Quando sono stati introdotti i cookie e quale problema risolvono?

<p>I cookie sono stati introdotti con HTTP/1.0 e risolvono il problema di mantenere lo stato utente in modo persistente.</p> Signup and view all the answers

Qual è un esempio di come i cookie possono essere utilizzati per gestire un carrello della spesa?

<p>I cookie possono memorizzare il contenuto del carrello tra le sessioni, consentendo all'utente di ritrovare gli articoli selezionati anche dopo aver chiuso il browser.</p> Signup and view all the answers

Perché l'approccio della riscrittura degli URL per gestire lo stato era considerato inefficace?

<p>Questo approccio creava problemi di indicizzazione e duplicazione dei contenuti, rendendo difficile la gestione delle sessioni utente.</p> Signup and view all the answers

In che modo i cookie differiscono dai campi nascosti nei form per quanto riguarda la sicurezza?

<p>I cookie possono essere vulnerabili a furti e attacchi XSS, mentre i campi nascosti non sono visibili, ma entrambi possono presentare rischi di sicurezza.</p> Signup and view all the answers

Qual è la principale funzionalità dei cookie rispetto alle sessioni in PHP?

<p>I cookie memorizzano informazioni in modo persistente anche dopo che l'utente ha chiuso il browser, mentre le sessioni non lo fanno.</p> Signup and view all the answers

Cosa significa che il protocollo HTTP sia stateless e come i cookie affrontano questa limitazione?

<p>Stateless significa che ogni richiesta è indipendente; i cookie affrontano questa limitazione memorizzando informazioni che persistono oltre la singola richiesta.</p> Signup and view all the answers

Qual è la struttura di base della direttiva Set-Cookie in HTTP?

<p>La struttura di base è <code>Set-Cookie: nome_cookie=valore_cookie;</code>.</p> Signup and view all the answers

Come vengono inviati i cookie dal client al server durante le richieste successive?

<p>I cookie vengono inviati utilizzando la direttiva <code>Cookie: nome_cookie=valore_cookie;</code>.</p> Signup and view all the answers

Qual è la dimensione minima che i browser devono supportare per i cookie secondo la specifica della versione 1?

<p>I browser devono supportare cookie di almeno 4 KB.</p> Signup and view all the answers

Qual è una delle funzioni della direttiva HttpOnly per i cookie?

<p>La direttiva HttpOnly impedisce l'accesso al cookie tramite JavaScript.</p> Signup and view all the answers

Cosa accade ai cookie quando scadono o vengono eliminati dall'utente?

<p>I cookie non vengono più inviati dal client al server e vengono rimossi dal file system.</p> Signup and view all the answers

Qual è il limite complessivo di dimensioni per i cookie gestiti da un server per client?

<p>Il limite è di 80 KB per client.</p> Signup and view all the answers

Qual è il significato del campo 'Domain' nella direttiva Set-Cookie?

<p>Il campo 'Domain' indica il dominio a cui il cookie si applica.</p> Signup and view all the answers

Quale metodo possono utilizzare i browser per memorizzare i cookie?

<p>Alcuni browser salvano i cookie in file separati, altri in un database SQLite.</p> Signup and view all the answers

Qual è una delle informazioni opzionali che possono essere incluse in un cookie?

<p>La scadenza è un'informazione opzionale che indica la vita del cookie.</p> Signup and view all the answers

Quali sono i due valori principali che compongono un cookie?

<p>I due valori principali sono il nome e il valore del cookie.</p> Signup and view all the answers

Qual è la funzione della codifica dei caratteri speciali nei cookie?

<p>La codifica dei caratteri speciali nei cookie serve ad evitare problemi di interpretazione durante la trasmissione tra client e server.</p> Signup and view all the answers

Cosa succede a un cookie senza data di scadenza?

<p>Un cookie senza data di scadenza viene considerato temporaneo e sarà eliminato alla chiusura del browser.</p> Signup and view all the answers

In che modo il flag secure migliora la sicurezza dei cookie?

<p>Il flag secure assicura che il cookie venga trasmesso solo su connessioni HTTPS.</p> Signup and view all the answers

Come vengono ritrasmessi i cookie dal client al server?

<p>I cookie vengono ritrasmessi al server nelle richieste HTTP successive se la URL è compatibile con il dominio e il percorso del cookie.</p> Signup and view all the answers

Qual è l'uso dell'array associativo $_COOKIE in PHP?

<p>L'array associativo $_COOKIE in PHP viene utilizzato per accedere ai valori dei cookie inviati dal client.</p> Signup and view all the answers

Quali caratteri speciali devono essere codificati nei cookie e perché?

<p>Caratteri come virgole, punti e virgola o spazi devono essere codificati per evitare errori di interpretazione.</p> Signup and view all the answers

Cosa implica avere il dominio e il percorso opzionali per i cookie?

<p>Se non specificati, il browser utilizza il dominio e il percorso della URL che ha generato il cookie.</p> Signup and view all the answers

Qual è la differenza principale tra cookie temporanei e persistenti?

<p>I cookie temporanei vengono eliminati alla chiusura del browser, mentre i cookie persistenti rimangono fino a una data di scadenza specificata.</p> Signup and view all the answers

Come può l'uso di cookie influenzare l'esperienza dell'utente in una web application?

<p>I cookie possono memorizzare stati e preferenze dell'utente, migliorando la personalizzazione e la continuità nell'esperienza di navigazione.</p> Signup and view all the answers

Study Notes

Cos'è PHP?

  • PHP è un linguaggio di scripting open source, flessibile grazie alla sua vasta comunità di sviluppatori.
  • Trova una quantità notevole di documentazione online, in particolare su www.php.net, dove sono disponibili esempi e risorse create dalla comunità, incluse librerie e strumenti software.
  • PHP è un linguaggio server-side, il che significa che si esegue sul server piuttosto che sul client.
  • Tuttavia, può essere eseguito anche localmente su una macchina senza bisogno di un server web, a condizione che sia installato un interprete PHP.
  • In questi casi, è possibile sviluppare applicazioni con interfaccia grafica locale, utilizzando PHP-GTK per creare finestre, accettare input e visualizzare output, senza la necessità di un browser.
  • PHP può essere utilizzato sia per scripting da riga di comando che per lo sviluppo di pagine web dinamiche.
  • Sebbene abbia concorrenti, PHP continua a essere ampiamente utilizzato per la creazione di applicazioni moderne e non è affatto un linguaggio legacy.
  • Essendo open source, PHP è multi-piattaforma, eseguibile su tutti i principali sistemi operativi come Linux, Windows, Mac OS e altri derivati.
  • Questa caratteristica consente di trasferire facilmente il codice PHP da un sistema all'altro senza bisogno di grandi adattamenti.

Storia e Versioni

  • La prima versione di PHP risale al 1995 e attualmente siamo alla versione 8.3.
  • Il linguaggio continua a evolversi, introducendo nuove funzionalità per rimanere al passo con i tempi.
  • Le versioni di PHP hanno un supporto di circa tre anni, durante i primi due dei quali vengono aggiunte nuove funzionalità, mentre l'ultimo anno è dedicato alla risoluzione di problemi di sicurezza e bug.
  • Attualmente, le versioni 8.2 e 8.3 sono pienamente supportate, mentre le versioni precedenti alla 8 sono obsolete e non dovrebbero più essere utilizzate in produzione, soprattutto per questioni legate alla sicurezza.
  • Nella didattica, molte delle funzionalità utilizzate sono comuni da almeno dieci anni, a partire dalle versioni 5.4 e 5.6.
  • La versione 6 di PHP non è mai stata rilasciata a causa di disaccordi interni sulla direzione da prendere, è stata utilizzata principalmente come versione prototipo senza diventare uno standard.

Esecuzione di PHP su Server Web

  • Per eseguire PHP in modalità server-side, è necessario un server web come Apache o Nginx, che si occuperà di interpretare il codice PHP.
  • Quando un server web riceve una richiesta per un file PHP, lo passa all'interprete PHP.
  • L'interprete esegue il codice PHP, genera una pagina HTML e la invia al server, che poi la inoltra al client.
  • Per far funzionare PHP con un server web, è necessario configurare opportunamente il server e il modulo PHP, le configurazioni sono generalmente contenute in file di testo.
  • Un esempio di nome di file PHP è "qualcosa.php", che conterrà codice PHP tra tag di apertura e chiusura simili a quelli HTML.

Collegamento con Database

  • Molte applicazioni PHP si collegano a database per gestire dati dinamici.
  • PHP può interagire con vari DBMS (Database Management System), come MySQL o MariaDB, per acquisire, modificare e interrogare dati.
  • Non è strettamente necessario avere un database per utilizzare PHP, ma è una pratica estremamente comune.
  • Esistono pacchetti preconfezionati, come XAMPP, che includono un server Apache, un interprete PHP e un database MySQL o MariaDB, e che facilitano la configurazione di un ambiente di sviluppo locale.

Esempio di Esecuzione di PHP in Locale

  • Per eseguire un file PHP, come ad esempio "info.php", in locale, possiamo usare un ambiente di sviluppo come Visual Studio Code.
  • Questo ambiente offre la possibilità di avviare un server web integrato, che permetterà di eseguire il codice PHP sulla macchina locale.
  • Quando il server web è in ascolto (per esempio sulla porta 8000), possiamo accedere alla pagina "info.php" tramite un browser, che visualizzerà una tabella con tutte le informazioni del sistema su cui viene eseguito il codice.

Sintassi di PHP

  • La sintassi di PHP è molto simile a quella di JavaScript.
  • Ad esempio, è possibile creare un ciclo for in PHP con una struttura molto simile a JavaScript.

Commenti

  • In PHP, i commenti sono simili a C e C ++: puoi usare due barre oblique (//) per i commenti su singola riga o /* */ per i commenti su più righe.
  • È possibile usare anche il cancelletto (#) per commenti su singola riga, ma questo è meno comune.

Identificatori

  • Gli identificatori, come i nomi delle variabili o delle funzioni, possono contenere qualsiasi carattere alfanumerico o underscore (_).
  • Non possono iniziare con un numero, ma possono iniziare con una lettera o underscore.
  • Sebbene sia possibile usare caratteri ASCII estesi (da 126 a 255), è consigliato limitarsi ai caratteri standard dell'alfabeto ASCII per evitare problemi di compatibilità.

Variabili

  • Le variabili in PHP devono essere precedute dal simbolo $, quindi una variabile chiamata top sarà scritta come $top.
  • PHP distingue le maiuscole dalle minuscole, quindi $Top e $top sono due variabili diverse.
  • Le variabili non devono essere dichiarate esplicitamente prima dell'uso, ma è consigliato farlo per chiarezza.
  • Le variabili non sono tipizzate al momento della dichiarazione, ma assumono un tipo al momento dell'inizializzazione.
  • Se una variabile non è inizializzata, PHP assegnerà un valore predefinito in base al contesto.
  • PHP prova a convertire automaticamente il tipo quando la variabile viene utilizzata in un contesto diverso.
  • La funzione isset() verifica se una variabile è stata impostata.
  • La funzione unset() rimuove una variabile e fa sì che non esista più.

Tipi di Dati

  • PHP supporta tipi scalari (booleani, interi, numeri a virgola mobile e stringhe) e tipi composti (array e oggetti).
  • Esistono anche tipi speciali come null (assenza di valore) e resource, utilizzato per gestire risorse esterne come connessioni a database.
  • Alcune funzioni utili per il debug includono is_int(), is_float(), is_string() per verificare il tipo di una variabile.
  • La funzione gettype() restituisce il tipo di una variabile, mentre var_dump() stampa sia il tipo che il valore della variabile.

Numeri

  • I numeri in PHP sono sempre con segno.
  • Gli interi possono essere rappresentati in diverse basi: decimale (base 10), ottale (base 8), binario (base 2), esadecimale (base 16).
  • In caso di overflow, PHP converte automaticamente l'intero in un numero a virgola mobile, ma questo può introdurre errori di arrotondamento.
  • Le funzioni round() e floor() possono aiutare a gestire gli errori di arrotondamento.

Stringhe

  • Le stringhe in PHP possono essere racchiuse da singoli apici (`) o doppi apici (").
  • Con i doppi apici, le variabili all'interno della stringa vengono espanse, mentre con i singoli apici no.
  • Per includere apici all'interno di una stringa, è necessario "scaparli" con il backslash (\).
  • PHP supporta HEREDOC e NOWDOC per stringhe su più righe.

Stringhe in PHP

  • Le stringhe in PHP possono essere racchiuse tra apici singoli (') o doppi apici (").
  • I doppi apici consentono l'espansione delle variabili all'interno della stringa, mentre gli apici singoli no.
  • Per utilizzare gli apici all'interno di una stringa, è necessario "scaparli" con il backslash ().
  • Per stringhe su più righe, PHP supporta HEREDOC e NOWDOC.
  • HEREDOC consente di definire stringhe su più righe, mantenendo la formattazione originale.

Variabili Variabili

  • In PHP, è possibile utilizzare variabili il cui nome è dinamico.
  • Per ottenere questo, si usano due simboli di dollaro ( $$ ).
  • Esempio:
    • $var = "pippo"
    • $$var = "pluto"
    • echo $$var; // Output: pluto
  • In questo caso, $var contiene "pippo", quindi $$var equivale $pippo, che ha valore "pluto".

Array in PHP

  • Gli array in PHP sono mappe ordinate, con un'associazione tra indice e valore.
  • L'indice può essere sia numerico che una stringa.
  • Per definire un array numerico:
    • $array = array(3, 2, 5); // Primo valore 3, secondo valore 2, terzo valore 5
  • Per aggiungere un elemento alla fine dell'array:
    • $array[] = -1; // Aggiunge -1 alla fine dell'array
  • Gli array associativi sono definiti con coppie chiave-valore:
    • $albo = array("nome" => "Topolino", "anno" => 1949);

Funzioni per gli Array

  • implode(): converte un array in una stringa, separando i valori con un delimitatore.
    • $data = array(22, 1, 1945);
    • echo implode("-", $data); // Output: 22-1-1945
  • explode(): fa l'operazione inversa, trasformando una stringa in un array in base a un delimitatore.
    • $string = "pautasso,giovanni,24";
    • $array = explode(",", $string);
  • explode() accetta un parametro opzionale per il numero massimo di elementi.
    • $array = explode(",", $string, 2); // Crea un array con massimo 2 elementi

Ordinamento degli Array

  • sort(): ordina gli array numerici in ordine crescente.
  • rsort(): ordina gli array numerici in ordine decrescente.
  • ksort(): ordina un array associativo in base alle chiavi.
  • asort(): ordina un array associativo in base ai valori.
  • Esempio di ordinamento di un array associativo:
    • $array = array("Paolo" => 6, "Antonio" => 10, "Marco" => 8);
    • asort($array); // Ordina per valore: Paolo (6), Marco (8), Antonio (10)

Variabili Superglobali

  • Le variabili superglobali sono predefinite in PHP e accessibili globalmente.
  • Esempi:
    • $_GET: contiene i dati inviati tramite il metodo GET
    • $_POST: contiene i dati inviati tramite il metodo POST
    • $_REQUEST: contiene i dati inviati tramite entrambi i metodi GET e POST
    • $_COOKIE e $_SESSION: gestiscono rispettivamente i cookie e le sessioni
  • Esempio di utilizzo di $_GET:
    • if (isset($_GET['nome'])) {
    • echo "Ciao, ".$_GET['nome'];
    • }
  • Se un form invia un valore con il campo nome tramite il metodo GET, questo codice stamperà "Ciao, [nome]".
  • Le superglobali sono utili per accedere ai dati dai form HTML o per gestire sessioni e cookie.

Il Metodo GET in PHP

  • Il metodo GET invia i dati del form all'interno della URL.
  • I dati del form sono separati dal carattere '&'.
  • Alcuni caratteri speciali, come '=' e '&', vengono codificati in notazione %xx, dove xx è il codice esadecimale del carattere.
  • La codifica in esadecimale è utilizzata per entrambe le richieste GET e POST.
  • Lo spazio viene codificato con il simbolo '+'.
  • Il metodo POST invia i dati nel corpo della richiesta HTTP.
  • Entrambi i metodi GET e POST possono utilizzare la codifica x-www-form-urlencoded.
  • Il metodo POST utilizza il formato multipart/form-data per inviare dati complessi, come file.
  • Il metodo GET invia i parametri nella URL.
  • Il metodo POST invia i dati nel corpo della richiesta.
  • Gli array globali di PHP (GET,_GET, G​ET,_POST, $_REQUEST) permettono di accedere ai dati inviati dal form.

Codifica URL

  • La codifica URL è necessaria per trasmettere correttamente i dati tra il client e il server.
  • La codifica in esadecimale rappresenta il codice Latin-1 del carattere.
  • Caratteri come '=' e '&' devono essere codificati per evitare ambiguità.
  • Lo spazio viene codificato come '+'.
  • La codifica URL facilita la decodifica dei dati sul server.

Esempio di Form con Metodo GET

  • Un form con campi cognome, figli e nascita invia i dati tramite il metodo GET.
  • I caratteri speciali come spazi, accenti e slash vengono codificati nella URL.
  • L'URL resultante contiene i dati del form in forma codificata.

Differenze tra GET e POST

  • Il metodo GET invia i dati nella URL.
  • Il metodo POST invia i dati nel corpo della richiesta HTTP.
  • Entrambi i metodi utilizzano la codifica x-www-form-urlencoded, ma il metodo POST può utilizzare anche il formato mutlipart/form-data.
  • Il metodo GET è limitato nella quantità di dati che può inviare.
  • Il metodo POST è più flessibile e può inviare più dati, incluso file.

Header HTTP

  • L'header HTTP contiene informazioni sulla richiesta, come il tipo di browser e la lingua.
  • L'header HTTP per il metodo POST indica il tipo di codifica dei dati.

Accesso ai Dati del Form

  • Gli array globali di PHP (GET,_GET, G​ET,_POST, $_REQUEST) permettono di accedere ai dati inviati dal form.
  • Questi array semplificano la gestione dei dati inviati dal form.

Sintassi HTTP

  • Il body di una richiesta HTTP è separato dall'header da una riga vuota.
  • La riga vuota è la sintassi per separare l'header dal body.

Codifica Multipart/Form-data

  • La codifica multipart/form-data è un'alternativa alla codifica standard per i form.
  • In questo caso, la query string è vuota.
  • Gli elementi del form non sono codificati come URL encoded, ma vengono separati in parti distinte nel body del messaggio HTTP.
  • Il Content-Type viene impostato su multipart/form-data.
  • È necessario definire un boundary che separa le diverse parti del form.
  • Ogni parte del form è delimitata dal boundary.
  • Il boundary viene ripetuto alla fine del multipart seguito da -- per indicare la conclusione del messaggio.

Gestione dati da form

  • È importante gestire correttamente i casi in cui un dato non venga inviato da un form.
  • I controlli lato client (come quelli implementati in JavaScript) non sono sufficienti a garantire che i dati inviati siano corretti.
  • I controlli devono essere eseguiti anche lato server.
  • I radio button permettono di selezionare una sola opzione.
  • Le checkbox permettono di selezionare più opzioni o nessuna.
  • Il codice lato server deve essere in grado di gestire correttamente tutte le combinazioni di input.

Gestione file da form

  • Il controllo di tipo file consente all'utente di selezionare un file dal proprio file system.
  • Questo tipo di input è generalmente gestito tramite il metodo POST e la codifica multipart/form-data.
  • I file vengono trasmessi direttamente, senza essere codificati.
  • I byte del file vengono trasmessi direttamente, senza essere codificati come nell'URL encoding.

Trasmissione di file e metodi HTTP

  • Un file potrebbe triplicare le sue dimensioni durante la trasmissione, il che può essere un problema.
  • Per evitare questo, si utilizza il multipart, che consente di trasmettere un form contenente il file.
  • Il form può includere un controllo file e altri controlli di testo.
  • La codifica utilizzata è multipart MIME, con un boundary identificativo.
  • Ogni parte del form multipart è separata da un boundary e contiene informazioni sul controllo, come il nome e il contenuto.
  • Nel caso di un file, il contenuto è il testo del file stesso, in formato text/plain.

Confronto tra metodi GET e POST

  • Il metodo GET è più comprensibile, in quanto i parametri sono visibili nell'URI.
  • GET consente il caching e l'indicizzazione, che possono migliorare le prestazioni.
  • GET ha limiti nella quantità di dati che può trasportare.
  • Il metodo POST è più privato, in quanto i parametri non sono visibili nell'URI.
  • POST non ha limiti sulle dimensioni dei dati che può trasportare.

Schema di base del web dinamico

  • Il browser richiede una risorsa dinamica, il server la elabora tramite un interprete (come PHP).
  • Il server restituisce una pagina HTML, che può contenere script e risorse statiche o dinamiche.
  • L'interprete può interagire con un database per recuperare o salvare dati.
  • Questo schema è comune a diverse tecnologie server-side.
  • Il server genera la pagina e la invia al browser, che la renderizza e la visualizza all'utente.

Dimensione dei file e metodi HTTP

  • La dimensione dei file può essere significativamente aumentata durante la trasmissione, con un aumento fino a tre volte la dimensione originale
  • Il metodo multipart permette di trasmettere un file tramite un form specificando il tipo di codifica e utilizzando il metodo POST
  • La codifica utilizzata per il file è multipart MIME con un boundary (una sequenza di caratteri) che delimita le varie parti del form
  • Il file viene trasmesso con form-data ed un nome specifico (es. "myFile")
  • I controlli di tipo testo possono essere inclusi nel form multipart
  • L'ultima parte del messaggio multipart termina con il boundary seguito da "--"

Metodi GET e POST

  • Il metodo POST è obbligatorio quando si trasmette un file
  • GET: rendere chiaro al cliente cosa sta facendo, facilita il caching, l'indicizzazione da parte dei proxy e il debug
  • GET: ha un limite di dati che possono essere inviati, solitamente qualche migliaio di caratteri
  • POST: offre maggiore privacy, non lascia traccia nei nodi intermedi, non ha limiti sui dati che possono essere inviati
  • La scelta tra GET e POST dipende dal contesto e dai dati che si desiderano trasmettere

Web Dinamico: Server-Side Scripting

  • Il web Dinamico permette di creare pagine web che variano in base alle richieste dell'utente, al contenuto di un database o al tempo
  • CGI: (Common Gateway Interface) permette l'interazione con un programma eseguibe dal server, ma richiede molte risorse
  • Linguaggi di script lato server: JavaScript, Python, PHP, Perl, ecc. sono utilizzati per generare codice HTML dinamico
  • SSI (Server-Side Includes) permettono di integrare semplici informazioni nelle pagine web, ma sono abbastanza limitati
  • XSSI (Extended Server-Side Includes) ha aggiunto flessibilità ma sono stati sostituiti da linguaggi di script più potenti
  • JSP (Java Server Pages) creano pagine dinamiche combinando codice Java con template HTML
  • Framework e librerie offrono template e funzioni per scrivere codice in modo più efficiente e robusto
  • Il web dinamico necessita di un server più potente rispetto al web statico in quanto deve eseguire operazioni complesse

Problemi del web Dinamico e Caching

  • La difficoltà di fare caching e bookmarking per le pagine dinamiche, soprattutto per le pagine che non usano il metodo GET
  • I parametri non sono puntuali e la pagina cambia in base ai dati e al momento, rendendo complessa l'indicizzazione

Validazione e HTTP

  • Il codice HTML risultante, sia statico che dinamico, deve essere valido per essere correttamente visualizzato dal browser
  • I plugin del browser permettono di verificare la correttezza del codice HTML o CSS
  • L'applicazione deve restituire un messaggio HTTP corretto
  • Si possono specificare campi dell'header HTTP tramite PHP, ad esempio il Content-Type
  • In caso di errore, il codice PHP può restituire uno status di errore, come il 404 (risorsa non trovata)

Tecnologie Server-Side Scripting

  • ASP di Microsoft (ora ASP.NET): permette di sviluppare pagine dinamiche con Visual Basic o JavaScript
  • PHP: open source, largamente diffuso e supportato su quasi tutti i server
  • JSP (Java Server Pages): tecnologia sviluppata da Sun (ora Oracle) che combina codice Java con template HTML
  • Tomcat: un server che suppporta i servlet e traduce il codice JSP in una pagina HTML eseguibile lato server

Cicli e Array Associativi in PHP

  • foreach: ciclo specifico per iterare sugli array associativi in PHP, più efficiente di un ciclo for standard.
  • Sintassi foreach:
    • foreach ($array as $valore): itera su ogni valore dell'array.
    • foreach ($array as $chiave => $valore): itera su ciascuna chiave e valore dell'array.

Esempi di Utilizzo di foreach

  • Vocabolario: esempio che dimostra l'utilizzo di foreach per creare un vocabolario italiano-inglese.
  • Ciclo che itera su un vettore con foreach: esempio di codice che scorre un array contenente elementi come "test1", "test2", ecc., stampandoli uno per uno.
  • Vocabolario con foreach: esempio che dimostra l'uso di foreach per iterare su un array associativo, estraendo sia la chiave che il valore di ogni elemento e stampandoli in formato "chiave = valore".

count(): Funzione per Contare Elementi in Array

  • Funzionalità: conta gli elementi in un array (monodimensionale o multidimensionale).
  • Parametro Opzionale: COUNT_RECURSIVE per contare gli elementi di un array multidimensionale (matrici) ricorsivamente.
  • Esempio di Uso:
    • $dimensione = count($vettore): ottiene la lunghezza dell'array $vettore.
    • count($vettore, COUNT_RECURSIVE): conta gli elementi di un array multidimensionale $vettore ricorsivamente.

Funzioni di Gestione Indici in Array

  • reset(): riporta l'indice dell'array all'inizio.
  • end(): posiziona l'indice dell'array alla fine.
  • next(): sposta l'indice avanti di un elemento.
  • prev(): sposta l'indice indietro di un elemento.
  • key(): restituisce l'indice corrente dell'array.
  • current(): restituisce il valore corrente dell'array.
  • each(): funzione deprecata a partire da PHP 8.0, era equivalente a key() e current() combinati.

Esempi di Utilizzo delle Funzioni di Indice

  • Ciclo for che scorre un array associativo: esempio che utilizza reset(), key(), current(), e next() per scorrere un array associativo.
  • Ciclo for inverso: esempio che utilizza end() e prev() per scorrere un array in ordine inverso.

### Sanitizzazione dell'Input

  • La sanitizzazione dell'input è un'importante misura di sicurezza nella programmazione web, che aiuta a prevenire gli attacchi informatici e incidenti di sicurezza.
  • La sanitizzazione elimina potenziali rischi derivanti da caratteri non validi, come gli spazi, che possono causare errori di interpretazione del codice.
  • La funzione trim() rimuove gli spazi all'inizio e alla fine di una stringa.

Gestione degli Spazi

  • Gli spazi nei nomi di file o input possono causare malfunzionamenti del programma.
  • È fondamentale gestire gli spazi nei comandi della riga di comando, poiché un'interpretazione errata può portare a errori.

Verifica dell'Input

  • È importante verificare se un campo in un form è vuoto o non inizializzato.
  • Un campo può essere considerato vuoto in diversi casi: stringa vuota, stringa "0", intero 0, valore null, false, array vuoto, variabile non inizializzata o variabile non esistente.

Funzioni di Filtraggio e Validazione

  • PHP offre diverse funzioni di filtraggio e validazione per garantire la sicurezza del codice.
  • FILTER_VALIDATE_EMAIL verifica se un dato è un indirizzo email valido.
  • FILTER_SANITIZE_EMAIL rimuove i caratteri non validi da un indirizzo email.
  • I filtri sono disponibili dalla versione 5.2 di PHP.

Altri Filtri

  • FILTER_VALIDATE_BOOLEAN verifica se un valore è un booleano.
  • FILTER_VALIDATE_FLOAT valida i valori in virgola mobile.
  • FILTER_VALIDATE_INT valida i numeri interi.
  • FILTER_VALIDATE_IP valida gli indirizzi IP.
  • FILTER_VALIDATE_URL valida gli URL.

Espressioni Regolari

  • PHP supporta le espressioni regolari tramite FILTER_VALIDATE_REGEXP.
  • Questa funzione permette di creare filtri personalizzati per verificare se un dato corrisponde a un'espressione regolare specifica.

Regolar Expressions in PHP

  • Le regular expressions possono essere utilizzate in PHP in modo esplicito tramite l'uso di funzioni specifiche.
  • Queste funzioni sono simili a quelle utilizzate in JavaScript e consentono di validare gli input.
  • Esistono diverse funzioni per la convalida, come filter_var() che controlla se una variabile è valida.
  • Filter_var() verifica se una variabile è valida all'interno di un array associativo predefinito, ad esempio GETo_GET o G​ETo_POST.
  • L'utilizzo di filter_var() con un filtro appropriato può essere utilizzato per verificare la validità di un input.
  • Per esempio, filter_var() con il filtro FILTER_VALIDATE_EMAIL verifica se un indirizzo email è valido.
  • Le funzioni di filtraggio possono avere flag aggiuntive come "min_range" e "max_range" per il controllo degli intervalli minimi e massimi.
  • Ad esempio, FILTER_VALIDATE_INT può essere utilizzato per limitare un numero intero a un intervallo specifico.
  • Esistono altre funzioni come filter_id() che restituisce l'ID di un filtro e filter_input() che funziona in modo simile a filter_var() ma agisce direttamente sulle variabili di input come GETo_GET o G​ETo_POST.
  • Per filtrare un intero array, è possibile utilizzare filter_var_array() o filter_input_array().
  • La funzione filter_list() fornisce una lista di filtri disponibili sul sistema.
  • La validazione degli input è importante per la sicurezza e l'integrità del codice.
  • È possibile strutturare il codice in modo da verificare l'esistenza dell'input, pulirlo e poi validarlo con filter_var().
  • La validazione degli input deve essere eseguita prima di elaborare i dati, per evitare errori e potenziali vulnerabilità.
  • È importante conoscere i filtri disponibili e le opzioni per ogni filtro per una validazione efficiente.
  • È possibile utilizzare il filtro FILTER_VALIDATE_INT per controllare la validità di un'età, garantendo che sia compresa tra un intervallo definito.
  • Il filtro FILTER_VALIDATE_INT restituisce false se l'input non è un numero intero o se non è compreso nell'intervallo.

Espressioni Regolari in PHP

  • PHP utilizza l'estensione PCRE (Perl Compatible Regular Expressions) per gestire le espressioni regolari.
  • Le espressioni regolari in PHP seguono lo standard PCRE, con alcune estensioni specifiche.
  • Il flag i ignora le differenze di maiuscolo/minuscolo nell'espressione regolare.
  • I flag vengono specificati dopo la chiusura dell'espressione regolare.
  • I caratteri speciali come {n,m}, *, +, ? hanno lo stesso significato di JavaScript.

Funzioni per le Espressioni Regolari

  • preg_match(): Verifica se una stringa corrisponde a un pattern.
  • preg_replace(): Sostituisce parti di una stringa in base a un'espressione regolare.
  • preg_split(): Divide una stringa in base a un'espressione regolare.
  • preg_grep(): Restituisce un array di stringhe che corrispondono al pattern.

Gestione degli Errori

  • La funzione preg_last_error() restituisce l'ultimo errore durante l'esecuzione di un'espressione regolare.

Esempi di Utilizzo

  • preg_match():
    • Il flag PREG_OFFSET_CAPTURE permette di ottenere l'indice del match all'interno della stringa.
    • Il parametro opzionale offset indica da quale posizione della stringa iniziare la ricerca.
    • Il risultato di preg_match() è un valore booleano: 1 se c'è un match, 0 se non c'è, e false in caso di errore.
  • Esempio di Validazione:
    • Una password può essere validata con un'espressione regolare che verifica la lunghezza e i caratteri ammessi.
    • Una data può essere validata con un'espressione regolare che verifica il formato gg-mm-aaaa.
  • Catturare i Gruppi:
    • Le parentesi tonde () permettono di catturare i gruppi di caratteri all'interno dell'espressione regolare.
    • I gruppi catturati possono essere utilizzati per estrarre informazioni specifiche da una stringa.

Differenze tra false e 0

  • false viene restituito in caso di errore nelle funzioni di gestione delle espressioni regolari.
  • 0 indica che non è stato trovato alcun match.

Obiettivi degli sviluppatori

  • Gli sviluppatori hanno mirato a creare un modo semplice, estensibile ed efficiente per connettere nodi, applicazioni e utenti su una rete.
  • La comunicazione remota tramite il paradigma client-server è fondamentale.
  • Il client richiede un servizio dal server.
  • Un esempio comune è l'utilizzo di un browser per accedere a una pagina web ospitata da un server.

Struttura e Funzionalità di HTTP

  • HTTP è stato progettato per gestire dati di diverso tipo, adattandosi all'evoluzione di Internet.
  • Un'unità di dati HTTP contiene due parti: Header e Body.
  • L'Header fornisce informazioni sui dati, come il formato.
  • Il Body contiene i dati effettivi in un formato adatto al destinatario (ad esempio, HTML o JSON).
  • Il tipo MIME indica il formato dei dati (ad esempio, text/plain, text/html).

Efficienza e Caching

  • Meccanismi di caching memorizzano i dati trasmessi in nodi intermedi, riducendo il carico sui server.
  • Originariamente, HTTP era stateless, ma sono state introdotte funzionalità per la gestione dello stato, come i cookie.

Sicurezza in HTTP

  • HTTP nella sua versione originale non era sicuro.
  • HTTPS, tramite TLS, fornisce un livello di sicurezza.
  • La maggior parte dei siti web moderni utilizza HTTPS per garantire la confidenzialità e l'integrità dei dati.

Evoluzione di HTTP

  • HTTP/1.0 ha introdotto funzionalità di base per la trasmissione di documenti strutturati.
  • HTTP/1.1 ha migliorato le prestazioni con il riutilizzo delle connessioni TCP, la compressione dei dati e il caching.
  • HTTP/2 ha ulteriormente migliorato l'efficienza, consentendo la trasmissione simultanea di più risorse.
  • HTTP/3 utilizza QUIC (basato su UDP), aumentando ulteriormente la velocità e la sicurezza.
  • HTTP/3 utilizza UDP al posto di TCP, offrendo una velocità maggiore ma una minore affidabilità.
  • UDP è meno affidabile, ma è vantaggioso in canali fisici altamente affidabili come la fibra ottica.

RFC e la loro importanza

  • Gli RFC sono documenti open che descrivono protocolli e linee guida per Internet.
  • Forniscono un processo di sviluppo e standardizzazione trasparente e collaborativo.

HTTP 0.9: Le origini

  • HTTP 0.9 era una versione non standardizzata e semplice, che supportava solo il metodo GET.
  • Non aveva una separazione tra header e body.

HTTP 1.0: La prima versione ufficiale

  • HTTP 1.0 è stato standardizzato nell'RFC 1945.
  • Utilizzano TCP sulla porta 80.
  • E' stateless, ogni richiesta è indipendente.
  • I dati sono codificati a 8-bit.

Client-server e scambio di dati

  • Il modello client-server stabilisce una connessione TCP tra client e server.
  • Il client invia una richiesta GET al server, che risponde con i dati.
  • Ogni risorsa su una pagina web (ad esempio, immagini, script) richiede una connessione TCP separata.
  • Questo crea un overhead significativo, comportando molte connessioni per una singola pagina web.

Sintassi della URL e protocolli

  • Un URL è un indirizzo che identifica una risorsa su Internet.
  • La sintassi inizia con lo schema (protocollo), come HTTP, FTP, file o mailto.
  • Dopo :// segue l'host e il percorso della risorsa.

Esempio di HTTP 1.0: Overhead delle connessioni TCP

  • In pagine web complesse, ogni risorsa richiede una connessione TCP separata, causando un overhead significativo.
  • HTTP/1.1 ha parzialmente risolto questo problema riutilizzando le connessioni TCP.

URL

  • L'URL è un modo per identificare e accedere alle risorse su internet.
  • È composto da diversi componenti, tra cui:
    • Schema (ad esempio, http, https)
    • Host (ad esempio, www.miosito.it)
    • Porta (opzionale, ad esempio, 80 per HTTP, 443 per HTTPS)
    • Percorso (ad esempio, /lab7/esercizio7.1/es7.1.php)
    • Ancora (opzionale, ad esempio, #sezione)
  • Le URL non sono l'unico modo per gestire le risorse, sono limitate nel manipolare e categorizzare le risorse in modo logico.
  • Il DNS (Domain Name System) associa nomi logici a nodi di rete, rendendo più efficiente l'accesso alle risorse, soprattutto quelle replicate su più nodi.
  • Le URL logiche identificano una risorsa indipendentemente dalla sua posizione fisica, ad esempio:
    • RFC: rfc://ietf/rfc1234
    • ISBN: urn:isbn:9781234567890

Richieste HTTP

  • Le richieste HTTP sono formate da righe di testo ASCII, ogni riga termina con CRLF (Carriage Return e Line Feed).
  • Sono composte da un header e un body (opzionale).
  • L'header contiene informazioni come il tipo di contenuto e l'ultima modifica del file.
  • Il body contiene i dati utili, come immagini, video, file audio.
  • I metodi HTTP definiscono il tipo di azione che il cliente richiede al server, i principali sono:
    • GET: recupera una risorsa dal server
    • HEAD: recupera solo l'header della risposta
    • POST: invia dati al server
    • Anche con il metodo GET, è possibile inviare un insieme limitato di dati utilizzando la parte di query.

Risposte HTTP

  • Hanno un formato specifico che include la versione del protocollo, lo stato del risultato (successo o fallimento) e un codice di stato.
  • Lo status code indica il risultato della richiesta:
    • 200 OK: risorsa trovata e recuperata con successo
    • 404 Not Found: risorsa non trovata
  • Il codice di stato può essere accompagnato da una descrizione testuale opzionale, come "OK" per 200.
  • A seconda della connessione client-server, si può inviare una URI completa o solo il percorso della risorsa.

Metodi HTTP

  • GET:
    • Recupera una risorsa dal server, identificata tramite URL.
    • Sintassi: GET / HTTP/1.0
    • Se la risorsa è disponibile, il server risponde con: HTTP/1.0 200 OK seguito dagli header.
    • Gli header possono contenere informazioni come Content-Type, Content-Length, Last-Modified.
  • HEAD:
    • Funziona in modo simile a GET, ma restituisce solo gli header della risposta, senza il corpo della risorsa.
    • Sintassi: HEAD / HTTP/1.0
    • La risposta include solo gli header necessari.
  • POST:
    • Invia dati al server.
    • La richiesta POST contiene sia l'header che il body, che trasporta i dati.
    • Sintassi: POST /submit HTTP/1.0\nContent-Type: text/plain\nContent-Length: 12\n\nAntonio
    • Il server elabora i dati inviati e restituisce una risposta con il risultato dell'elaborazione.

Codici di Stato HTTP

  • I codici di stato HTTP, che iniziano con una cifra, indicano la categoria semantica dello scambio HTTP.
  • 1xx: Informazioni utili, non un errore o un successo completo.
  • 2xx: Successo. La risorsa è stata recuperata correttamente.
  • 3xx: Redirection: la risorsa è stata spostata o modificata.
  • 4xx: Errori del client.
  • 5xx: Errori del server.

Esempi di Codici di Stato

  • 200: "OK" - Risorsa recuperata correttamente.
  • 201: "Created" - Risorsa creata in risposta alla richiesta.
  • 202: "Accepted" - La richiesta è stata accettata, ma la risorsa non è ancora stata fornita completamente.
  • 204: "No Content" - Successo, ma la risposta non ha contenuto.
  • 301: "Moved Permanently" - La risorsa è stata spostata permanentemente. Il server specifica la nuova URI.
  • 304: "Not Modified" - La risorsa non è stata modificata, non serve scaricare nuovamente.
  • 400: "Bad Request" - Richiesta non valida o incomprensibile.
  • 401: "Unauthorized" - Necessario fornire credenziali.
  • 403: "Forbidden" - Accesso proibito, anche con credenziali valide.
  • 404: "Not Found" - Risorsa non trovata.
  • 500: "Internal Server Error" - Errore interno del server.
  • 501: "Not Implemented" - Funzionalità non implementata dal server.
  • 502: "Bad Gateway" - Problema di comunicazione tra intermediari (proxy).
  • 503: "Service Unavailable" - Servizio temporaneamente non disponibile.

Redirection e Codici 3xx

  • La redirezione indica che la risorsa non si trova più all'URI specificata.
  • Il server può usare il campo "Location" nell'header HTTP per fornire una nuova URI.
  • Per il codice 301, il server fornisce una nuova URI e il browser accede automaticamente alla nuova risorsa.

Metodo POST e Redirection

  • Con il metodo POST, il browser non dovrebbe inviare automaticamente i dati alla nuova URI in caso di redirezione.
  • L'utente dovrebbe essere coinvolto nella decisione di inviare i dati alla nuova destinazione.

Altri Header HTTP

  • Date: Indica la data di creazione del messaggio HTTP.
  • Pragma: Indica se la pagina può essere messa in cache.
  • Authorization: Invia le credenziali per l'accesso a risorse protette.
  • From: Indica una mailbox di contatto per l'autore della richiesta.
  • If-Modified-Since: Invia la risorsa solo se è stata modificata dopo una certa data. Se non modificata, il server restituisce il codice 304.

Referrer e User-Agent

  • Referrer: Indica da quale pagina il client è arrivato.
  • User-Agent: Indica il tipo di client (browser, dispositivo) che effettua la richiesta.

Response Header

  • Location: Per le redirection.
  • Server: Indica il tipo di software utilizzato dal server.
  • WWW-Authenticate: Il server chiede al client di fornire credenziali di autenticazione.
  • Entity Header: Descrivono il contenuto del corpo della richiesta o risposta HTTP, come il tipo di compressione dei dati.

Dati HTTP

  • La lunghezza del contenuto è espressa in byte.
  • Il tipo di contenuto è definito da una codifica, ad esempio: text/plain, text/html, audio/mp3.
  • La data di scadenza della pagina è specificata dal campo Expires.
  • Il campo Last-Modified indica la data dell'ultima modifica della risorsa in un formato specifico, come quello definito per le email.
  • Il formato ufficiale per Last-Modified è: tre caratteri per il giorno della settimana, due per il giorno del mese, tre per il mese, quattro per l'anno, e due per ora, minuti, secondi, seguiti dal fuso orario (generalmente GMT).

Wireshark

  • Wireshark è uno strumento per analizzare i pacchetti di rete come HTTP, TCP e IP.
  • Permette di osservare le trasmissioni di rete, sia via cavo che Wi-Fi, acquisendo i pacchetti direttamente dalla scheda di rete.
  • Le schede di rete possono essere impostate in "modalità promiscua" (per schede cablate) o "monitor mode" (per schede wireless) per acquisire tutti i pacchetti in transito.
  • Wireshark è disponibile per vari sistemi operativi e permette di scegliere la scheda di rete da monitorare.
  • È possibile applicare filtri per selezionare solo il traffico di interesse, ad esempio filtrare il traffico HTTP o TCP.

Interfaccia di Wireshark

  • L'interfaccia utente di Wireshark è divisa in tre aree:
    • Elenco dei pacchetti catturati: mostra una lista dei pacchetti in modo sintetico.
    • Dettagli del pacchetto selezionato: suddivide il pacchetto nei vari livelli del protocollo (ad esempio HTTP, TCP, IP).
    • Visualizzazione in esadecimale o bit per bit: mostra i dati grezzi del pacchetto.

Filtri in Wireshark

  • I filtri di cattura vengono impostati a priori per acquisire solo il traffico che soddisfa certe condizioni.
  • I filtri di visualizzazione vengono applicati ai dati già acquisiti per concentrarsi su determinati aspetti.
  • La sintassi dei filtri di cattura e di visualizzazione è diversa.
  • I filtri di visualizzazione usano una sintassi simile a quella di JavaScript o PHP, usando la doppia e commerciale (&&) per AND, il punto esclamativo (!) per NOT, e le due linee verticali (||) per OR.

Esempio di utilizzo di Wireshark

  • Per analizzare il traffico HTTP di un sito, come example.com, è possibile avviare Wireshark e selezionare la scheda di rete corretta.
  • È possibile filtrare i pacchetti HTTP per visualizzare solo il traffico relativo al sito.
  • Gli header HTTP forniscono informazioni dettagliate sul traffico, come l'host, la connessione, l'user-agent e il tipo di codifica.
  • Wireshark permette di visualizzare il codice sorgente HTML della pagina web ricevuta dal browser.

### Come viene mantenuto lo stato in HTTP

  • L'HTTP è un protocollo stateless, cioè non conserva informazioni sulle richieste precedenti.
  • Per gestire lo stato, si utilizzano meccanismi come i cookie e le sessioni.
  • I cookie sono piccoli pezzi di dati inviati dal server al client e memorizzati dal browser.
  • Le sessioni sono meccanismi lato server per conservare lo stato di un utente durante una sessione.

Direttive Include e Require

  • Le direttive include e require permettono di includere un file PHP all'interno di un altro.
  • La differenza è che include genera solo un warning se il file non viene trovato, mentre require genera un errore fatale e interrompe l'esecuzione del codice.
  • Esistono anche le varianti include_once e require_once, che verificano se il file è già stato incluso per evitare inclusioni ripetute.

Funzioni in PHP

  • Le funzioni in PHP sono case-insensitive.
  • La sintassi è simile ad altri linguaggi di programmazione.
  • Le funzioni possono ricevere parametri e restituire un valore.

Header HTTP

  • La funzione header() in PHP permette di manipolare gli header HTTP.
  • Possiamo modificare il tipo di contenuto, reindirizzare l'utente, impostare cookie, ecc.

### Variabili Globali

  • Le variabili definite all'esterno delle funzioni hanno uno scope globale.
  • È preferibile passare i dati tramite parametri di funzione, invece di usare la keyword global all'interno delle funzioni.
  • PHP offre degli array super globali come $_GET, $_POST, e $_SERVER.
  • L'array $_SERVER contiene informazioni sull'ambiente in cui gira il server web, incluse le variabili HTTP.

phpinfo()

  • La funzione phpinfo() visualizza una lista dettagliata di informazioni sul server, le configurazioni e l'ambiente.
  • I cookie sono piccoli blocchi di dati inviati dal server al browser e memorizzati localmente.
  • Quando il browser torna al server, questi dati vengono inviati automaticamente.
  • I cookie fungono da meccanismo di scambio dati tra browser e server, ma con uno scopo diverso rispetto alle normali richieste.
  • Servono a mantenere traccia delle informazioni, come l'identificazione di un utente autenticato.
  • Possono essere utilizzati anche per memorizzare le preferenze dell'utente, come le impostazioni dell'interfaccia utente.
  • PHP gestisce i cookie attraverso un array associativo chiamato $_COOKIE.
  • Ogni cookie è memorizzato con il suo nome come chiave dell'array e il suo valore come contenuto associato.
  • Per leggere un cookie, si usa la seguente funzione $_COOKIE['nome_cookie'].
  • Per creare un cookie, si usano le funzioni setcookie() e setrawcookie().
  • setcookie() invia i dati in formato standard, mentre setrawcookie() invia i dati senza modificarle o ri codificarli.
  • La maggior parte dei casi utilizza setcookie().

Parametri della Funzione setcookie()

  • nome: Il nome del cookie, obbligatorio.
  • valore: Il valore del cookie, opzionale.
  • scadenza: Indica il tempo di vita del cookie in secondi dall'epoca Unix (1 gennaio 1970).
  • percorso: Il percorso all'interno del server per cui il cookie è valido.
  • dominio: Il dominio per cui il cookie è valido.
  • secure: Un flag che indica se il cookie deve essere trasmesso solo tramite una connessione sicura (HTTPS).
  • httpOnly: Se impostato a true, il cookie può essere utilizzato solo tramite protocollo HTTP e non può essere accessibile tramite JavaScript.

Esempio Completo di Utilizzo di setcookie()

setcookie('nome_cookie', 'valore', time() + 3600, '/', 'www.polito.it', true, true);
  • Il cookie nome_cookie avrà il valore "valore" ed avrà una durata di 1 ora.
  • Sarà valido per il dominio www.polito.it e per tutti i percorsi del sito.
  • Sarà inviato solo tramite HTTPS e sara accessibile solo tramite protocolli HTTP.
if(isset($_COOKIE['nome_cookie'])) {
    echo $_COOKIE['nome_cookie'];
}
  • Questo frammento di codice verifica l'esistenza del cookie nome_cookie e ne stampa il valore se esiste.

Importanza di Scadenza, Percorso e Dominio

  • La scadenza del cookie è importante per determinare quando si vuole che venga eliminato.
  • Specificare un percorso e un dominio appropriati è fondamentale per evitare che il cookie sia accessibile da altre parti del server che non ne hanno bisogno.

Considerazioni Importanti

  • Le funzioni come setcookie() e header() devono essere utilizzate prima di qualsiasi output HTML.
  • Se queste funzioni vengono utilizzate dopo l'output HTML, si verifica un errore in quanto l'header HTTP è già stato inviato.

Sommario

I cookie sono uno strumento potente per mantenere lo stato tra il server e il client, consentendo di memorizzare informazioni persistenti nel browser dell'utente.

Unix Epoch e Funzioni Time() e Mktime()

  • La Unix Epoch è il punto di riferimento da cui si calcolano i secondi in PHP.
  • Le funzioni time() e mktime() restituiscono il numero di secondi trascorsi dalla Unix Epoch (1 gennaio 1970) fino all'istante corrente.
  • time() restituisce i secondi passati fino al momento attuale.
  • mktime() permette di specificare una data futura e restituisce i secondi trascorsi dalla Unix Epoch fino a quella data.
  • Utilizzando queste funzioni, si può gestire la scadenza dei cookie, ad esempio, impostando un cookie che scade in un'ora: setcookie('nome_cookie', 'valore', time() + 3600);
  • I cookie sono informazioni memorizzate sul computer dell'utente dal server web.
  • Sono utilizzati per ricordare preferenze, dati di login e altre informazioni.
  • La funzione setcookie() serve per impostare un cookie.
  • setcookie('nome', $_POST['your_name'], time() + 86400); imposta un cookie chiamato "nome" con valore preso dal form e una durata di 24 ore.
  • Se la scadenza di un cookie è già trascorsa, il browser lo elimina.
  • Per accedere ai cookie, si utilizza l'array $_COOKIE.
  • if (isset($_COOKIE['nome'])) { echo 'Ciao '.$_COOKIE['nome']; } controlla se il cookie "nome" esiste e, se sì, stampa un messaggio di saluto.
  • I cookie vengono inviati dal server al browser quando il browser richiede una pagina web.
  • Il browser memorizza i cookie localmente e li invia nuovamente al server con ogni richiesta successiva.
  • La presenza di cookie in una richiesta HTTP viene indicata nell'header Cookie, ad esempio: Cookie: nome=Andrea; cognome=Rossi.
  • La prima volta che si impostano cookie, potrebbero non essere letti correttamente perché il server deve prima inviarli al browser.
  • I cookie risolvono il problema della natura stateless del protocollo HTTP, che non è in grado di memorizzare le azioni passate dell'utente.
  • L'uso di cookie permette di conservare informazioni sullo stato utente in modo persistente, anche se l'utente si disconnette, chiude il browser o il server subisce dei riavvii.
  • L'istruzione setcookie() in PHP imposta un cookie, mentre l'array $_COOKIE contiene i cookie già inviati al server.
  • Per impostare una scadenza per un cookie, si può usare la funzione mktime() in PHP per specificare una data futura.
  • È possibile eliminare un cookie impostando una data passata.
  • I cookie sono memorizzati sul dispositivo dell'utente, quindi possono essere letti da altre applicazioni.
  • La sicurezza dei cookie è fondamentale per prevenire l'intercettazione di dati sensibili tramite attacchi man-in-the-middle.
  • Un uso eccessivo dei cookie può comportare problemi di privacy, in quanto le informazioni sulle attività degli utenti possono essere tracciate tra siti.
  • La maggior parte dei browser offre opzioni per cancellare i cookie e limitarne l'utilizzo.
  • I cookie spostano la gestione dello stato dal server al client, riducendo il carico del server, ma rendendo il sistema meno sicuro.
  • I cookie vengono creati sul client tramite la direttiva Set-Cookie nell'header HTTP inviato dal server.

  • La direttiva Set-Cookie ha il seguente formato: Set-Cookie: nome_cookie=valore_cookie;

  • È possibile inviare più direttive Set-Cookie separate da virgole, ad esempio: Set-Cookie: myName=Andrea, myFamilyName=Verdi;

  • I cookie vengono memorizzati nel file system del dispositivo dell'utente.

  • Quando il client effettua richieste successive al server, i cookie vengono ritrasmessi utilizzando la direttiva Cookie con il formato: Cookie: nome_cookie=valore_cookie;

  • La modalità di memorizzazione dei cookie varia a seconda del browser.

  • Alcuni browser li salvano in file separati per ogni sito web o utente, mentre altri li archiviano in un database SQLite o in una cartella dedicata.

  • I cookie sono tipicamente di piccole dimensioni.

  • I browser devono gestire cookie di almeno 4 KB e supportare un minimo di 300 cookie.

  • Ogni server può gestire fino a 20 cookie per client, con un limite complessivo di 80 KB per client.

  • La direttiva Set-Cookie contiene i seguenti campi:

    • Nome: il nome del cookie.
    • Valore: il valore del cookie.
    • Scadenza: data di scadenza del cookie (opzionale).
    • Dominio: dominio a cui il cookie si applica (opzionale).
    • Percorso: specifica il percorso per il quale il cookie è valido (opzionale).
    • Sicuro: il cookie viene trasmesso solo su connessioni HTTPS (opzionale).
    • HTTP Only: previene l'accesso al cookie tramite JavaScript (opzionale).
  • I caratteri speciali nei cookie, come virgole, punti e virgola o spazi, devono essere codificati utilizzando una codifica simile a quella delle URL (ad esempio, la virgola dovrebbe essere codificata come %2C).
  • I cookie senza una data di scadenza sono temporanei e vengono eliminati alla chiusura del browser.
  • Il flag secure assicura che il cookie venga trasmesso solo su connessioni HTTPS.

  • Il dominio e il percorso del cookie sono opzionali e, se non specificati, il browser userà quelli della URL che ha generato il cookie.

  • I cookie vengono ritrasmessi al server nelle successive richieste HTTP, se la URL è compatibile con i valori di dominio e percorso del cookie.

  • In PHP, i cookie ritrasmessi possono essere letti tramite l'array associativo $_COOKIE.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Description

Scopri le basi di PHP, un linguaggio di scripting open source utilizzato per lo sviluppo di pagine web dinamiche. Questo quiz esplora le funzionalità e le applicazioni di PHP, inclusa la sua esecuzione server-side e localmente. Metti alla prova le tue conoscenze su PHP e il suo utilizzo nella programmazione moderna.

More Like This

PHP Basics and Version 8
10 questions
PHP Basics
16 questions

PHP Basics

CrisperBeryllium avatar
CrisperBeryllium
Introduction to PHP and Scripting Languages
10 questions
Use Quizgecko on...
Browser
Browser