Cos'è Php?
Php è un modulo aggiuntivo per web servers che permette di creare delle pagine web dinamiche.
In pratica, una pagina in Php è composta sia da tag html, sia da parti in codice di programmazione Php. Ogni porzione di codice, limitato entro i tag "<?php" e "?>", viene eseguito prima di essere inviato all'utente che ne fa richiesta.
Il funzionamento è praticamente lo stesso delle pagine Asp.
Un esempio di pagina Php è il seguente:
Per funzionare, Php necessita di un suo motore di scripting (script engine) che esegue le parti in codice prima che il web server invii la pagina all'utente. Attualmente esiste la versione 3.0 del motore Php (funzionante praticamente su tutti i web server) disponibile presso il sito
Quando un utente richiede una pagina Php, il motore esegue il codice contenuto all'interno di quella pagina. Durante l'esecuzione, il codice produce delle informazioni in formato html. Infine il file (in completo formato html) viene inviato all'utente.
Se provate a visualizzare il sorgente di una pagina in Php potete notare che non vi compare nessuna riga di codice Php. Il vantaggio è proprio questo: nessun utente esterno, tranne il webmaster, può accedere al codice e modificarlo. Per l'utente esterno, la pagina in Php è esattamente uguale a una qualsiasi pagina in Html.
Un consiglio per comprendere al meglio il presente tutorial ed avere poi uno strumento efficace per programmare con esattezza i propri script è quello di scaricarsi il Manuale Php 3.0 dal sito
Alcune particolarità
Questa sezione è dedicata ad alcuni esempi iniziali per affrontare il mondo Php.
Sono abbastanza semplici, ma possono essere combinati tra loro e con un po' di fantasia si possono ottenere dei risultati efficaci per le nostre pagine.
Accodare un file
Può essere utile a tutti webmaster inserire alla fine di ogni file del proprio sito una riga di informazioni sull'autore (nome, cognome, email).
A questo proposito ci viene in aiuto il comando INCLUDE di Php.
Inserendo il seguente codice alla fine delle vostre pagine verrà caricato automaticamente un codice html contenuto nel file /path/codice.txt:
Contatore in ogni pagina
Per inserire un contatore nelle nostre pagine che venga modificato ad ogni visualizzazione, possiamo inserire il seguente codice:
Esistono anche delle librerie che hanno implementato le funzionalità collegate alle variabili di sessione.
Caricare un'immagine
Può accadere di dover visualizzare, ad ogni apertura di una pagina, un'immagine diversa. Un semplice codice per gestire dinamicamente questa esigenza può essere il seguente:
Un'altra possibilità è visualizzare un'immagine diversa a seconda del giorno della settimana in cui il visitatore richiede la pagina. Le pagine devono essere chiamate images/Mon.gif, images/Tue.gif, ecc, e il codice potrebbe essere:
Spedire mail
Con Php è possibile spedire mail da una pagina web.
Inizialmente si deve creare una pagina che chiameremo "master", completa di una FORM per l'invio dei dati, e di una pagina "slave" che riceve i dati e invia la mail.
Per quanto riguarda la sintassi di una form, vi rimando a un qualsiasi tutorial html.
La pagina "master" deve avere al suo interno un codice di questo tipo:
Alcune importanti applicazioni di Php permettono ai webmaster di gestire i loro siti in maniera efficiente e senza troppo lavoro.
Un problema nei siti composti da molte pagine è il fatto di dover fare piccoli cambiamenti grafici con corrispondente aggiornamento di tutti i files e una mole di lavoro notevole da parte del webmaster.
A questo vengono in aiuto i programmi tipo Dreamweaver che permettono la creazione dei cosiddetti templates. I templates sono dei file "tipo" che rappresentano la struttura portante (e comune) di tutti i file di un sito. I templates permettono di gestire il design di un sito semplicemente definendo tutti gli attributi comuni alle pagine di un sito.
In Php è utile usare sistemi di questo tipo, facilitati dal linguaggio di programmazione.
Due istruzioni importanti per questi sitemi sono la INCLUDE e la REQUIRE.
L'istruzione INCLUDE (già vista in precedenza), quando inserita all'interno di pagine web, permette di includere un determinato file.
L'istruzione REQUIRE differisce solamente per il fatto che il file incluso può contenere a sua volta delle istruzioni in Php che verranno eseguite prima di restiruire la pagina all'utente.
Questo ci permette, ad esempio, di gestire dei banner pubblicitari. Il metodo è semplice. Inizialmente si deve fare in modo che tutte le pagine del nostro sito abbiano al loro interno la seguente riga:
Ma torniamo ai templates e cerchiamo di strutturare tutti i file del sito in modo che siano utilizzabili da Php:
Un'altra utilità nella gestione dei siti è la realizzazione delle cosiddette "restricted areas", ovvero aree riservate a cui serve una password per accedere.
Per fare ciò basta creare un file index.php nella directory del sito protetta e inserire la form:
Php e database
L'impiego più importante di Php si ottiene nel campo delle interrogazioni di database presenti sul server.
Php consente al programmatore e di interfacciarsi con numerosi database tra i più importanti nel mondo della programmazione:
Alla fine dell'ultima lezione accennavamo alla costruzione di un database di annunci e alla sua consultazione tramite pagine web.
Vediamo ora di affrontare meglio il problema e di costruire un sito che permetta sia l'inserimento che la ricerca.
La tabella Annunci che memorizza gli annunci è stata già descritta e contiene i campi:
Rasmus Lerdorf
Rasmus Lerdorf (
Nel
Da
Php è un modulo aggiuntivo per web servers che permette di creare delle pagine web dinamiche.
In pratica, una pagina in Php è composta sia da tag html, sia da parti in codice di programmazione Php. Ogni porzione di codice, limitato entro i tag "<?php" e "?>", viene eseguito prima di essere inviato all'utente che ne fa richiesta.
Il funzionamento è praticamente lo stesso delle pagine Asp.
Un esempio di pagina Php è il seguente:
- <html>
<body>
<!--- Parte di comandi Html --->
<? #parte di codice Php ?>
<!--- Altri comandi Html --->
</body>
</html>
Per funzionare, Php necessita di un suo motore di scripting (script engine) che esegue le parti in codice prima che il web server invii la pagina all'utente. Attualmente esiste la versione 3.0 del motore Php (funzionante praticamente su tutti i web server) disponibile presso il sito
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
.Quando un utente richiede una pagina Php, il motore esegue il codice contenuto all'interno di quella pagina. Durante l'esecuzione, il codice produce delle informazioni in formato html. Infine il file (in completo formato html) viene inviato all'utente.
Se provate a visualizzare il sorgente di una pagina in Php potete notare che non vi compare nessuna riga di codice Php. Il vantaggio è proprio questo: nessun utente esterno, tranne il webmaster, può accedere al codice e modificarlo. Per l'utente esterno, la pagina in Php è esattamente uguale a una qualsiasi pagina in Html.
Un consiglio per comprendere al meglio il presente tutorial ed avere poi uno strumento efficace per programmare con esattezza i propri script è quello di scaricarsi il Manuale Php 3.0 dal sito
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
.Alcune particolarità
- I tag che indicano la presenza di codice Php sono "<?php" e "?>", ma è possibile configurare Php in modo che si accorga anche dei tags "<?" e "?>" di più semplice scrittura.
- I commenti all'interno del codice Php devono essere compresi tra i tags "/*" e "*/". Un altro tipo di commento si ottiene mettendo il tag "#" all'inizio di una riga. La riga intera non verrà eseguita.
- I comandi Php per restituire del codice Html sono: PRINT("<!--- html code --->");
ECHO("<!--- html code --->"); - Il comando per la concatenazione di stringhe è il punto (.). Ad esempio, il comando
echo("Ciao"." "."Alberto")
produce la stringa
"Ciao Alberto" - Ogni comando puro in Php deve essere concluso con il punto e virgola (;)
- Per essere eseguiti, i file devolo avere estensione ".php3" (a meno che il web server non sia configurato diversamente). Ogni file del nostro sito che contiene istruzioni Php deve avere quella estensione.
Primi esempi
Il primo esercizio potrebbe consistere nella realizzazione di un file prova.php3 contenente il seguente codice:- <HTML>
<BODY>
<? phpinfo(); ?>
</BODY>
</HTML>
Un altro esempio potrebbe essere il seguente.- <HTML>
<BODY>
<? echo("Ultima modifica: ".date("d/m/Y",filemtime($PATH_TRANSLATED))); ?>
</BODY>
</HTML>
- <HTML>
Questa sezione è dedicata ad alcuni esempi iniziali per affrontare il mondo Php.
Sono abbastanza semplici, ma possono essere combinati tra loro e con un po' di fantasia si possono ottenere dei risultati efficaci per le nostre pagine.
Accodare un file
Può essere utile a tutti webmaster inserire alla fine di ogni file del proprio sito una riga di informazioni sull'autore (nome, cognome, email).
A questo proposito ci viene in aiuto il comando INCLUDE di Php.
Inserendo il seguente codice alla fine delle vostre pagine verrà caricato automaticamente un codice html contenuto nel file /path/codice.txt:
- <? include("/path/codice.txt"); ?>
- <hr size="1">
Pagina realizzata da <a href="mailto:stain@dei.unipd.it">Alberto Mucignat</a>
Contatore in ogni pagina
Per inserire un contatore nelle nostre pagine che venga modificato ad ogni visualizzazione, possiamo inserire il seguente codice:
- <?
if (!file_exists("/path/counter.txt")):
$file=fopen("/path/counter.txt","w");
$num=0;
else:
$file=fopen("/path/counter.txt","r+");
$num=fgets($file,20);
endif;
$num++;
print("Visitors: ".$num);
fputs($file,$num);
fclose($file);
?>
Esistono anche delle librerie che hanno implementato le funzionalità collegate alle variabili di sessione.
Caricare un'immagine
Può accadere di dover visualizzare, ad ogni apertura di una pagina, un'immagine diversa. Un semplice codice per gestire dinamicamente questa esigenza può essere il seguente:
- <?
$num=rand(1,10);
print("<img src=\"images/img".$num.".gif"\">");
?>
Un'altra possibilità è visualizzare un'immagine diversa a seconda del giorno della settimana in cui il visitatore richiede la pagina. Le pagine devono essere chiamate images/Mon.gif, images/Tue.gif, ecc, e il codice potrebbe essere:
- <?
$img=date("D");
print("<img src=\"images/".$img.".gif"\">");
?>
Spedire mail
Con Php è possibile spedire mail da una pagina web.
Inizialmente si deve creare una pagina che chiameremo "master", completa di una FORM per l'invio dei dati, e di una pagina "slave" che riceve i dati e invia la mail.
Per quanto riguarda la sintassi di una form, vi rimando a un qualsiasi tutorial html.
La pagina "master" deve avere al suo interno un codice di questo tipo:
- <FORM ACTION="send.php3" METHOD="POST">
Nome e Cognome:<BR>
<INPUT TYPE="text" NAME="name" SIZE="20" MAXLENGTH="30"><BR>
Email:<BR>
<INPUT TYPE="text" NAME="email" SIZE="20" MAXLENGTH="30"><BR>
Titolo:<BR>
<INPUT TYPE="text" NAME="subject" SIZE="20" MAXLENGTH="30"><BR>
Testo della mail:<BR>
<INPUT TYPE="textarea" NAME="text" ROWS="60" COLS="10" MAXLENGTH="200"><BR>
<INPUT TYPE="submit" VALUE="INVIA">
</FORM>
- <?
if (isset($email)):
# l'indirizzo email a cui inviare la mail
$target="info@sito.it";
mail($target,$subject,"Nome: ".$nome."\nTitolo: ".$subject."\n\n".$text);
endif;
?>
Alcune importanti applicazioni di Php permettono ai webmaster di gestire i loro siti in maniera efficiente e senza troppo lavoro.
Un problema nei siti composti da molte pagine è il fatto di dover fare piccoli cambiamenti grafici con corrispondente aggiornamento di tutti i files e una mole di lavoro notevole da parte del webmaster.
A questo vengono in aiuto i programmi tipo Dreamweaver che permettono la creazione dei cosiddetti templates. I templates sono dei file "tipo" che rappresentano la struttura portante (e comune) di tutti i file di un sito. I templates permettono di gestire il design di un sito semplicemente definendo tutti gli attributi comuni alle pagine di un sito.
In Php è utile usare sistemi di questo tipo, facilitati dal linguaggio di programmazione.
Due istruzioni importanti per questi sitemi sono la INCLUDE e la REQUIRE.
L'istruzione INCLUDE (già vista in precedenza), quando inserita all'interno di pagine web, permette di includere un determinato file.
L'istruzione REQUIRE differisce solamente per il fatto che il file incluso può contenere a sua volta delle istruzioni in Php che verranno eseguite prima di restiruire la pagina all'utente.
Questo ci permette, ad esempio, di gestire dei banner pubblicitari. Il metodo è semplice. Inizialmente si deve fare in modo che tutte le pagine del nostro sito abbiano al loro interno la seguente riga:
- <? if (file_exists("/path/banner.inc")): require("/path/banner.inc"); endif; ?>
Ma torniamo ai templates e cerchiamo di strutturare tutti i file del sito in modo che siano utilizzabili da Php:
- <? include("/path/header.inc"); ?>
<!--- Html Code --->
<? include("/path/footer.inc"); ?>
- <HTML>
<HEAD>
<TITLE>My Site</TITLE>
<META NAME="author" CONTENT="Alberto Mucignat">
<META NAME="description" CONTENT="Questo è il mio sito gestito in Php">
</HEAD>
<BODY BGCOLOR="RED">
<CENTER><B><H2>My Site</H2></B></CENTER>
<HR SIZE="1">
- <CENTER>
<HR SIZE="1">
Sito realizzato da <A HREF="mailto:stain@dei.unipd.it>Alberto Mucignat</A>
</CENTER>
</BODY>
</HTML>
Un'altra utilità nella gestione dei siti è la realizzazione delle cosiddette "restricted areas", ovvero aree riservate a cui serve una password per accedere.
Per fare ciò basta creare un file index.php nella directory del sito protetta e inserire la form:
- <FORM ACTION="main.php3" METHOD="post">
Inserire password:<BR>
<INPUT TYPE="password" NAME="pwd" SIZE="20" MAXLENGTH="30"><BR>
<INPUT TYPE="submit" VALUE="ENTRA">
</FORM>
- <? if ((isset($pwd)) AND ($pwd=="pass128")): ?>
<!--- Restricted area - Html code --->
<? else: ?>
<!--- Error message --->
<? endif; ?>
- <? if ((isset($pwd)) AND ($pwd==include("passwd.txt")): ?>
- <? if ((isset($pwd)) AND (crypt($pwd)==include("passwd.txt")): ?>
Php e database
L'impiego più importante di Php si ottiene nel campo delle interrogazioni di database presenti sul server.
Php consente al programmatore e di interfacciarsi con numerosi database tra i più importanti nel mondo della programmazione:
- PostgreSQL
- MySql
- Oracle
- Adabas
- filePro
- ODBC
più alcuni altri meno noti.
In particolare, la connessione ODBC permette di interfacciarsi con database tipo Access.
L'utilizzo dei comandi per la connessione ai database prescinde dalla conoscenza dei database stessi. Il linguaggio SQL è richiesto per formulare le query, come pure la conoscenza del significato di indici, chiavi, relazioni, ecc.
In buona sostanza, un webmaster che intende organizzare un sistema che preveda la consultazione di un database via web, nella maggioranza dei casi deve conoscere approfonditamente la struttura stessa del database, nonchè il significato dei dati contenuti.
Per quanto riguarda SQL, il linguaggio standard di interrogazione sui database, esistono molti tutorial e manuali in rete. Mi limiterò a dire che per interrogazione o query si intende usa serie di comandi che un qualsiasi database esegue restituendo una serie di tuple (in generale righe o parti di righe di una o più tabelle del database).
In questo tutorial consideriamo operazioni su un database di tipo MySQL e diamo per scontata la conoscenza del database stesso. Al lettore attento non risulterà difficile trasformare le operazioni spiegate per ricondurle al suo database preferito.
In pratica le operazioni Php sui database potrebbero suddividersi in tre livelli:
- apertura/chiusura connessione
- invio interrogazioni SQL
- lettura risultati di una query
Le operazioni di apertura/chiusura di una connessione a un database servono ad aprire/chiudere un collegamento con il database prescelto, al fine di poter fare delle operazioni di lettura/scrittura e trasmettere i dati in formato html.
Per aprire/chiudere una connessione in MySql sono disponibili i comandi:
- mysql_connect(host,login,password)
mysql_close()
- mysql_db_query(database,query,$db)
Una prima ricerca
Per compiere la nostra prima ricerca nel database poniamo di conoscere l'esistenza, la configurazione e il significato del contenuto di una tabella chiamata Annunci.
La tabella Annunci contiene i campi:
- mysql_connect(host,login,password)
- ID chiave primaria
- Nome nome dell'autore dell'annuncio
- Email email
- Testo testo dell'annuncio
Una ricerca all'interno della tabella potrebbe essere fatta mediante il codice seguente:
- <?
$db=mysql_connect("localhost","","") or die("Errore durante la connessione a MySql");
$result=mysql_db_query("database_annunci","SELECT * FROM Annunci");
mysql_close;
?>
Per scriverli occorre prima fare l'operazione:
- $row=mysql_fetch_row($result);
- print($row[1]."/".$row[2]."/".$row[3]."/".$row[4]."/");
- $num_rows=mysql_num_rows($result);
- $num=mysql_num_fields($result);
- $sql="SELECT * FROM Annunci WHERE Testo LIKE '%".$stringa."%"'"
$result=mysql_db_query("db_annunci",);
- <?
Alla fine dell'ultima lezione accennavamo alla costruzione di un database di annunci e alla sua consultazione tramite pagine web.
Vediamo ora di affrontare meglio il problema e di costruire un sito che permetta sia l'inserimento che la ricerca.
La tabella Annunci che memorizza gli annunci è stata già descritta e contiene i campi:
- ID chiave primaria
- Nome nome dell'autore dell'annuncio
- Email email
- Testo testo dell'annuncio Passiamo alla pratica ricordandoci che lo strumento necessario per inviare dati da un file html/php3 ad un altro è la form, come descritto nelle lezioni precedenti.
Per fare funzionare il tutto creiamo dei file nel seguente modo:
- show.php3 mostra gli annunci presenti
- insert.php3 inserisce un annuncio
- search.php3 cerca una o più parole nel database
Inserimento di un annuncio
Supponiamo di ricevere dei dati da una form nelle variabili $nome,$email,$testo. Per inserire un nuovo annuncio basta fare le seguenti operazioni:
- <?
# dati da modificare a seconda del database
$host="localhost";
$user="";
$pass="";
$db=mysql_connect($host,$user,$pass) or die ("Errore nella connessione al database");
$sql="INSERT INTO Annunci (Nome,Email,Testo) VALUES('".$nome."','".$email."','".$testo."')";
mysql_db_query("db_annunci",$sql);
mysql_close();
?>
Ovviamente si possono anche fare delle operazioni di controllo sulla validità dell'indirizzo email o per verificare che alcuni campi non siano nulli.
Mostrare gli annunci
Per mostrare gli annunci presenti nel database basta inserire il seguente codice:
- <?
# dati da modificare a seconda del database
$host="localhost";
$user="";
$pass="";
$db=mysql_connect($host,$user,$pass) or die ("Errore nella connessione al database");
$sql="SELECT * FROM Annunci";
$result=mysql_db_query("db_annunci",$sql);
while ($row=mysql_fetch_array($result) {
print("<B>Nome</B>: <A HREF=\"".$row["Email"]."\">".$row["Nome"]."</A><BRr>");
print("<B>Testo dell'annuncio</B>:<BR>");
print(htmlentities($row["Testo"])."
");
print("<HR SIZE=\"1\">");
}
mysql_close();
?>
Ricerca di un annuncio
Per la ricerca di un annuncio particolare, pensiamo di ricevere una stringa $str da una form, in modo che $str contenga una serie di parole da ricercare separate da spazi.
Il seguente codice permette di effettuare la ricerca e visualizzare i risultati:
- <?
# dati da modificare a seconda del database
$host="localhost";
$user="";
$pass="";
$db=mysql_connect($host,$user,$pass) or die ("Errore nella connessione al database");
$sql="SELECT * FROM Annunci ";
$where="";
$words=explode(" ",$str);
$j=0;
while (isset($words[$j])) {
$where=$where."Testo LIKE '%".$words[$j]."%'";
if (isset($words[$j+1])):
$where=$where." OR ";
endif;
$j++;
}
$result=mysql_db_query("db_annunci",$sql.$where);
while ($row=mysql_fetch_array($result) {
print("<B>Nome</B>: <A HREF=\"".$row["Email"]."\">".$row["Nome"]."</A><BRr>");
print("<B>Testo dell'annuncio</B>:<BR>");
print(htmlentities($row["Testo"])."<BR>");
print("<HR SIZE=\"1\">");
}
mysql_close();
?>
Volendo dare una traccia da seguire per creare un sistema del genere crediamo di aver detto abbastanza. Vorremmo solo far presente che il passaggio del codice da un database all'altro richiede un'attenta traduzione da parte del programmatore perché è possibile che le operazioni richiedano un numero diverso di operatori a seconda del database. - <?
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
Rasmus Lerdorf
Rasmus Lerdorf (
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
, Perfavore,
Entra
oppure
Registrati
per vedere i Link!
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
) è un Perfavore,
Entra
oppure
Registrati
per vedere i Link!
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
, ideatore e principale sviluppatore del linguaggio Perfavore,
Entra
oppure
Registrati
per vedere i Link!
. Ha realizzato le prime due versioni.Nel
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
gli fu conferita la laurea ad honorem come Systems Design Engineering dall'Perfavore,
Entra
oppure
Registrati
per vedere i Link!
.Da
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
lavora come Infrastructure Architecture Engineer per Perfavore,
Entra
oppure
Registrati
per vedere i Link!
.