Podcast
Questions and Answers
Qual è il ruolo di un server web nell'esecuzione di PHP?
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?
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?
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?
Quali componenti sono inclusi in un pacchetto come XAMPP?
Come puoi eseguire un file PHP localmente?
Come puoi eseguire un file PHP localmente?
Qual è la struttura di un file PHP e quali tag sono usati?
Qual è la struttura di un file PHP e quali tag sono usati?
Perché un server web non invia direttamente file PHP al client?
Perché un server web non invia direttamente file PHP al client?
Quali sono i più diffusi server web per eseguire PHP?
Quali sono i più diffusi server web per eseguire PHP?
Quali operazioni può effettuare PHP con un database?
Quali operazioni può effettuare PHP con un database?
In cosa è simile la sintassi di PHP rispetto a JavaScript?
In cosa è simile la sintassi di PHP rispetto a JavaScript?
Qual è la principale caratteristica che distingue PHP da altri linguaggi di scripting?
Qual è la principale caratteristica che distingue PHP da altri linguaggi di scripting?
Cosa rende PHP un linguaggio open source vantaggioso per lo sviluppo?
Cosa rende PHP un linguaggio open source vantaggioso per lo sviluppo?
In che modo PHP può essere utilizzato senza un server web?
In che modo PHP può essere utilizzato senza un server web?
Quando è stata rilasciata la prima versione di PHP e qual è l'attuale versione supportata?
Quando è stata rilasciata la prima versione di PHP e qual è l'attuale versione supportata?
Qual è la durata del supporto per ciascuna versione di PHP e quali attività sono svolte in quegli anni?
Qual è la durata del supporto per ciascuna versione di PHP e quali attività sono svolte in quegli anni?
Perché le versioni di PHP precedenti alla 8 non dovrebbero essere utilizzate in produzione?
Perché le versioni di PHP precedenti alla 8 non dovrebbero essere utilizzate in produzione?
Quale versione di PHP non è mai stata ufficialmente rilasciata e perché?
Quale versione di PHP non è mai stata ufficialmente rilasciata e perché?
Quali sistemi operativi supportano PHP e cosa implica questa caratteristica?
Quali sistemi operativi supportano PHP e cosa implica questa caratteristica?
Come si distingue PHP nella formazione rispetto ad altri linguaggi più recenti?
Come si distingue PHP nella formazione rispetto ad altri linguaggi più recenti?
Qual è la relazione tra PHP e la comunità di sviluppatori riguardo alla documentazione?
Qual è la relazione tra PHP e la comunità di sviluppatori riguardo alla documentazione?
Qual è il simbolo utilizzato per dichiarare le variabili in PHP?
Qual è il simbolo utilizzato per dichiarare le variabili in PHP?
Cosa significa che PHP è case-sensitive in relazione alle variabili?
Cosa significa che PHP è case-sensitive in relazione alle variabili?
Quali sono i caratteri permessi per creare identificatori in PHP?
Quali sono i caratteri permessi per creare identificatori in PHP?
Qual è il valore predefinito assegnato a una variabile non inizializzata in PHP?
Qual è il valore predefinito assegnato a una variabile non inizializzata in PHP?
Che funzione si usa per verificare se una variabile è stata settata in PHP?
Che funzione si usa per verificare se una variabile è stata settata in PHP?
In PHP, quali sono i tipi di dati scalari supportati?
In PHP, quali sono i tipi di dati scalari supportati?
Cos'è la funzione unset() in PHP?
Cos'è la funzione unset() in PHP?
Quale tipo di caratteri è consigliato utilizzare per evitare problemi di compatibilità in PHP?
Quale tipo di caratteri è consigliato utilizzare per evitare problemi di compatibilità in PHP?
Qual è la principale differenza tra le versioni di PHP dalla 5 all'8?
Qual è la principale differenza tra le versioni di PHP dalla 5 all'8?
Quale simbolo può essere utilizzato per commenti su singola riga in PHP oltre a '//'?
Quale simbolo può essere utilizzato per commenti su singola riga in PHP oltre a '//'?
Qual è la differenza tra l'uso di singoli e doppi apici per le stringhe in PHP?
Qual è la differenza tra l'uso di singoli e doppi apici per le stringhe in PHP?
Cosa restituisce la funzione gettype() in PHP?
Cosa restituisce la funzione gettype() in PHP?
Come si può rappresentare un numero intero in base ottale in PHP?
Come si può rappresentare un numero intero in base ottale in PHP?
Cosa succede a un numero intero in caso di overflow in PHP?
Cosa succede a un numero intero in caso di overflow in PHP?
Quale funzione si può utilizzare per gestire gli errori di arrotondamento in PHP?
Quale funzione si può utilizzare per gestire gli errori di arrotondamento in PHP?
Cosa deve essere fatto per usare apici all'interno di una stringa con doppi apici?
Cosa deve essere fatto per usare apici all'interno di una stringa con doppi apici?
Cosa fa la funzione var_dump() in PHP?
Cosa fa la funzione var_dump() in PHP?
Qual è il formato di una stringa HEREDOC in PHP?
Qual è il formato di una stringa HEREDOC in PHP?
Come si definisce un numero binario in PHP?
Come si definisce un numero binario in PHP?
Qual è l'importanza della funzione is_int() in PHP?
Qual è l'importanza della funzione is_int() in PHP?
Qual è la differenza tra HEREDOC e NOWDOC in PHP?
Qual è la differenza tra HEREDOC e NOWDOC in PHP?
Come si escapano gli apici all'interno di una stringa racchiusa da doppi apici in PHP?
Come si escapano gli apici all'interno di una stringa racchiusa da doppi apici in PHP?
Cosa succede se si utilizza una variabile all'interno di una stringa racchiusa da singoli apici in PHP?
Cosa succede se si utilizza una variabile all'interno di una stringa racchiusa da singoli apici in PHP?
Cos'è una stringa HEREDOC e come si inizia?
Cos'è una stringa HEREDOC e come si inizia?
Perché è importante conoscere la differenza tra l'uso di singoli e doppi apici per le stringhe in PHP?
Perché è importante conoscere la differenza tra l'uso di singoli e doppi apici per le stringhe in PHP?
Qual è il simbolo utilizzato per creare variabili variabili in PHP?
Qual è il simbolo utilizzato per creare variabili variabili in PHP?
Come si definisce un array numerico in PHP?
Come si definisce un array numerico in PHP?
Qual è la funzione da utilizzare per trasformare un array in una stringa separata da un delimitatore?
Qual è la funzione da utilizzare per trasformare un array in una stringa separata da un delimitatore?
Quale funzione ordina un array associativo in base ai valori?
Quale funzione ordina un array associativo in base ai valori?
Cosa restituisce la funzione explode() in PHP?
Cosa restituisce la funzione explode() in PHP?
Come si aggiunge un elemento alla fine di un array in PHP?
Come si aggiunge un elemento alla fine di un array in PHP?
Qual è il risultato di un'operazione di overflow di un numero intero in PHP?
Qual è il risultato di un'operazione di overflow di un numero intero in PHP?
Qual è la sintassi per definire un array associativo in PHP?
Qual è la sintassi per definire un array associativo in PHP?
Qual è la funzione che ordina un array numerico in ordine decrescente?
Qual è la funzione che ordina un array numerico in ordine decrescente?
Cosa rappresenta il simbolo '$' in PHP?
Cosa rappresenta il simbolo '$' in PHP?
Qual è la differenza principale tra il metodo GET e il metodo POST nell'invio di un form?
Qual è la differenza principale tra il metodo GET e il metodo POST nell'invio di un form?
Come vengono rappresentati i caratteri speciali in una URL quando si utilizza il metodo GET?
Come vengono rappresentati i caratteri speciali in una URL quando si utilizza il metodo GET?
Cosa accade se nel valore di un campo di un form ci sono caratteri come '=' o '&'?
Cosa accade se nel valore di un campo di un form ci sono caratteri come '=' o '&'?
Quale simbolo viene utilizzato per rappresentare uno spazio in una stringa URL codificata?
Quale simbolo viene utilizzato per rappresentare uno spazio in una stringa URL codificata?
Qual è l'importanza della codifica dei caratteri in PHP quando si usano form?
Qual è l'importanza della codifica dei caratteri in PHP quando si usano form?
Quale file gestisce i dati inviati tramite un form utilizzando il metodo GET in PHP?
Quale file gestisce i dati inviati tramite un form utilizzando il metodo GET in PHP?
Cosa rappresenta la stringa %20 nei parametri URL?
Cosa rappresenta la stringa %20 nei parametri URL?
Perché si utilizza la codifica esadecimale per i caratteri speciali nelle URL?
Perché si utilizza la codifica esadecimale per i caratteri speciali nelle URL?
In che modo vengono separati i valori di più campi in una URL quando si utilizza il metodo GET?
In che modo vengono separati i valori di più campi in una URL quando si utilizza il metodo GET?
Come si comporta PHP quando non vengono codificati correttamente i dati in un form?
Come si comporta PHP quando non vengono codificati correttamente i dati in un form?
Come vengono codificati i caratteri speciali nello URI per il nome e cognome 'Marco Noè'?
Come vengono codificati i caratteri speciali nello URI per il nome e cognome 'Marco Noè'?
Qual è la differenza principale tra i metodi GET e POST in termini di invio di dati?
Qual è la differenza principale tra i metodi GET e POST in termini di invio di dati?
Quale intestazione HTTP è tipicamente presente nelle richieste POST per specificare il tipo di dati inviati?
Quale intestazione HTTP è tipicamente presente nelle richieste POST per specificare il tipo di dati inviati?
Cosa indica il formato 'multipart/form-data' nella codifica dei dati?
Cosa indica il formato 'multipart/form-data' nella codifica dei dati?
Com'è formata l'URI per una richiesta GET a insaula.php con i parametri NUM e Sede?
Com'è formata l'URI per una richiesta GET a insaula.php con i parametri NUM e Sede?
Qual è la codifica predefinita utilizzata per il metodo POST?
Qual è la codifica predefinita utilizzata per il metodo POST?
Che funzione svolgono gli array globali $_GET e $_POST in PHP?
Che funzione svolgono gli array globali $_GET e $_POST in PHP?
Come vengono rappresentati i caratteri non ASCII nelle richieste URI?
Come vengono rappresentati i caratteri non ASCII nelle richieste URI?
Quale vantaggio offre il metodo POST rispetto al metodo GET per l'invio di dati?
Quale vantaggio offre il metodo POST rispetto al metodo GET per l'invio di dati?
Quale valore di Content-Length potrebbe presentarsi in una richiesta POST?
Quale valore di Content-Length potrebbe presentarsi in una richiesta POST?
Qual è il rischio principale associato ai controlli solamente lato client nei form?
Qual è il rischio principale associato ai controlli solamente lato client nei form?
Perché è consigliato gestire l'input delle checkbox sul server in modo specifico?
Perché è consigliato gestire l'input delle checkbox sul server in modo specifico?
Qual è la differenza di gestione tra un campo di input di tipo radio e checkbox per il server?
Qual è la differenza di gestione tra un campo di input di tipo radio e checkbox per il server?
Perché è preferibile usare il metodo POST per l'upload di file rispetto al metodo GET?
Perché è preferibile usare il metodo POST per l'upload di file rispetto al metodo GET?
Cosa implica la codifica 'multipart/form-data' nella gestione dei file?
Cosa implica la codifica 'multipart/form-data' nella gestione dei file?
Qual è un potenziale problema quando si assume che un dato sia sempre presente nei form?
Qual è un potenziale problema quando si assume che un dato sia sempre presente nei form?
In che modo un controllo JavaScript sui dati influisce sulla sicurezza dei dati inviati?
In che modo un controllo JavaScript sui dati influisce sulla sicurezza dei dati inviati?
Qual è il ruolo della severità nel gestire gli errori di input tramite form?
Qual è il ruolo della severità nel gestire gli errori di input tramite form?
Perché i controlli di integrità dei dati sono essenziali nel contesto dei file upload?
Perché i controlli di integrità dei dati sono essenziali nel contesto dei file upload?
Qual è la differenza principale tra controlli lato client e controlli lato server?
Qual è la differenza principale tra controlli lato client e controlli lato server?
Qual è la funzione della riga vuota nella sintassi HTTP?
Qual è la funzione della riga vuota nella sintassi HTTP?
Cosa caratterizza la codifica multipart/form-data
rispetto a quella URL encoded
?
Cosa caratterizza la codifica multipart/form-data
rispetto a quella URL encoded
?
Qual è la funzione del boundary
in una richiesta multipart/form-data
?
Qual è la funzione del boundary
in una richiesta multipart/form-data
?
Cosa indica la presenza del --
dopo un boundary
finale nel multipart/form-data
?
Cosa indica la presenza del --
dopo un boundary
finale nel multipart/form-data
?
In che modo deve essere gestito il caso in cui un dato non venga inviato in un form?
In che modo deve essere gestito il caso in cui un dato non venga inviato in un form?
Quale informazione deve essere presente nell'header quando si utilizza multipart/form-data
?
Quale informazione deve essere presente nell'header quando si utilizza multipart/form-data
?
Che cosa rappresentano i campi Accept
e Referer
nell'header HTTP?
Che cosa rappresentano i campi Accept
e Referer
nell'header HTTP?
Cosa accade alla codifica dello spazio con multipart/form-data
?
Cosa accade alla codifica dello spazio con multipart/form-data
?
Quale valore rappresenta nella richiesta multipart/form-data
, un campo come NUM
con valore 12A
?
Quale valore rappresenta nella richiesta multipart/form-data
, un campo come NUM
con valore 12A
?
In cosa consiste la sequenza di caratteri detta boundary
in un form?
In cosa consiste la sequenza di caratteri detta boundary
in un form?
Qual è un vantaggio significativo della visibilità dei parametri nella query string del metodo GET?
Qual è un vantaggio significativo della visibilità dei parametri nella query string del metodo GET?
Qual è il motivo principale per cui si utilizza il metodo POST invece di GET per inviare dati di grandi dimensioni?
Qual è il motivo principale per cui si utilizza il metodo POST invece di GET per inviare dati di grandi dimensioni?
In che modo il metodo POST offre vantaggi in termini di privacy rispetto al metodo GET?
In che modo il metodo POST offre vantaggi in termini di privacy rispetto al metodo GET?
Qual è la funzione di un interprete, come PHP, nel contesto di una richiesta web dinamica?
Qual è la funzione di un interprete, come PHP, nel contesto di una richiesta web dinamica?
Qual è la caratteristica comune a molte tecnologie server-side nella generazione di pagine web dinamiche?
Qual è la caratteristica comune a molte tecnologie server-side nella generazione di pagine web dinamiche?
Perché, in determinate situazioni, è preferibile utilizzare un linguaggio lato server come Python o JavaScript rispetto a PHP?
Perché, in determinate situazioni, è preferibile utilizzare un linguaggio lato server come Python o JavaScript rispetto a PHP?
Qual è il principale limite del metodo GET in relazione alla quantità di dati che può gestire?
Qual è il principale limite del metodo GET in relazione alla quantità di dati che può gestire?
In cosa si distingue la risposta del server quando si utilizzano metodi come GET o POST?
In cosa si distingue la risposta del server quando si utilizzano metodi come GET o POST?
Qual è l'importanza della compatibilità con diversi sistemi operativi per PHP?
Qual è l'importanza della compatibilità con diversi sistemi operativi per PHP?
Come può un interprete come PHP interagire con un database durante l'elaborazione di una richiesta?
Come può un interprete come PHP interagire con un database durante l'elaborazione di una richiesta?
Qual è l'effetto di trasmettere un file su una dimensione notevolmente aumentata?
Qual è l'effetto di trasmettere un file su una dimensione notevolmente aumentata?
Che cosa permette il metodo multipart nel contesto della trasmissione di file?
Che cosa permette il metodo multipart nel contesto della trasmissione di file?
Qual è la funzione del boundary nel formato multipart MIME?
Qual è la funzione del boundary nel formato multipart MIME?
Quali vantaggi offre il metodo GET rispetto al metodo POST?
Quali vantaggi offre il metodo GET rispetto al metodo POST?
In quali situazioni è obbligatorio utilizzare il metodo POST?
In quali situazioni è obbligatorio utilizzare il metodo POST?
Come è strutturata una richiesta multipart con un file e controlli di tipo testo?
Come è strutturata una richiesta multipart con un file e controlli di tipo testo?
Quali informazioni specifica il controllo file nella richiesta multipart?
Quali informazioni specifica il controllo file nella richiesta multipart?
Perché è importante la scelta tra i metodi GET e POST nel trasferimento di dati?
Perché è importante la scelta tra i metodi GET e POST nel trasferimento di dati?
Cosa rappresenta il valore '3' nel controllo di tipo testo chiamato numeroCopie?
Cosa rappresenta il valore '3' nel controllo di tipo testo chiamato numeroCopie?
Qual è la sintassi per terminare un messaggio multipart?
Qual è la sintassi per terminare un messaggio multipart?
Qual è il motivo principale per cui si utilizza la codifica multipart quando si trasmette un file?
Qual è il motivo principale per cui si utilizza la codifica multipart quando si trasmette un file?
Cosa rappresenta il controllo 'numeroCopie' in un form multipart?
Cosa rappresenta il controllo 'numeroCopie' in un form multipart?
Qual è la differenza principale tra i metodi GET e POST nel contesto della trasmissione di file?
Qual è la differenza principale tra i metodi GET e POST nel contesto della trasmissione di file?
Che ruolo gioca il boundary in una richiesta multipart?
Che ruolo gioca il boundary in una richiesta multipart?
Perché a volte è vantaggioso utilizzare il metodo GET nei form?
Perché a volte è vantaggioso utilizzare il metodo GET nei form?
Cosa accade se si tenta di trasmettere un file di dimensioni notevoli senza multipart?
Cosa accade se si tenta di trasmettere un file di dimensioni notevoli senza multipart?
Qual è la rappresentazione del contenuto del file in un messaggio HTTP multipart?
Qual è la rappresentazione del contenuto del file in un messaggio HTTP multipart?
Qual è uno degli svantaggi relativi al metodo GET?
Qual è uno degli svantaggi relativi al metodo GET?
Cosa indica la conclusione di una parte in un messaggio multipart?
Cosa indica la conclusione di una parte in un messaggio multipart?
Qual è il principale limite del metodo GET in termini di quantità di dati?
Qual è il principale limite del metodo GET in termini di quantità di dati?
Cosa si intende per 'file di piccole dimensioni' nel contesto della trasmissione?
Cosa si intende per 'file di piccole dimensioni' nel contesto della trasmissione?
In quali situazioni è preferibile utilizzare il metodo POST rispetto a GET?
In quali situazioni è preferibile utilizzare il metodo POST rispetto a GET?
Qual è la caratteristica distintiva del web dinamico rispetto a quello statico?
Qual è la caratteristica distintiva del web dinamico rispetto a quello statico?
Quali tecnologie di scripting server-side sono comunemente utilizzate insieme a PHP?
Quali tecnologie di scripting server-side sono comunemente utilizzate insieme a PHP?
Cosa suggerisce l'utilizzo di framework e librerie nello sviluppo web?
Cosa suggerisce l'utilizzo di framework e librerie nello sviluppo web?
Qual è uno dei principali svantaggi del web dinamico riguardo al caching?
Qual è uno dei principali svantaggi del web dinamico riguardo al caching?
Quale messaggio HTTP indica una risorsa non trovata e come viene restituito tramite PHP?
Quale messaggio HTTP indica una risorsa non trovata e come viene restituito tramite PHP?
Per quale motivo l'approccio CGI è considerato superato nel contesto attuale dello sviluppo web?
Per quale motivo l'approccio CGI è considerato superato nel contesto attuale dello sviluppo web?
Qual è il ruolo dell’header HTTP Content-Type in un’applicazione PHP?
Qual è il ruolo dell’header HTTP Content-Type in un’applicazione PHP?
Che tipo di operazioni complesse può eseguire un server nel contesto del web dinamico?
Che tipo di operazioni complesse può eseguire un server nel contesto del web dinamico?
Qual è la funzione del ciclo foreach in PHP quando si lavora con gli array associativi?
Qual è la funzione del ciclo foreach in PHP quando si lavora con gli array associativi?
Come si accede a un valore in un array associativo in PHP?
Come si accede a un valore in un array associativo in PHP?
Cosa fa il ciclo for nel contesto del codice fornito?
Cosa fa il ciclo for nel contesto del codice fornito?
Qual è la differenza tra l'utilizzo di foreach e un ciclo for tradizionale in PHP?
Qual è la differenza tra l'utilizzo di foreach e un ciclo for tradizionale in PHP?
Come si possono stampare sia chiavi che valori di un array associativo utilizzando foreach?
Come si possono stampare sia chiavi che valori di un array associativo utilizzando foreach?
In quale situazione è comune utilizzare gli array associativi in PHP?
In quale situazione è comune utilizzare gli array associativi in PHP?
Cosa rappresenta 'giallo' e 'yellow' nell'esempio di vocabolario in PHP?
Cosa rappresenta 'giallo' e 'yellow' nell'esempio di vocabolario in PHP?
Qual è l'importanza della sintassi as chiave => valore all'interno di foreach?
Qual è l'importanza della sintassi as chiave => valore all'interno di foreach?
Cosa si intende per 'gestione implicita' degli indici nel ciclo foreach?
Cosa si intende per 'gestione implicita' degli indici nel ciclo foreach?
Cosa stamperebbe il ciclo foreach nel caso di un array contenente 'test1' a 'test10'?
Cosa stamperebbe il ciclo foreach nel caso di un array contenente 'test1' a 'test10'?
Qual è la differenza tra l'uso della funzione count()
su un array monodimensionale rispetto a un array multidimensionale?
Qual è la differenza tra l'uso della funzione count()
su un array monodimensionale rispetto a un array multidimensionale?
Perché è consigliato calcolare la lunghezza di un array una sola volta in un ciclo for
invece di farlo ad ogni iterazione?
Perché è consigliato calcolare la lunghezza di un array una sola volta in un ciclo for
invece di farlo ad ogni iterazione?
Quali funzioni vengono utilizzate per manipolare l'indice di un array in PHP e quali sono le loro funzioni principali?
Quali funzioni vengono utilizzate per manipolare l'indice di un array in PHP e quali sono le loro funzioni principali?
Cosa succede se si utilizza un ciclo while
con key()
per scorrere un array fino a quando restituisce null
?
Cosa succede se si utilizza un ciclo while
con key()
per scorrere un array fino a quando restituisce null
?
Cosa rappresentano le chiavi e i valori in un array associativo e come vengono stampati usando printf
?
Cosa rappresentano le chiavi e i valori in un array associativo e come vengono stampati usando printf
?
Quale vantaggio offre la funzione each()
e perché è stata deprecata a partire da PHP 8.0?
Quale vantaggio offre la funzione each()
e perché è stata deprecata a partire da PHP 8.0?
Come si può stampare un array in ordine inverso utilizzando le funzioni appropriate in PHP?
Come si può stampare un array in ordine inverso utilizzando le funzioni appropriate in PHP?
Qual è l'importanza di racchiudere variabili complesse tra parentesi graffe in PHP durante la stampa?
Qual è l'importanza di racchiudere variabili complesse tra parentesi graffe in PHP durante la stampa?
Quali sono le implicazioni di una struttura ciclica nella leggibilità e nell'efficienza del codice?
Quali sono le implicazioni di una struttura ciclica nella leggibilità e nell'efficienza del codice?
Come possiamo utilizzare la funzione printf
per visualizzare i valori di un array associativo in modo formattato?
Come possiamo utilizzare la funzione printf
per visualizzare i valori di un array associativo in modo formattato?
Perché è fondamentale la sanitizzazione dell'input in un'applicazione web?
Perché è fondamentale la sanitizzazione dell'input in un'applicazione web?
Qual è il risultato della funzione trim()
su una stringa con spazi iniziali e finali?
Qual è il risultato della funzione trim()
su una stringa con spazi iniziali e finali?
Quali caratteri potrebbero causare problemi negli input degli utenti per i nomi di file?
Quali caratteri potrebbero causare problemi negli input degli utenti per i nomi di file?
Qual è un approccio comune per evitare problemi di sanitizzazione degli input?
Qual è un approccio comune per evitare problemi di sanitizzazione degli input?
Come può un input con uno spazio inaspettato influenzare l'esecuzione di un comando in un sistema operativo?
Come può un input con uno spazio inaspettato influenzare l'esecuzione di un comando in un sistema operativo?
Che ruolo svolge la funzione trim()
nel migliorare la robustezza del codice?
Che ruolo svolge la funzione trim()
nel migliorare la robustezza del codice?
Qual è l'importanza di avere controllo sugli input ricevuti dagli utenti?
Qual è l'importanza di avere controllo sugli input ricevuti dagli utenti?
In quali modi possono essere sanitizzati gli input in un'applicazione PHP?
In quali modi possono essere sanitizzati gli input in un'applicazione PHP?
Quali sono i rischi associati a input non sanitizzati in un'applicazione web?
Quali sono i rischi associati a input non sanitizzati in un'applicazione web?
Cosa succede se un nome di file contiene spazi e viene processato?
Cosa succede se un nome di file contiene spazi e viene processato?
Quali sono i principali casi in cui una variabile è considerata vuota in PHP?
Quali sono i principali casi in cui una variabile è considerata vuota in PHP?
Qual è la funzione di FILTER_VALIDATE_EMAIL in PHP?
Qual è la funzione di FILTER_VALIDATE_EMAIL in PHP?
Cosa rimuove la funzione FILTER_SANITIZE_EMAIL?
Cosa rimuove la funzione FILTER_SANITIZE_EMAIL?
In quale caso si utilizza FILTER_NULL_ON_FAILURE?
In quale caso si utilizza FILTER_NULL_ON_FAILURE?
Cosa verifica FILTER_VALIDATE_IP in PHP?
Cosa verifica FILTER_VALIDATE_IP in PHP?
Che ruolo svolge FILTER_VALIDATE_BOOLEAN in PHP?
Che ruolo svolge FILTER_VALIDATE_BOOLEAN in PHP?
Qual è l'importanza di utilizzare espressioni regolari con FILTER_VALIDATE_REGEXP?
Qual è l'importanza di utilizzare espressioni regolari con FILTER_VALIDATE_REGEXP?
Quale filtro utilizzeresti per validare un URL in PHP?
Quale filtro utilizzeresti per validare un URL in PHP?
Cosa restituisce FILTER_VALIDATE_FLOAT se il valore non è valido?
Cosa restituisce FILTER_VALIDATE_FLOAT se il valore non è valido?
Come viene gestita la validazione degli interi con FILTER_VALIDATE_INT?
Come viene gestita la validazione degli interi con FILTER_VALIDATE_INT?
Quale problema si presenta fino alla versione 5.4.11 di PHP riguardo ai valori +0 e -0 nel contesto dei float?
Quale problema si presenta fino alla versione 5.4.11 di PHP riguardo ai valori +0 e -0 nel contesto dei float?
Come può filter_var essere utilizzato per validare un'email?
Come può filter_var essere utilizzato per validare un'email?
In che modo viene effettuato il controllo sulla variabile 'cognome' in un array in PHP?
In che modo viene effettuato il controllo sulla variabile 'cognome' in un array in PHP?
Qual è l'importanza del filtro FILTER_VALIDATE_INT con le opzioni min_range e max_range?
Qual è l'importanza del filtro FILTER_VALIDATE_INT con le opzioni min_range e max_range?
Quale funzione PHP è utilizzata per controllare se una variabile è valida o meno?
Quale funzione PHP è utilizzata per controllare se una variabile è valida o meno?
Come si definisce un'opzione per limitare l'età a un certo intervallo in PHP?
Come si definisce un'opzione per limitare l'età a un certo intervallo in PHP?
Quale valore viene assegnato se la variabile 'email' non è presente in $_GET?
Quale valore viene assegnato se la variabile 'email' non è presente in $_GET?
Cosa restituisce l'uso di filter_var con FILTER_VALIDATE_EMAIL per un'email non valida?
Cosa restituisce l'uso di filter_var con FILTER_VALIDATE_EMAIL per un'email non valida?
Che vantaggio offre la possibilità di passare flag alle funzioni di filtraggio in PHP?
Che vantaggio offre la possibilità di passare flag alle funzioni di filtraggio in PHP?
Come viene gestita la variabile 'age' per assicurare che rientri in un preciso intervallo?
Come viene gestita la variabile 'age' per assicurare che rientri in un preciso intervallo?
Qual è la differenza principale tra filter_var() e filter_input() in PHP?
Qual è la differenza principale tra filter_var() e filter_input() in PHP?
Quando si dovrebbe utilizzare filter_var_array() rispetto a filter_var()?
Quando si dovrebbe utilizzare filter_var_array() rispetto a filter_var()?
Quale funzione si utilizza per ottenere l'elenco dei filtri disponibili in PHP?
Quale funzione si utilizza per ottenere l'elenco dei filtri disponibili in PHP?
Qual è l'importanza della funzione trim() quando si gestisce un indirizzo email da $_GET?
Qual è l'importanza della funzione trim() quando si gestisce un indirizzo email da $_GET?
Come si definiscono i parametri minimi e massimi per validare un numero intero in PHP?
Come si definiscono i parametri minimi e massimi per validare un numero intero in PHP?
Che valore restituisce filter_var() quando l'input non è valido?
Che valore restituisce filter_var() quando l'input non è valido?
Cosa controlla la funzione FILTER_VALIDATE_EMAIL in PHP?
Cosa controlla la funzione FILTER_VALIDATE_EMAIL in PHP?
Qual è il risultato di filter_input() se la variabile di input non è impostata?
Qual è il risultato di filter_input() se la variabile di input non è impostata?
Quale filtro sarebbe appropriato per assicurarsi che un'età rientri in un dato intervallo in PHP?
Quale filtro sarebbe appropriato per assicurarsi che un'età rientri in un dato intervallo in PHP?
Perché è importante validare gli input ricevuti da $_POST e $_GET?
Perché è importante validare gli input ricevuti da $_POST e $_GET?
Qual è la funzione di preg_match() in PHP?
Qual è la funzione di preg_match() in PHP?
Cosa indicano i simboli ^ e $ nelle espressioni regolari in PHP?
Cosa indicano i simboli ^ e $ nelle espressioni regolari in PHP?
Come funziona la funzione preg_replace() in PHP?
Come funziona la funzione preg_replace() in PHP?
Qual è lo scopo dell'espressione regolare utilizzata in preg_match
per validare la password?
Qual è lo scopo dell'espressione regolare utilizzata in preg_match
per validare la password?
Qual è la differenza tra preg_grep() e preg_match() in PHP?
Qual è la differenza tra preg_grep() e preg_match() in PHP?
Come viene gestita la differenza tra un match trovato e nessun match in preg_match
?
Come viene gestita la differenza tra un match trovato e nessun match in preg_match
?
Cosa significa il flag PREG_OFFSET_CAPTURE
in preg_match
?
Cosa significa il flag PREG_OFFSET_CAPTURE
in preg_match
?
Cosa fa la funzione preg_last_error() in PHP?
Cosa fa la funzione preg_last_error() in PHP?
Che funzione hanno le parentesi quadre [] nelle espressioni regolari in PHP?
Che funzione hanno le parentesi quadre [] nelle espressioni regolari in PHP?
Qual è il formato richiesto per la data nella validazione tramite preg_match
?
Qual è il formato richiesto per la data nella validazione tramite preg_match
?
Come si rappresentano le ripetizioni nelle espressioni regolari in PHP?
Come si rappresentano le ripetizioni nelle espressioni regolari in PHP?
Qual è il ruolo delle parentesi tonde nell'espressione regolare per la data?
Qual è il ruolo delle parentesi tonde nell'espressione regolare per la data?
In che modo preg_match
restituisce le informazioni sui match quando si utilizzano le parentesi per catturare?
In che modo preg_match
restituisce le informazioni sui match quando si utilizzano le parentesi per catturare?
Cosa indica un flag come 'i' nelle espressioni regolari in PHP?
Cosa indica un flag come 'i' nelle espressioni regolari in PHP?
Quali sono i principali utilizzi delle espressioni regolari in PHP?
Quali sono i principali utilizzi delle espressioni regolari in PHP?
Cosa restituisce preg_match
quando non viene trovata alcuna corrispondenza?
Cosa restituisce preg_match
quando non viene trovata alcuna corrispondenza?
Qual è la sintassi per utilizzare preg_split() in PHP?
Qual è la sintassi per utilizzare preg_split() in PHP?
Perché è importante considerare le maiuscole e minuscole nell'espressione regolare /^ciao/i
?
Perché è importante considerare le maiuscole e minuscole nell'espressione regolare /^ciao/i
?
Come verificare se una stringa inizia con 'ciao' utilizzando preg_match
?
Come verificare se una stringa inizia con 'ciao' utilizzando preg_match
?
Quale sarebbe un esempio di una password non valida secondo il pattern utilizzato?
Quale sarebbe un esempio di una password non valida secondo il pattern utilizzato?
Qual è la differenza principale tra client e server in un'architettura client-server?
Qual è la differenza principale tra client e server in un'architettura client-server?
Cosa rappresenta l'header in un'unità di dato HTTP?
Cosa rappresenta l'header in un'unità di dato HTTP?
In quale formato può essere trasmesso il body di un'unità di dato HTTP se il destinatario è un umano?
In quale formato può essere trasmesso il body di un'unità di dato HTTP se il destinatario è un umano?
Che cosa permette di gestire il tipo MIME nelle trasmissioni HTTP?
Che cosa permette di gestire il tipo MIME nelle trasmissioni HTTP?
Quale aspetto è emerso come fondamentale per il miglioramento delle trasmissioni HTTP nel tempo?
Quale aspetto è emerso come fondamentale per il miglioramento delle trasmissioni HTTP nel tempo?
Come è strutturato un'unità di dato HTTP?
Come è strutturato un'unità di dato HTTP?
Qual è uno degli obiettivi principali che gli sviluppatori di HTTP si sono posti?
Qual è uno degli obiettivi principali che gli sviluppatori di HTTP si sono posti?
Cosa implica la mediazione di un browser nel paradigma client-server?
Cosa implica la mediazione di un browser nel paradigma client-server?
Qual è il problema principale legato alle richieste HTTP/1.0 per una pagina web complessa?
Qual è il problema principale legato alle richieste HTTP/1.0 per una pagina web complessa?
Cosa rappresenta lo schema in una URL e qual è il più comune?
Cosa rappresenta lo schema in una URL e qual è il più comune?
Come influenza il protocollo HTTP/1.1 la gestione delle connessioni rispetto a HTTP/1.0?
Come influenza il protocollo HTTP/1.1 la gestione delle connessioni rispetto a HTTP/1.0?
Nel contesto di una URL, cosa indica l'host?
Nel contesto di una URL, cosa indica l'host?
Qual è l'effetto dell'overhead delle connessioni TCP nelle pagine web con molti elementi?
Qual è l'effetto dell'overhead delle connessioni TCP nelle pagine web con molti elementi?
In quali situazioni il protocollo 'file' viene utilizzato nelle URL?
In quali situazioni il protocollo 'file' viene utilizzato nelle URL?
Qual è la sintassi corretta di una URL e quali sono le sue componenti principali?
Qual è la sintassi corretta di una URL e quali sono le sue componenti principali?
Come si differenziano le richieste per ciascuna risorsa in HTTP/1.0?
Come si differenziano le richieste per ciascuna risorsa in HTTP/1.0?
Qual è il vantaggio principale del caching nei protocolli HTTP?
Qual è il vantaggio principale del caching nei protocolli HTTP?
Cosa rappresenta la S in HTTPS?
Cosa rappresenta la S in HTTPS?
Qual è la differenza principale tra HTTP/2 e HTTP/3?
Qual è la differenza principale tra HTTP/2 e HTTP/3?
Perché HTTP 0.9 non ha avuto larga diffusione?
Perché HTTP 0.9 non ha avuto larga diffusione?
Qual è l'importanza degli RFC nel contesto di Internet?
Qual è l'importanza degli RFC nel contesto di Internet?
Come funziona il meccanismo dei cookie in HTTP?
Come funziona il meccanismo dei cookie in HTTP?
Quali migliorie ha introdotto HTTP/1.1 rispetto a HTTP/1.0?
Quali migliorie ha introdotto HTTP/1.1 rispetto a HTTP/1.0?
Per quali motivi HTTP è considerato stateless?
Per quali motivi HTTP è considerato stateless?
Qual è il ruolo del protocollo TLS in HTTPS?
Qual è il ruolo del protocollo TLS in HTTPS?
Che vantaggi presenta l'uso di UDP nel protocollo QUIC?
Che vantaggi presenta l'uso di UDP nel protocollo QUIC?
Quando è appropriato utilizzare un protocollo con controlli di affidabilità rigorosi?
Quando è appropriato utilizzare un protocollo con controlli di affidabilità rigorosi?
In che modo HTTP/3 è stato standardizzato e quali sono le sue caratteristiche?
In che modo HTTP/3 è stato standardizzato e quali sono le sue caratteristiche?
Quali sono le conseguenze della flessibilità di HTTP 1.0 rispetto a 1.1?
Quali sono le conseguenze della flessibilità di HTTP 1.0 rispetto a 1.1?
Cosa implica la codifica dei dati a 8-bit in HTTP 1.0?
Cosa implica la codifica dei dati a 8-bit in HTTP 1.0?
Qual è la funzione della porta in un URL e quale porta predefinita utilizza HTTP?
Qual è la funzione della porta in un URL e quale porta predefinita utilizza HTTP?
Cosa avviene se si prova a collegarsi a una porta non in ascolto su un server?
Cosa avviene se si prova a collegarsi a una porta non in ascolto su un server?
Come si differenziano le porte predefinite per HTTP e HTTPS?
Come si differenziano le porte predefinite per HTTP e HTTPS?
Qual è la funzione del path in un URL?
Qual è la funzione del path in un URL?
Cosa è un'ancora in un URL e come viene utilizzata?
Cosa è un'ancora in un URL e come viene utilizzata?
Qual è la differenza tra file PHP e HTML nel percorso di un URL?
Qual è la differenza tra file PHP e HTML nel percorso di un URL?
In che modo un browser gestisce il collegamento a una porta predefinita?
In che modo un browser gestisce il collegamento a una porta predefinita?
Cosa significa che l'accesso a una risorsa può essere ristretto?
Cosa significa che l'accesso a una risorsa può essere ristretto?
Qual è il significato di DNS in relazione all'accesso alle risorse?
Qual è il significato di DNS in relazione all'accesso alle risorse?
Quali informazioni devono essere incluse in un URL per accedere a una risorsa specifica?
Quali informazioni devono essere incluse in un URL per accedere a una risorsa specifica?
Qual è il ruolo dello schema HTTP nel contesto degli URL?
Qual è il ruolo dello schema HTTP nel contesto degli URL?
Quali sono le principali differenze tra i metodi HTTP GET e POST?
Quali sono le principali differenze tra i metodi HTTP GET e POST?
Che informazioni contiene l'header di una richiesta HTTP?
Che informazioni contiene l'header di una richiesta HTTP?
Cosa rappresenta il codice di stato '404' in una risposta HTTP?
Cosa rappresenta il codice di stato '404' in una risposta HTTP?
Qual è la differenza tra i metodi HEAD e GET in HTTP?
Qual è la differenza tra i metodi HEAD e GET in HTTP?
Qual è la funzione del DNS in relazione agli URL?
Qual è la funzione del DNS in relazione agli URL?
Come viene definita una URL logica e quale esempio si può fare?
Come viene definita una URL logica e quale esempio si può fare?
Quali informazioni possono essere contenute in un body di una richiesta POST?
Quali informazioni possono essere contenute in un body di una richiesta POST?
In che modo una connessione TCP si integra nella sintassi di una richiesta GET?
In che modo una connessione TCP si integra nella sintassi di una richiesta GET?
Cosa viene riportato in una risposta server dopo una richiesta HTTP di successo?
Cosa viene riportato in una risposta server dopo una richiesta HTTP di successo?
Cosa indica un codice di stato HTTP che inizia con 2?
Cosa indica un codice di stato HTTP che inizia con 2?
Qual è il significato del codice di stato 404?
Qual è il significato del codice di stato 404?
Che differenza c'è tra il codice 301 e il codice 302?
Che differenza c'è tra il codice 301 e il codice 302?
Qual è il risultato del codice di stato 204?
Qual è il risultato del codice di stato 204?
A cosa si riferisce il codice di errore 500?
A cosa si riferisce il codice di errore 500?
Cosa comporta un codice di stato che inizia con 4?
Cosa comporta un codice di stato che inizia con 4?
Qual è la funzione del codice di stato 503?
Qual è la funzione del codice di stato 503?
Qual è l'importanza della prima cifra del codice di stato HTTP?
Qual è l'importanza della prima cifra del codice di stato HTTP?
Cosa significa il codice 202 in una risposta HTTP?
Cosa significa il codice 202 in una risposta HTTP?
Cosa rappresenta il codice 304?
Cosa rappresenta il codice 304?
Cosa indica il codice di stato 301 in una redirection?
Cosa indica il codice di stato 301 in una redirection?
Come deve comportarsi un browser in caso di redirection con metodo POST?
Come deve comportarsi un browser in caso di redirection con metodo POST?
Qual è la funzione dell'header 'Location' in una risposta HTTP?
Qual è la funzione dell'header 'Location' in una risposta HTTP?
Cosa restituisce un server se una risorsa non è stata modificata dopo una certa data?
Cosa restituisce un server se una risorsa non è stata modificata dopo una certa data?
Qual è la differenza tra l'header 'Referrer' e 'User-Agent'?
Qual è la differenza tra l'header 'Referrer' e 'User-Agent'?
Cos'è l'header 'WWW-Authenticate' e a cosa serve?
Cos'è l'header 'WWW-Authenticate' e a cosa serve?
In quale situazione viene utilizzato l'header 'Pragma'?
In quale situazione viene utilizzato l'header 'Pragma'?
Quali informazioni possono essere contenute nel campo User-Agent?
Quali informazioni possono essere contenute nel campo User-Agent?
Qual è il significato dell'header 'Date' in una risposta HTTP?
Qual è il significato dell'header 'Date' in una risposta HTTP?
Quando si utilizza un codice di stato 304, cosa deve fare il client?
Quando si utilizza un codice di stato 304, cosa deve fare il client?
Che tipo di informazioni forniscono i campi 'Expires' e 'Last-Modified' in una richiesta HTTP?
Che tipo di informazioni forniscono i campi 'Expires' e 'Last-Modified' in una richiesta HTTP?
Qual è il formato standard accettato per la data nel campo 'Last-Modified'?
Qual è il formato standard accettato per la data nel campo 'Last-Modified'?
Quale strumento permette di analizzare il traffico di rete e quali protocolli può osservare?
Quale strumento permette di analizzare il traffico di rete e quali protocolli può osservare?
Cosa consente di fare la 'modalità promiscua' nelle schede di rete cablate?
Cosa consente di fare la 'modalità promiscua' nelle schede di rete cablate?
Come si differenzia il formato RFC 850 da quello ufficiale per il campo 'Last-Modified'?
Come si differenzia il formato RFC 850 da quello ufficiale per il campo 'Last-Modified'?
Qual è l'uso della 'modalità monitor' per le schede wireless?
Qual è l'uso della 'modalità monitor' per le schede wireless?
Qual è l'importanza della corretta definizione delle date nei protocolli HTTP?
Qual è l'importanza della corretta definizione delle date nei protocolli HTTP?
Che funzione ha il campo 'Expires' in una risposta HTTP?
Che funzione ha il campo 'Expires' in una risposta HTTP?
In che modo Wireshark può aiutare nella diagnosi di problemi di rete?
In che modo Wireshark può aiutare nella diagnosi di problemi di rete?
Qual è la funzione principale del campo 'Last-Modified' in un'intestazione HTTP?
Qual è la funzione principale del campo 'Last-Modified' in un'intestazione HTTP?
Quali sono le tre aree principali dell'interfaccia utente di Wireshark?
Quali sono le tre aree principali dell'interfaccia utente di Wireshark?
Cosa permette di fare un filtro di cattura in Wireshark?
Cosa permette di fare un filtro di cattura in Wireshark?
Come si differenziano i filtri di cattura dai filtri di visualizzazione in Wireshark?
Come si differenziano i filtri di cattura dai filtri di visualizzazione in Wireshark?
Cosa indica l'header 'User-Agent' in una richiesta HTTP?
Cosa indica l'header 'User-Agent' in una richiesta HTTP?
Qual è la sintassi corretta per escludere determinate porte in un filtro di cattura?
Qual è la sintassi corretta per escludere determinate porte in un filtro di cattura?
Quando è utile applicare filtri di visualizzazione in Wireshark?
Quando è utile applicare filtri di visualizzazione in Wireshark?
Cosa potrebbe indicare una risposta 'No Content' in una comunicazione HTTP?
Cosa potrebbe indicare una risposta 'No Content' in una comunicazione HTTP?
Quale header HTTP informa il server sui tipi di contenuti compressi accettati dal client?
Quale header HTTP informa il server sui tipi di contenuti compressi accettati dal client?
Qual è il significato di 'HTTP/1.1 200 OK' in una risposta del server?
Qual è il significato di 'HTTP/1.1 200 OK' in una risposta del server?
Perché è importante salvare i pacchetti acquisiti in Wireshark?
Perché è importante salvare i pacchetti acquisiti in Wireshark?
Qual è il metodo preferito per passare dati alle funzioni in PHP, evitando l'uso di variabili globali?
Qual è il metodo preferito per passare dati alle funzioni in PHP, evitando l'uso di variabili globali?
Come si utilizza la funzione header() per redirigere a un'altra pagina in PHP?
Come si utilizza la funzione header() per redirigere a un'altra pagina in PHP?
Qual è la funzione per visualizzare tutte le variabili PHP in ambiente di esecuzione?
Qual è la funzione per visualizzare tutte le variabili PHP in ambiente di esecuzione?
Cosa permette di fare l'array super globale $_SERVER in PHP?
Cosa permette di fare l'array super globale $_SERVER in PHP?
Perché è sconsigliato utilizzare la keyword global per accedere a variabili globali all'interno delle funzioni?
Perché è sconsigliato utilizzare la keyword global per accedere a variabili globali all'interno delle funzioni?
Qual è la sintassi corretta per impostare il tipo di contenuto di una risposta HTTP in PHP?
Qual è la sintassi corretta per impostare il tipo di contenuto di una risposta HTTP in PHP?
Come si può utilizzare un ciclo foreach per accedere alle informazioni di $_SERVER?
Come si può utilizzare un ciclo foreach per accedere alle informazioni di $_SERVER?
Quali tipi di dati contengono tipicamente le variabili dell'array $_SERVER?
Quali tipi di dati contengono tipicamente le variabili dell'array $_SERVER?
Qual è un modo corretto per passare variabili tra funzioni senza utilizzare la keyword global?
Qual è un modo corretto per passare variabili tra funzioni senza utilizzare la keyword global?
Cosa restituisce il codice echo $_SERVER['HTTP_USER_AGENT'];
?
Cosa restituisce il codice echo $_SERVER['HTTP_USER_AGENT'];
?
In che modo si differenziano le funzioni include e require nella gestione degli errori in PHP?
In che modo si differenziano le funzioni include e require nella gestione degli errori in PHP?
Qual è la differenza principale tra include_once e require_once rispetto alle loro controparti senza '_once'?
Qual è la differenza principale tra include_once e require_once rispetto alle loro controparti senza '_once'?
In quali contesti risultano più utili le direttive include e require?
In quali contesti risultano più utili le direttive include e require?
Come si gestiscono gli errori durante l'inclusione dei file con PHP?
Come si gestiscono gli errori durante l'inclusione dei file con PHP?
Qual è la sintassi per includere un file in PHP?
Qual è la sintassi per includere un file in PHP?
Qual è il rischio principale associato all'uso di funzioni che semplificano la gestione dello stato in HTTP?
Qual è il rischio principale associato all'uso di funzioni che semplificano la gestione dello stato in HTTP?
Cosa restituisce la funzione echo quando si esegue echo somma(1, 2)
se somma
è definita come function somma($a, $b) { return $a + $b; }
?
Cosa restituisce la funzione echo quando si esegue echo somma(1, 2)
se somma
è definita come function somma($a, $b) { return $a + $b; }
?
In che senso PHP è case-insensitive e come influisce sulle funzioni?
In che senso PHP è case-insensitive e come influisce sulle funzioni?
Perché è importante organizzare il codice PHP in modo modulare?
Perché è importante organizzare il codice PHP in modo modulare?
Qual è il parametro obbligatorio della funzione setcookie()?
Qual è il parametro obbligatorio della funzione setcookie()?
Come si imposta il valore di scadenza di un cookie per un'ora?
Come si imposta il valore di scadenza di un cookie per un'ora?
A cosa serve il parametro 'HttpOnly' in setcookie()?
A cosa serve il parametro 'HttpOnly' in setcookie()?
Qual è l'effetto di specificare un percorso ristretto nel setcookie()?
Qual è l'effetto di specificare un percorso ristretto nel setcookie()?
Qual è la sintassi per leggere un cookie in PHP?
Qual è la sintassi per leggere un cookie in PHP?
Come si imposta la scadenza di un cookie per un giorno?
Come si imposta la scadenza di un cookie per un giorno?
Perché è importante specificare il dominio nel setcookie()?
Perché è importante specificare il dominio nel setcookie()?
Cosa rende un cookie 'Secure' quando è impostato in setcookie()?
Cosa rende un cookie 'Secure' quando è impostato in setcookie()?
Cosa succede se non si imposta il valore del cookie nel setcookie()?
Cosa succede se non si imposta il valore del cookie nel setcookie()?
Quale rischio si corre non limitando il percorso e il dominio di un cookie?
Quale rischio si corre non limitando il percorso e il dominio di un cookie?
Qual è la funzione di base di un cookie nel contesto di un'interazione tra browser e server?
Qual è la funzione di base di un cookie nel contesto di un'interazione tra browser e server?
Qual è la principale differenza tra le funzioni setcookie() e setrawcookie() in PHP?
Qual è la principale differenza tra le funzioni setcookie() e setrawcookie() in PHP?
Quale array associativo in PHP viene utilizzato per gestire i cookie?
Quale array associativo in PHP viene utilizzato per gestire i cookie?
Cosa deve essere fatto per evitare errori quando si utilizzano le funzioni setcookie() o header() in PHP?
Cosa deve essere fatto per evitare errori quando si utilizzano le funzioni setcookie() o header() in PHP?
Come si imposta un cookie che dura un'ora in PHP?
Come si imposta un cookie che dura un'ora in PHP?
Qual è l'errore di codice nell'esempio 'echo "Ciao"; setcookie('nome_cookie', 'valore');'?
Qual è l'errore di codice nell'esempio 'echo "Ciao"; setcookie('nome_cookie', 'valore');'?
Perché i cookie sono considerati un meccanismo di scambio dati diverso rispetto a una normale richiesta?
Perché i cookie sono considerati un meccanismo di scambio dati diverso rispetto a una normale richiesta?
Cosa accade se si utilizza setcookie() dopo l'invio di dati HTML?
Cosa accade se si utilizza setcookie() dopo l'invio di dati HTML?
Qual è l'importanza dei cookie nel garantire l'accesso a pagine riservate?
Qual è l'importanza dei cookie nel garantire l'accesso a pagine riservate?
In che modo i cookie possono essere utilizzati per memorizzare preferenze degli utenti?
In che modo i cookie possono essere utilizzati per memorizzare preferenze degli utenti?
Qual è la sintassi corretta in PHP per controllare se esiste un cookie prima di accedervi?
Qual è la sintassi corretta in PHP per controllare se esiste un cookie prima di accedervi?
Come si visualizzano tutti i cookie memorizzati in PHP?
Come si visualizzano tutti i cookie memorizzati in PHP?
Qual è il primo passaggio del processo di gestione dei cookie tra browser e server?
Qual è il primo passaggio del processo di gestione dei cookie tra browser e server?
Cosa deve succedere affinché un cookie sia visibile al server nelle richieste successive?
Cosa deve succedere affinché un cookie sia visibile al server nelle richieste successive?
Qual è il modo corretto di inviare un cookie in una richiesta HTTP?
Qual è il modo corretto di inviare un cookie in una richiesta HTTP?
Qual è il comportamento comune dei cookie durante le prove di laboratorio?
Qual è il comportamento comune dei cookie durante le prove di laboratorio?
Perché è importante utilizzare isset()
quando si lavora con i cookie in PHP?
Perché è importante utilizzare isset()
quando si lavora con i cookie in PHP?
Quale struttura è utilizzata in PHP per gestire i cookie?
Quale struttura è utilizzata in PHP per gestire i cookie?
Come può essere visualizzato il valore di un cookie specifico?
Come può essere visualizzato il valore di un cookie specifico?
Qual è la funzione utilizzata per impostare un cookie con una durata di un'ora?
Qual è la funzione utilizzata per impostare un cookie con una durata di un'ora?
Come si può cancellare un cookie nel browser?
Come si può cancellare un cookie nel browser?
Quale funzione si utilizza per creare un timestamp per una data futura specifica?
Quale funzione si utilizza per creare un timestamp per una data futura specifica?
Cosa restituisce la funzione time() in PHP?
Cosa restituisce la funzione time() in PHP?
Qual è il vantaggio di utilizzare cookie per memorizzare informazioni come nome e cognome?
Qual è il vantaggio di utilizzare cookie per memorizzare informazioni come nome e cognome?
Qual è la sintassi corretta per impostare un cookie che dura 24 ore?
Qual è la sintassi corretta per impostare un cookie che dura 24 ore?
Cosa accade se non si specificano alcuni parametri nella funzione mktime()?
Cosa accade se non si specificano alcuni parametri nella funzione mktime()?
Perché utilizzare la radice (/) come percorso per un cookie è utile?
Perché utilizzare la radice (/) come percorso per un cookie è utile?
In che modo un cookie può essere impostato con una scadenza specifica in una data futura?
In che modo un cookie può essere impostato con una scadenza specifica in una data futura?
Qual è l'effetto di impostare un cookie con una scadenza già passata?
Qual è l'effetto di impostare un cookie con una scadenza già passata?
Quale metodo si utilizza in PHP per impostare un cookie che durerà 24 ore?
Quale metodo si utilizza in PHP per impostare un cookie che durerà 24 ore?
Come si può eliminare un cookie in PHP?
Come si può eliminare un cookie in PHP?
Quali sono i problemi di sicurezza associati all'uso dei cookie?
Quali sono i problemi di sicurezza associati all'uso dei cookie?
Come influiscono i cookie sul carico di lavoro del server?
Come influiscono i cookie sul carico di lavoro del server?
Qual è la differenza principale tra l'uso di mktime() e time() nella gestione dei cookie?
Qual è la differenza principale tra l'uso di mktime() e time() nella gestione dei cookie?
Qual è un possibile svantaggio dell'utilizzo indiscriminato dei cookie sul rispetto della privacy?
Qual è un possibile svantaggio dell'utilizzo indiscriminato dei cookie sul rispetto della privacy?
In che modo i browser moderni aiutano gli utenti nella gestione dei cookie?
In che modo i browser moderni aiutano gli utenti nella gestione dei cookie?
Cosa viene visualizzato se un cookie è impostato correttamente e letto con successo in PHP?
Cosa viene visualizzato se un cookie è impostato correttamente e letto con successo in PHP?
Quale percorso deve essere specificato per rendere un cookie accessibile su tutte le pagine del dominio?
Quale percorso deve essere specificato per rendere un cookie accessibile su tutte le pagine del dominio?
Qual è l'effetto di impiegare HTTPS nell'impostazione dei cookie?
Qual è l'effetto di impiegare HTTPS nell'impostazione dei cookie?
Perché $_COOKIE potrebbe sembrare vuoto dopo l'uso di setcookie() nella stessa pagina?
Perché $_COOKIE potrebbe sembrare vuoto dopo l'uso di setcookie() nella stessa pagina?
Qual è la differenza principale tra lo stato stateless del protocollo HTTP e l'uso dei cookie?
Qual è la differenza principale tra lo stato stateless del protocollo HTTP e l'uso dei cookie?
Come possono i cookie migliorare la gestione dello stato in un'applicazione web?
Come possono i cookie migliorare la gestione dello stato in un'applicazione web?
Quali tecniche venivano utilizzate in passato per mantenere lo stato dell'utente prima dei cookie?
Quali tecniche venivano utilizzate in passato per mantenere lo stato dell'utente prima dei cookie?
Quando sono stati introdotti i cookie e quale problema risolvono?
Quando sono stati introdotti i cookie e quale problema risolvono?
Qual è un esempio di come i cookie possono essere utilizzati per gestire un carrello della spesa?
Qual è un esempio di come i cookie possono essere utilizzati per gestire un carrello della spesa?
Perché l'approccio della riscrittura degli URL per gestire lo stato era considerato inefficace?
Perché l'approccio della riscrittura degli URL per gestire lo stato era considerato inefficace?
In che modo i cookie differiscono dai campi nascosti nei form per quanto riguarda la sicurezza?
In che modo i cookie differiscono dai campi nascosti nei form per quanto riguarda la sicurezza?
Qual è la principale funzionalità dei cookie rispetto alle sessioni in PHP?
Qual è la principale funzionalità dei cookie rispetto alle sessioni in PHP?
Cosa significa che il protocollo HTTP sia stateless e come i cookie affrontano questa limitazione?
Cosa significa che il protocollo HTTP sia stateless e come i cookie affrontano questa limitazione?
Qual è la struttura di base della direttiva Set-Cookie in HTTP?
Qual è la struttura di base della direttiva Set-Cookie in HTTP?
Come vengono inviati i cookie dal client al server durante le richieste successive?
Come vengono inviati i cookie dal client al server durante le richieste successive?
Qual è la dimensione minima che i browser devono supportare per i cookie secondo la specifica della versione 1?
Qual è la dimensione minima che i browser devono supportare per i cookie secondo la specifica della versione 1?
Qual è una delle funzioni della direttiva HttpOnly per i cookie?
Qual è una delle funzioni della direttiva HttpOnly per i cookie?
Cosa accade ai cookie quando scadono o vengono eliminati dall'utente?
Cosa accade ai cookie quando scadono o vengono eliminati dall'utente?
Qual è il limite complessivo di dimensioni per i cookie gestiti da un server per client?
Qual è il limite complessivo di dimensioni per i cookie gestiti da un server per client?
Qual è il significato del campo 'Domain' nella direttiva Set-Cookie?
Qual è il significato del campo 'Domain' nella direttiva Set-Cookie?
Quale metodo possono utilizzare i browser per memorizzare i cookie?
Quale metodo possono utilizzare i browser per memorizzare i cookie?
Qual è una delle informazioni opzionali che possono essere incluse in un cookie?
Qual è una delle informazioni opzionali che possono essere incluse in un cookie?
Quali sono i due valori principali che compongono un cookie?
Quali sono i due valori principali che compongono un cookie?
Qual è la funzione della codifica dei caratteri speciali nei cookie?
Qual è la funzione della codifica dei caratteri speciali nei cookie?
Cosa succede a un cookie senza data di scadenza?
Cosa succede a un cookie senza data di scadenza?
In che modo il flag secure migliora la sicurezza dei cookie?
In che modo il flag secure migliora la sicurezza dei cookie?
Come vengono ritrasmessi i cookie dal client al server?
Come vengono ritrasmessi i cookie dal client al server?
Qual è l'uso dell'array associativo $_COOKIE in PHP?
Qual è l'uso dell'array associativo $_COOKIE in PHP?
Quali caratteri speciali devono essere codificati nei cookie e perché?
Quali caratteri speciali devono essere codificati nei cookie e perché?
Cosa implica avere il dominio e il percorso opzionali per i cookie?
Cosa implica avere il dominio e il percorso opzionali per i cookie?
Qual è la differenza principale tra cookie temporanei e persistenti?
Qual è la differenza principale tra cookie temporanei e persistenti?
Come può l'uso di cookie influenzare l'esperienza dell'utente in una web application?
Come può l'uso di cookie influenzare l'esperienza dell'utente in una web application?
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 chiamatatop
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) eresource
, 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, mentrevar_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()
efloor()
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, GET,_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, GET,_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 sumultipart/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()
ecurrent()
combinati.
Esempi di Utilizzo delle Funzioni di Indice
- Ciclo for che scorre un array associativo: esempio che utilizza
reset()
,key()
,current()
, enext()
per scorrere un array associativo. - Ciclo for inverso: esempio che utilizza
end()
eprev()
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 GETo_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 GETo_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.
- Il flag
- 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
erequire
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, mentrerequire
genera un errore fatale e interrompe l'esecuzione del codice. - Esistono anche le varianti
include_once
erequire_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
- 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.
Gestione dei Cookie in PHP
- 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']
.
Creazione dei Cookie
- Per creare un cookie, si usano le funzioni
setcookie()
esetrawcookie()
. setcookie()
invia i dati in formato standard, mentresetrawcookie()
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.
Lettura dei Cookie
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()
eheader()
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()
emktime()
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);
Utilizzo dei Cookie
- 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.
Funzionamento dei Cookie in HTTP
- 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.
Cookie: Il fondamento della gestione dello stato in web
- 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.
Creazione e Trasmissione dei Cookie
-
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;
Memorizzazione dei 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.
Dimensioni dei Cookie
-
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.
Formato della Direttiva Set-Cookie
-
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).
Caratteri Speciali nei Cookie
- 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).
Scadenza dei Cookie
- I cookie senza una data di scadenza sono temporanei e vengono eliminati alla chiusura del browser.
Trasmissione Sicura dei Cookie
-
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.
Lato Client: Trasmissione dei Cookie al Server
-
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.
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.