PHP - 1. ! Apache è configurato per utilizzare l'utente attuale! E' possibile modificare l username da preferenze utente



Documenti analoghi
Installazione & Configurazione Php e MySQL su Mac Os X. Php

Il Web Server e il protocollo HTTP

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Apache 2, PHP5, MySQL 5

Corso di PHP. Prerequisiti. 1 - Introduzione

Corso basi di dati Installazione e gestione di PWS

19. LA PROGRAMMAZIONE LATO SERVER

Il Protocollo HTTP e la programmazione di estensioni Web

PRESENTAZIONE. Mauro Rainis.

Il web server Apache Lezione n. 3. Introduzione

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Corso di PHP. Prerequisiti. 1 - Introduzione

Corso basi di dati Introduzione alle ASP

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

InitZero s.r.l. Via P. Calamandrei, Arezzo

Indice Configurazione di PHP Test dell ambiente di sviluppo 28

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Componenti Web: client-side e server-side

Manuali.net. Nevio Martini

Xampp. Valeriano Maysonnave - A.A. 2014/2015 -

filrbox Guida all uso dell interfaccia WEB Pag. 1 di 44

IBM SPSS Statistics per Mac OS - Istruzioni di installazione (Licenza per sito)

Programmare in Java. Olga Scotti

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Corso Eclipse. Prerequisiti. 1 Introduzione

ICARO Terminal Server per Aprile

IBM SPSS Statistics per Linux - Istruzioni di installazione (Licenza per sito)

Capitolo 4 Pianificazione e Sviluppo di Web Part

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Esercizi di JavaScript

Corso di Informatica

ZFIDELITY - ZSE Software & Engineering Pag.1 / 11

Cosa è un foglio elettronico

Lezione II: Web server e ambiente di lavoro

Installazione del software Fiery per Windows e Macintosh

Richiesta pagina PHP (es: index.php)

Linguaggio HTML. Reti. Il Linguaggio HTML. Il Linguaggio HTML

Siti interattivi e dinamici. in poche pagine

PHP e MySQL. Guida scaricata da

Siti web centrati sui dati (Data-centric web applications)

Server web e protocollo HTTP

Esercitazione 8. Basi di dati e web

DBMS e Linguaggi di programmazione nell'era di Internet

Installazione di Moodle. Preparato per: Gruppo A, Piattaforma di E - Learning Preparato da: Cinzia Compagnone, Vittorio Saettone

Guida Joomla. di: Alessandro Rossi, Flavio Copes

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas

NOTE TECNICHE DI CONFIGURAZIONE. Giugno 2009

FtpZone Guida all uso Versione 2.1

NAVIGAORA HOTSPOT. Manuale utente per la configurazione

Studio Legale. Guida operativa

4.1 FAX Sollecito consegne via (Nuova funzione)

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Corso di Informatica di Base. Laboratorio 2

LaCie Ethernet Disk mini Domande frequenti (FAQ)

Microsoft Office XP. dott. ing. Angelo Carpenzano. La suite Microsoft Office XP

Come installare WAMPP

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

LABORATORIO PER IL DESIGN DELLE INTERFACCE PEGORARO ALESSANDRO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO

Configurazione di Outlook Express

FPf per Windows 3.1. Guida all uso

Smartphone 4.1. Cosa c èdi nuovo in Smartphone 4.1

Manuale Utente Amministrazione Trasparente GA

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE

Il Sistema Operativo (1)

Simulazione seconda prova Esame di Stato Sito Web - Gestione di un centro agroalimentare all ingrosso (Parte seconda)

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Manuale Utente Albo Pretorio GA

View Mobile User s Guide

Per accedere clicca su START o AVVIO (in basso a sinistra sul tuo schermo), poi su PROGRAMMI, ACCESSORI e infine su BLOCCO NOTE.

GateManager. 1 Indice. tecnico@gate-manager.it

C o r s o L i b e r o d i Emiliano Gabrielli <AlberT@SuperAlberT.it> GrUSP.it

E-Post Office Manuale utente

Laboratorio di Sistemi Programmare in Php con NetBeans Php. Programmare in Php con Xampp e NetBeans IDE

Risposte e consigli ruotanti attorno a Docsafe

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (utente singolo)

Creare un sito Multilingua con Joomla 1.6

Installazione di GFI WebMonitor

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per sito)

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Guida di Pro Spam Remove

Configurazione della ricerca desktop di Nepomuk. Sebastian Trüg Anne-Marie Mahfouf Traduzione della documentazione in italiano: Federico Zenith

Configurazione VOIspeed IP6060

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Applicazioni web centrati sui dati (Data-centric web applications)

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Mac Application Manager 1.3 (SOLO PER TIGER)

Sito web parrocchiale: STRUMENTI E PROGRAMMI

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

IBM SPSS Statistics - Essentials for Python- Istruzioni di installazione per Windows

Il Software. Il software del PC. Il BIOS

v Mistral ArchiWeb 2.0 Manuale utente

FAQ RISPOSTE A DOMANDE FREQUENTI

Tecnologie per il Web. Il web: Architettura HTTP HTTP. SSL: Secure Socket Layer

Installazione LAMP. Installare un server lamp su Linux Ubuntu. Per installare un server LAMP in Ubuntu come prima cosa apriamo il terminale:

GUIDA UTENTE WEB PROFILES

Dexma Newsletter System

MANUALE D USO DELLA PIATTAFORMA ITCMS

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

Transcript:

Web Scripting L ambiente: Apache Apache è il più popolare WebServer disponibile oggi. PHP (Hypertext Preprocessor) (Apache Web Server) La popolarità è dettata da alcune caratteristiche:! Portabilità! Scalabilità! Costo Tecnologie lato Client / Server E incluso, di default, in numerose distribuzioni:! Linux! FreeBSD! MacOS X! Windows (NT,2k,XP) PHP - 1 PHP - 2 Uno sguardo all installazione Avviare il Servizio E necessario configurare Apache! La configurazione può cambiare tra piattaforme diverse! Vedremo come configurarlo su un BSD (MacOS X) Apple Menu System Preferences Sharing E semplice! I files di configurazione sono gli stessi di Linux! Si avvicina molto al GUI Configurator di Windows! Apache è configurato per utilizzare l'utente attuale! E' possibile modificare l username da preferenze utente! Se l utente è valvoline, la pagina personale sarà! http://127.0.0.1/~valvoline! http://localhost/~valvoline PHP - 3 PHP - 4

Home Page e default settings Interfaces Binding 127.0.0.1 o localhost è un indirizzo speciale! Ogni computer ne ha uno! Rappresenta il computer stesso All'indirizzo 127.0.0.1 o localhost, attraverso il Web-Browser! risponde il server Apache locale Apache ascolta le richieste su tutte le interfaccie di rete disponibili. http://localhost/~valvoline http://127.0.0.1/~valvolline E presente una pagina generica! messa a disposizione dal server stesso! verifica il corretto funzionamento del servizio Oltre all indirizzo 127.0.0.1 saranno presenti tutti gli indirizzi configurati sul server. PHP - 5 PHP - 6 Personal Web Page Multi Language System! Le pagine personali si trovano nel proprio spazio utente! E possibile realizzare un sistema di pagine multilinguaggio! La pagina di default del server si trova all indirizzo:! /Library/Webserver/Documents - (MacOS X)! /var/www - (Linux)! Basterà aggiungere ogni pagina nella lingua desiderata! Salvarla con estensione nazionalizzata (.de,.it,.en, etc.)! Il sistema sceglierà la pagina adeguata in base al browser PHP - 7 PHP - 8

La configurazione La configurazione: CGI Eseguendo, dal prompt, il comando: httpd -V Otterremo alcune informazioni riguardanti Apache -D SERVER_CONFIG_FILE="/etc/httpd/httpd.conf! Questo è il file di configurazione generale di Apache! Attraverso questo file si personalizza il WebServer! Proviamo ad aggiungere una nuova features al server:! Installiamo il supporto CGI! CGI (Common Gateway Interface)! http://hoohoo.ncsa.uiuc.edu/cgi! Permette di usare centinaia di scripts differenti! Utilizzati attraverso un normale browser! Sono scritti, comunemente, in Perl! Permettono di accedere a DBs, creare forms, etc. PHP - 9 PHP - 10 La configurazione: CG I(2) La configurazione: CGI (3)! Per aggiungere una funzionalità al server! Cerchiamola all interno del file httpd.conf LoadModule cgi_module libexec/httpd/mod_cgi.so AddModule mod_cgi.c! E una delle features più potenti di Apache! Un sistema di plugins dinamici per ogni funzionalità <Directory "/Library/WebServer/CGI-Executables"> (MacOS X) <Directory /usr/lib/cgi-bin > (Linux)! Mappa la cartella locale: /Library/WebServer/CGI-Executables! In http://localhost/cgi-bin! Dentro la cartella mappata come CGI repository! I files verrano eseguiti come scripts CGI! In una cartella standard, gli stessi files! saranno trattati come testo normale PHP - 11 PHP - 12

La configurazione: CGI (4) La configurazione: CGI (5) # AddHandler cgi-script.cgi! La prima decisione importante circa la configurazione! Impone ad apache di eseguire qualunque file.cgi!avviene per qualunque utente e per qualunque cartella! E un potenziale problema di sicurezza! Tipicamente, gli scripts CGI vengono permessi solo in! /Library/Webserver/CGI-Executables/! La direttiva impone al sistema di eseguire i files CGI! da qualunque posizione relativa nel file system.! Anche se disponiamo al posto giusto i files CGI! Il sistema ci tornera' un errore del tipo: [Mon Nov 19 21:59:46 2001] [error] [client 127.0.0.1] file permissions deny server execution: /Library/WebServer/CGI-Executables/test-cgi! Bisogna correggere i permessi sui files! cd /Library/WebServer/CGI-Executables! chmod 755 test-cgi! Il file test-cgi avrà, così, permessi di esecuzione e lettura. PHP - 13 PHP - 14 La configurazione: PHP La configurazione: PHP (2)! PHP è molto popolare! Ben supportato! OpenSource! Efficente e Veloce! Installato di default con Apache(spesso)! Il codice viene interpretato ed incluso nelle pagine HTML! Comunemente, Installare PHP consiste! nell includere alcune direttive! Presenti (ma commentate) nel file di configurazione # LoadModule php4_module libexec/httpd/libphp4.so # AddModule mod_php4.c! Abilitano / Disabilitano il caricamento del modulo PHP! Al prossimo riavvio del server Apache! Rimuovere il cancelletto e riavviare il server # AddType application/x-httpd-php.php # AddType application/x-httpd-php-source.phps! In sostanza, qualunque file con estensione.php! Deve essere processato dal modulo PHP del server PHP - 15 PHP - 16

Il file di LOG Prova su strada! Il file di log di Apache! Fornisce informazioni per ogni nuovo modulo aggiunto [Tue May 11 16:05:04 2004] [notice] Apache/1.3.29 (Darwin) PHP/4.3.2 configured -- resuming normal operations [Tue May 11 16:05:04 2004] [notice] Accept mutex: flock (Default: flock)! Il modulo PHP è stato installato correttamente! Apache ci dice che PHP è abilitato! Verifichiamo il corretto funzionamento di Apache e PHP: <html><body> <h1>hello world!</h1> <?php phpinfo() </body></html>! phpinfo() ritorna informazioni, circa l'ambiente e sue caratteristiche. PHP - 17 PHP - 18 Software necessario Perché PHP? Ricapitolando, per utilizzare PHP serve:! Un Web server Perché PHP e non altro?! Apache! IIS (Internet Information Server)! Personal Web Server! PHP4! Un Browser! Un Database (opzionale)! Un po di pazienza (necessaria) ASP, JSP, RUBY, etc.! Sono valide alternative, ma PHP le batte tutte!! PHP si sposa egregiamente con Apache PHP - 19 PHP - 20

Perché PHP? (2) Perché PHP? (3) Le ragioni per amare PHP:! E gratuito! La combinazione PHP/Apache/MySQL gira su hardware vecchio. Le cose che sembrano troppo belle per essere vere di solito lo sono!! PHP, in prima battuta, fù rilasciato con licenza GPL o copyleft! Adesso PHP4 ha la propria licenza opensource Le ragioni per amare PHP:! E facile! Non sono richieste profonde conoscenze del SO! Perl è un linguaggio di sola scrittura! Molte delle funzioni sono predefiniti! E un linguaggio OOB! E embedded! Le pagine PHP sono comuni pagine HTML! Si sconfina nella modalità PHP solo quando necessario PHP - 21 PHP - 22 Perché PHP? (4) Un esempio più interessante PHP è multipiattaforma! Gira su sistemi UNIX e Windows! E compatibile con I maggiori Server Web Mondiali:! Apache! IIS (Microsoft Corporation)! iplanet Server (Netscape Enterprise) PHP è stabile! Il server non deve essere riavviato spesso! Non cambia radicalmente tra versioni diverse PHP è veloce! E molto più veloce rispetto i migliori scripts CGI! Gli scripts C-Based devono creare un processo ogni volta! Un esempio più interessante, potrebbe essere il seguente: <html><body> <h3>your browser is: </h3> <?php echo $HTTP_USER_AGENT; </body></html> Output: your browser is: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/124 (KHTML, like Gecko) Safari/125.1 PHP - 23 PHP - 24

HTML Embedding: Perché Embedded? <HTML><HEAD> <TITLE>Search results for <?php print $query; </TITLE> </HEAD><BODY> Programmazione Tradizionale (CGI): #!/usr/bin/perl print "<HTML><HEAD>\n"; print "<TITLE>Search results for \"$query\"</title>\n"; print "</HEAD>\n"; print "<BODY>\n"; Cosa è l HTML Dinamico?! Distinzione fondamentale tra pagine statiche e dinamiche! Dinamico può significare tutto ciò che non è HTML puro!! Descrive funzioni lato client e funzioni lato server! Sul Client! Presentazioni multimediali! Titoli scorrevoli! Pagine che si autoaggiornano! Elementi che scompaiono e riappaiono! Sul Server! Denota contenuti assemblati in tempo reale PHP - 25 PHP - 26 HTML: Static vs Dynamic HTML: Static vs Dynamic (2)!Il tipo di pagina Web più elementare è completamente statico! http://www.dmi.unict.it/~pistagna! Il client effettua una richiesta al server! Il server risponde con la pagina HTML (via TCP/IP) Alcuni vantaggi:! Qualsiasi Browser può visualizzarlo correttamente! I dispositivi embedded possono visualizzarlo correttamente! Le richieste sono soddisfatte velocemente! HTML è facile da imparare PHP - 27 PHP - 28

Tecnologie lato client Per sopperire alle mancanze dovute alla staticità! Le aggiunte più comuni sono sul lato client! Cascading Style Sheets (CSS)! Scripting Lato Client! Applets Java! Il supporto per queste tecnologie è (dovrebbe essere)! All interno del Browser Tecnologie lato client (2) L HTML Statico e le tecnologie lato client, hanno alcuni svantaggi:! Il controllo del progetto e layout sono difficili! Poca scalabilità! Poca interattività! Inclusione di Meta dati molto complessa! Non tutti I clients vedranno lo stesso risultato! WYSIWYG? Ci sono casi in cui il loro uso è indispensabile / consigliato! (RealTime 3D, Gfx, Multimedia) PHP - 29 PHP - 30 Tecnologie lato server Tecnologie lato server (2) Lo schema precedente resta, in generale, valido La novità si presenta all atto di preparare una pagina! Il server si imbatte in uno script (script lato server)! Lo script viene identificato dal server scorrendo la pagina! Vengono ricercati degli identificatori: <?php,! Il contenuto viene elaborato dal server e rispedito al browser <HTML><BODY> Numero di giorni trascorsi: <?php echo gmdate( z ); </BODY></HTML> <HTML><BODY> Numero di giorni trascorsi: 158 </BODY></HTML> PHP - 31 PHP - 32

Tecnologie lato server: La Cache Tecnologie lato server: La Cache (2) Esiste un potenziale problema nella scrittura di codice PHP:! La Cache! Memorizza le pagine web già visionate! Limita l interattività dell utente e dei contenuti dinamici! Non utilizzerete in nessun modo il codice dinamico! L informazione restituita risulterà non corretta! A volte non basta neanche premere il pulsante Refresh Per risolvere il problema esiste un insieme di intestazioni HTTP: <? header( Cache-Control: no-cache, must-revalidate ); header( Pragma: no-cache ); Aggiunto all inizio di un documento PHP, evita il fastidioso problema del Refresh della pagina. PHP - 33 PHP - 34 Il PHP nelle pagine HTML Il PHP nelle pagine HTML (2)! PHP, quindi, è un linguaggio embedded! Viene introdotto nella pagine HTML con appositi TAG.! Tutto il testo esterno ai simboli <?php e è considerato HTML.! Viene spedito al client senza modifiche.! Una porzione di codice PHP inizia con: <?php o <?! Termina con:! Il testo contenuto all interno dei simboli <?php e! E codice PHP e viene gestito dal PreProcessore PHP. <?php phpinfo();! Le pagine vengono interpretate, elaborate, modificate! Soltanto successivamente vengono inviate al Browser PHP - 35 PHP - 36

Il PHP nelle pagine HTML (3) Il PHP nelle pagine HTML (4)! Il codice PHP viene eseguito sul server! Non viene inviato al client! Non è possibile visualizzare il codice PHP sul client.! E una prima forma di sicurezza dell applicativo.! Il codice PHP può effettuare output di testo.! L output viene inviato al client! Al posto del codice PHP.! L output deve essere in formato HTML. <I>ABC</I> <?php echo <BR> testo <I>ABC</I> <BR> testo PHP - 37 PHP - 38 Il PHP nelle pagine HTML (5) <HTML><BODY> Oggi è il giorno <?php echo gmdate( M d Y ); </BODY><HTML> Viene ricevuto come: <HTML><BODY> Oggi è il giorno Mar 25 2002 </BODY><HTML> Istruzioni e Blocchi! Ogni istruzione PHP e delimitata dal simbolo ;! Su ogni una riga vi possono essere più istruzioni! Ciascuna istruzione può estendersi su più righe.! Le istruzioni possono essere raggruppate in blocchi! I blocchi sono delimitati dalle parentesi graffe { }. PHP - 39 PHP - 40

Istruzioni e Blocchi (2) <HTML><BODY> <?php if (($User == php ) && ($Passwd == secret )) { echo <H1> Logging in</h1> ; } else { echo <H1>Access denied ; echo <BR> </H1> ; } </BODY><HTML> <? Sintassi C-Like //semplice ciclo for for ($loop = -5; $loop < 5; $loop++) { echo "$loop<br>\n"; } //cicliamo sull'accumulatore $loop while(--$loop) { //in un sol colpo otteniamo valori 0/1 switch(++$i%2) { case 0: echo "Even<BR>\n";break; case 1: echo "Odd<BR>\n";break; } } //ultimo tipo di ciclo con post-controllo do { echo "$loop<br>\n"; }while (++$loop < 10); PHP - 41 PHP - 42 Un altro esempio (interessante) Commenti <?php $google = preg_quote("http://www.google.it", '/'); if (preg_match("/^$google.*/i", $_SERVER['HTTP_REFERER'])) print "ciao google";! Controlliamo il referer che ci ha linkato! Potremmo svolgere azioni diverse a seconda di chi ci linka! Questo è solo un esempio di quanto è utile/potente la programmazione dinamica I commenti monoriga utilizzano due tipi di marcatori: <?php // echo <H1>riga commentata ; # echo <H1>altra riga commentata ; echo <P>riga non commentata</h1> ; PHP - 43 PHP - 44

Commenti (2) Variabili Commenti a blocco: <?php /* echo <H1>righe commentate ; echo <P>righe commentate</h1> ; */! In PHP le variabili sono lo strumento utilizzato per memorizzare i dati all interno dei programmi.! I nomi delle variabili in PHP seguono le seguenti regole:! Le variabili sono sempre precedute dal simbolo $.! I nomi delle variabili possono essere costituiti con i caratteri alfabetici (minuscoli e maiuscoli), cifre e _. <?php $nome= Ivan ; echo $nome; PHP - 45 PHP - 46 Variabili (2) Variabili (3)! Le variabili non possono incominciare per numero (solo per lettera o _ ).! Le variabili sono case-sensitive: lettere maiuscole o minuscole fanno differenza!! Le variabili vengono assegnate utilizzando il simbolo =. $nome = Lisa ; $prezzo = 21.95;! Il valore di una variabile è il valore della sua assegnazione più recente.! Le variabili non hanno bisogno di essere dichiarate prima dell assegnazione.! Le variabili non hanno tipo oltre a quello del valore corrente.! Le variabili utilizzate prima di essere assegnate hanno valori di default $prezzo = 21.95; // questo è un float? PHP - 47 PHP - 48

Variabili (4) Variabili (5)! Se si vuole essere avvertiti di variabili che non sono state assegnate, si deve modificare il livello di segnalazione di errore: <? error_reporting(15);! Si può anche modificare il file php.ini per impostare il livello di segnalazione di errore predefinito. I valori contenuti nelle variabili vengono richiamati semplicemente indicando il nome della variabile stessa. $Netto = 25; $Tara = 7; $Lordo = $Netto + $Tara; echo $Lordo; PHP - 49 PHP - 50 Variabili (6) Variabili (7)! Le variabili vengono definite automaticamente al loro primo utilizzo. Le variabili possono essere ridefinite. In tal caso può cambiare il loro tipo.! A differenza di altri linguaggi, non è prevista la dichiarazione esplicita del tipo prima del loro utilizzo.! Le variabili sono sempre locali $citta = Catania ; $citta = 95100;! Esistono costrutti particolari del linguaggio per dichiarare variabili globali. PHP - 51 PHP - 52

Variabili (8) Variabili: IsSet! Le variabili possono essere usate prima di essere definite.! Sono di tipo unknown! Vengono trattate come variabili col valore 0 o stringhe vuote. echo $citta; $citta = 95100; genera: NULL! Le variabili non devono essere dichiarate prima dell utilizzo.! PHP fornisce una funzione che esamina una variabile per vedere se le è stato assegnato un valore: IsSet() <?php $set_var = 0; // è stato assegnato un valore if(isset($set_var)) print( set_var è impostata.<br> ); else print( set_var non è impostata.<br> ); if(isset($never_var)) print( never_var è impostata.<br> ); else print( never_var non è impostata.<br> ); PHP - 53 PHP - 54 Variabili: unset Variabili: empty! L atto di assegnare una variabile non è irrevocabile! La funzione unset() riporta una variabile ad uno stato di non assegnamento, senza badare all assegnazione precedente <?php $set_var = 0; // è stato assegnato un valore unset($set_var); // revochiamo tutto! if(isset($set_var)) print( set_var è impostata.<br> ); else print( set_var non è impostata.<br> );! E l opposto logico di IsSet()! Restituisce:! 1 se non c è alcuna variabile (o == 0, o == )! non indica nulla se la variabile esiste. <?php $set_var = 0; // è stato assegnato un valore echo empty($set_var); unset($set_var); echo empty($set_var); PHP - 55 PHP - 56