Un contatore grafico in PHP Immagine random ad ogni accesso di pagina
Come ottimizzare le tabelle di un database MySQL Suddividere un testo su più pagine.
Creare un contatore grafico in PHP appoggiandoci su un file di testo. Come realizzare un sito in PHP.
Form per invio email in formato HTML Visualizzare un'immagine... solo se il campo di un database non è vuoto
Generare password random Visualizzare un link a caso
Cambiare il banner in base alla pagina Fogli di calcolo al volo con Php
Indicare il percorso della pagina sul server Data e ora in una pagina web
Cosa sono e come settare i chmod Includere file esterni su una pagina web
Formattare il testo di una textarea Calcolare la dimensione di un file
Un saluto personalizzato in base all'ora Spedire e-mail da un form tramite php
Andare a capo in una textarea: il comando nl2br Un motore di ricerca con Php e Google
Un'applicazione intelligente per lo smistamento dei messaggi provenienti da form-mail Un'area riservata basata su un if-else
Creare immagini al volo con GD Library di Php Immagini di dimensione variabile con Php e GD Library
Controllare la corrispondenza tra due campi di un form Realizzare una calcolatrice con Php
Creare cartella e uploadare files Collegare immagini a un database mysql
Reperire l'indirizzo IP di un visitatore Convertire una stringa in maiuscolo e in minuscolo
Generare numeri casuali Creare un menu dinamico in Php
Creare una sezione di annunci Campi del Database di MySQL
Leggere il codice sorgente HTML di una pagina web (in remoto) MySQL: generare una tabella HTML con una semplice istruzione SELECT
Creare un log con PHP Caricare un file sul server con PHP
Ultima modifica Evitare l'interpretazione del codice HTML
Un contatore di accessi in formato grafico Ricavare informazioni sugli utenti
Lavorare con i file di testo Contiamo gli accessi alle nostre pagine web con MySQL
La funzione Date() - 1 Tempo di caricamento per una pagina PHP
Operazioni matematiche con PHP Estrarre dati da un Db di MySQL
Realizziamo un semplice gioco a quiz Spedire Email con PHP
La prima pagina in PHP. Il comando print ed i commenti Un po' di sintassi...

 

 

Un contatore grafico in PHP
Articolo a cura di Davide Salonia
Riferimenti dell'autore: @ URL
Oggi vedremo come creare un contatore grafico in PHP appoggiandoci su un file .TXT.
Iniziamo col creare il nostro file .TXT con il Blocco Note, scriviamo 0 e salviamo chiamandolo "contatore".
Creiamo una cartella e diamogli nome "imgCont", creiamo 10 immagini .jpg, e diamogli nome da 0 a 9 in base all'immagine, e inseriamole dentro la cartella.
Adesso iniziamo col scrivere le prime righe di codice che si connetteranno con il file, preleveranno il valore, lo incrementeranno e lo modificheranno:
Creiamo la funzione e le variabili che ci serviranno:
<?
function conta() { // creiamo la funzione del contatore
$i=0;//Inizializziamo la variabile i per il ciclo del recupero dati
$imageFolder="imgCont";// Creiamo la variabile con il percorso delle immagini per il nostro contatore
Adesso apriamo il file e lo archiviamo in un array:
$file=fopen("count.txt","r+");//Apriamo il file in lettura e scrittura
$recupero=file("count.txt");//Apriamo il file archiviandolo in un array
Controlliamo se l'utente è già entrato, in questo caso il contatore non verrà incrementato:
if (!isset($_SESSION['PhpCounter'])) {//controlliamo se la visita è già stata fatta
$recupero[0]++;//se è la prima volta che l'utente entra, incrementiamo il contatore
$_SESSION['PhpCounter']="";//inizializziamo la sessione di controllo se è la prima volta
fwrite($file,$recupero[0]);//scriviamo il nuovo valore del contatore, ovvero il contatore incrementato
}
A questo punto, chiudiamo il file:
fclose($file);//chiudo il file
Ed ora, diamo vita grafica al contatore:
$quanti=strlen($recupero[0]);//Riprendiamo l'array creato e ne verifico la grandezza
while($i < $quanti) {//iniziamo il ciclo per la divisione dei numeri
$numeri=substr($recupero[0],$i,1);//dividiamo i numeri incrementando ogni volta la posizione di uno, fino alla lunghezza del numero
echo "<img src='".$imageFolder."/".$numeri.".jpg'>";//scriviamo i tag html per richiamare le immagini e in base al numero, richiamiamo la corrispondente!
$i=$i+1;//incrementiamo i
}
}
conta(); //avviamo la funzione
?>

Immagine random ad ogni accesso di pagina
Programma Blocco note/Macromedia Dreamweaver
Difficoltà facile
Con questo tutorial vedremo come inserire in una pagina in codice .php per far visualizzare le immagini in modo casuale ad ogni accesso alla pagina scelta, è un tutorial molto semplice e ci basteranno poche righe di codice.
Questo è il codice che useremo per il nostro scopo
<?
$num=rand(1,10);
print("<img src=\"images/img".$num.".gif\">");
?>
Allora spieghiamo questo codice. La variabile $num ha un valore random da 1 a 10 e ad ogni ingesso questo numero cambia. Il comando print "stampa" sullo schermo il codice per far visualizzare le immagini che dovranno essere rinominate come img1.gif/img2.gif. Per far si che il codice funzioni la pagina deve avere estenzione .php.
Ecco la pagina di esempio, entrate ed uscite pià volte per vederne i risultati.

Come ottimizzare le tabelle di un database MySQL
Queste poche righe di codice consentono di utilizzare OPTIMIZE TABLE, un programmino per ottimizzare le tabelle di un database MySQL (n.b. OPTIMIZE TABLE funziona solo con tabelle di tipo MyISAM o BDB).
Questo script è utile nel caso ci trovassimo ad utilizzare database di una certa grandezza, a cui abbiamo fatto aggiunte, cancellazioni o modifiche. Gli spazi vuoti verranno rimossi , e verrà riordinato l'indice del database stesso. Questo porterà consistenti guadagni in termini di spazio, velocità e prestazioni.
<?
$host = "host_database";
$user = "username";
$pass = "password";
$db_name = "nome_del_database";
$db = mysql_connect($host, $user, $pass);
mysql_select_db($db_name, $db);
echo "Ottimizzazione DataBase in corso...";
$SQL = "OPTIMIZE TABLE ";
$result = mysql_list_tables($DATABASE);
$i = 0;
while ($i < mysql_num_rows($result)) {
$name_table = mysql_table_name($result, $i);
echo "Ottimizzazione tabella: $name_table .....<BR>";
$SQL .= $name_table;
$SQL .= ",";
$i++;
}
$SQL = substr($SQL,0,strlen($SQL)-1);
$result_set = mysql_query($SQL);
mysql_free_result($result_set);
?>
Basterà creare un file con estensione .php, copiare ed incollare questo codice, ed eseguirlo periodicamente.

Suddividere un testo su più pagine.
Questo non è l'unico modo per farlo, ma è un metodo abbastanza utile e semplice da utilizzare. Per selezionare il testo da suddividere, basta richiamarlo in una variabile. Ecco due esempi:
$testo = "<strong>Prima pagina:</strong><br />Ciao, tutto bene?<br />Sì... tutto a posto![new_page]" ; $testo .= "<strong>Seconda pagina:</strong><br />Ciao, dove vivi?<br />A Milano![new_page]" ; $testo .= "<strong>Terza pagina:</strong><br />Ciao, sei innamorato?<br />Moltissimo!" ;
oppure
$testo = "<strong>Prima pagina:</strong><br />Ciao, tutto bene?<br />Sì... tutto a posto![new_page] <strong>Seconda pagina:</strong><br />Ciao, dove vivi?<br />A Milano![new_page] <strong>Terza pagina:</strong><br />Ciao, sei innamorato?<br />Moltissimo!" ;
Nel primo modo viene ripetuta per tre volte la variabile $testo, nel secondo invece stata dichiarata una volta sola. Decidete voi quale delle due soluzioni utilizzare... il risultato è assolutamente identico.
Ma in tutte e due le soluzioni viste, troviamo una cosa nel testo la scritta " [new_page] ", ed è proprio questa piccola scritta che ci permetterà, col metodo che andiamo ora a vedere, di suddividere in più pagine il nostro testo!
Ecco il metodo:
$tot_pages = explode ( "[new_page]" , $testo );
if (! is_numeric ( $page )) { $page = 1 ; }
echo $tot_pages [ $page - 1 ] . "<p>" ;
for ( $i = 1 ; $i < count ( $tot_pages ) + 1 ; $i ++)
{
if ( $i == $page ) {
echo "<strong>$i</strong> " ;
} else {
echo "<a href=\"?page=$i\">$i</a> " ;
}
}
Analiziamo un pò questo codice.
Nella prima riga troviamo la variabile $tot_pages che dichiara la funzione explode() e che ci serve per suddividere il testo in più parti, tante parti quante sono le scritte "[new_page]" e per selezionare dunque il numero di pagine nelle quale suddividere il testo.
Una riga sotto c'è un if() che serve per selezionare la pagina e nel caso che la variabile $page non sia dichiarata e/o non sia di valore numerico, in automatico seleziona la pagina numero uno.
Scendendo troviamo la funzione echo() che utiliziamo per stampare a video il testo selezionato (tramite la variabile $page vista in precedenza).
Infine c'è un ciclo for() per stampare a video le pagine ed all'interno un controllo if-else che permette di stampare a video in grassetto la pagina selezionata e fare un collegamento ipertestuale alle altre.
Lo script è davvero molto semplice, ed anche altrettanto personalizzabile.

Creare un contatore grafico in PHP appoggiandoci su un file di testo.
Iniziamo col creare il nostro file .txt con il Blocco Note, scriviamo 0 e salviamo chiamandolo "contatore".
Creiamo una cartella e diamogli nome "imgCont", creiamo 10 immagini .jpg, e diamogli nome da 0 a 9 in base all'immagine, e inseriamole dentro la cartella.
Adesso iniziamo col scrivere le prime righe di codice che si connetteranno con il file, preleveranno il valore, lo incrementeranno e lo modificheranno:
Creiamo la funzione e le variabili che ci serviranno:
<?
function conta() { // creiamo la funzione del contatore
$i=0;//Inizializziamo la variabile i per il ciclo del recupero dati
$imageFolder="imgCont";// Creiamo la variabile con il percorso delle immagini per il nostro contatore
Adesso apriamo il file e lo archiviamo in un array:
$file=fopen("count.txt","r+");//Apriamo il file in lettura e scrittura
$recupero=file("count.txt");//Apriamo il file archiviandolo in un array
Controlliamo se l'utente è già entrato, in questo caso il contatore non verrà incrementato:
if (!isset($_SESSION['PhpCounter'])) {//controlliamo se la visita è già stata fatta
$recupero[0]++;//se è la prima volta che l'utente entra, incrementiamo il contatore
$_SESSION['PhpCounter']="";//inizializziamo la sessione di controllo se è la prima volta
fwrite($file,$recupero[0]);//scriviamo il nuovo valore del contatore, ovvero il contatore incrementato
}
A questo punto, chiudiamo il file:
fclose($file);//chiudo il file
Ed ora, diamo vita grafica al contatore:
$quanti=strlen($recupero[0]);//Riprendiamo l'array creato e ne verifico la grandezza
while($i < $quanti) {//iniziamo il ciclo per la divisione dei numeri
$numeri=substr($recupero[0],$i,1);//dividiamo i numeri incrementando ogni volta la posizione di uno, fino alla lunghezza del numero
echo "<img src='".$imageFolder."/".$numeri.".jpg'>";//scriviamo i tag html per richiamare le immagini e in base al numero, richiamiamo la corrispondente!
$i=$i+1;//incrementiamo i
}
}
conta(); //avviamo la funzione
?>

Come realizzare un sito in PHP.
Supponiamo di avere un sito con un header superiore, un corpo centrale ed un footer inferiore.
Inserendo in ogni pagina il codice di header, footer e corpo centrale, l'aggiornamento risulterebbe assai difficoltoso e lento. Ci serviremo quindi del comando include() di PHP, che permette di richiamare più files in altri.
Creiamo un file "header.php" ed inseriamoci questo codice:
<div id="header">
Qui tutto il codice dell'header...
</div>
Da notare come in questo file non siamo presenti i tags HTML o BODY.
Ora creiamo "footer.php":
<div id="footer">
Qui tutto il codice del footer
</div>
Quindi "index.php":
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Il mio sito con PHP</title>
</head>
<body>
<!-- Inizio HEADER -->
<?php include("header.php"); ?>
<!-- Fine Header -->
<!-- Inizio codice pagina -->
<div id="corpo">
Qui il codice della pagina
</div>
<!-- Fine codice pagina -->
<!-- Inizio codice footer -->
<?php include("footer.php"); ?>
<!-- Fine codice footer -->
</body>
</html>
Da notare come il codice di header e footer venga richiamato in ogni pagina, di modo che sia possibile modificarlo nei rispettivi file e rendere effettive le modifiche in tutte le pagine del sito.
Possiamo ora personalizzare la grafica dei tre DIV con i CSS. Sicuramente un passo in avanti nella realizzazione di un sito web.

Form per invio email in formato HTML
Realizzeremo un form che invii email in formato HTML.
Il tutorial si compone di due pagine: modulo.htm, contenente il form per l'inserimento dei dati e send.php, contenente il codice PHP per l'elaborazione e l'invio dei dati.
Ecco il codice di "modulo.htm":
<form method="post" action="send.php" name="modulo">
Nome e cognome:
<input type="text" name="nome" size="30">
Indirizzo e-mail:
<input type="text" name="email" size="30">
Testo del messaggio:
<textarea rows="10" cols="30" name="messaggio">
</textarea>
<input type="submit" value="Invia">
<input type="reset" value="Cancella">
</form>
Quindi il codice di "send.php":
<?PHP
// Processo di recupero dei dati
$nome = $_POST['nome'];
$email = $_POST['email'];
$messaggio = nl2br($_POST['messaggio']);
// Processo di controllo [Opzionale]
if ($nome == null)
{
print "Errore: &egrave; necessario compilare il campo 'Nome e cognome'";
}
else
{
if ($email == null)
{
print "Errore: &egrave; necessario compilare il campo 'Indirizzo e-mail'";
}
else
{
if ($messaggio == null)
{
print "Errore: &egrave; necessario compilare il campo 'Messaggio'";
}
else
{
// Processo di configurazione dell'email
// [Destinatario, mittente, ecc]
$mail_to = "tuamail@tuodominio.it";
$mail_from = $email;
$mail_subject = "Contatto dal web da parte di $nome";
$mail_body = "<p><font color=#000000>$messaggio</font></p>";
// Intestazioni HTML
$mail_in_html = "MIME-Version: 1.0\r\n";
$mail_in_html .= "Content-type: text/html; charset=iso-8859-1\r\n";
$mail_in_html .= "From: <$mail_from>";
// Processo di invio
if (mail($mail_to, $mail_subject, $mail_body, $mail_in_html))
{
print "Email inviata con successo!";
}
else
{
print "Errore";
}
}
}
}
?>
Da notare di questo codice la riga:
$mail_to = "tuamail@tuodominio.it";
in cui dovrete settare l'email del destinatario.
Non di meno è la riga:
$mail_body = "<p><font color=#000000>$messaggio</font></p>";
in cui potete inserire altri tags html per personalizzare il risultato grafico.
NB: Vi consigliamo di tralasciare gli apici nei tags HTML inseriti in questa variabile ($mail_body).
Questa è una struttura base del sistema di invio mail, poichè possiamo personalizzarlo aggiungendo ad esempio gli smilies, oppure potremmo creare un sistema di newsletter, con un ciclo while che ripeta l'invio della mail per ogni indirizzo presente in un database.

Visualizzare un'immagine... solo se il campo di un database non è vuoto
In molte applicazioni web, specie nei guestbook e nei forum notiamo come alcuni utenti hanno, a fianco del loro username, il disegno di una casetta linkata alla propria home page e altri utenti no! La spiegazione è semplice: l'utente con la cesetta ha un sito web, quello senza no! La risposta è banalissima... ma non è questo che volevo spiegarvi :)
Vediamo la parte pratica. Chi ha avuto a che fare con un'applicazione simile saprà che è impossibile (senza adottare lo script che spiegherò tra un po') scegliere di visualizzare l'immagine se il campo del database è pieno o di non visualizzarla se questo è vuoto!
Creiamo pertanto uno script ad hoc per le nostre esigenze, supponendo di avere a che fare con un database (lascio a voi il compito della connessione) che dispone del campo 'sitoweb' e di avere accesso ai dati grazie al recorset 'dati_utente':
<?php
$sitoweb = $row_dati_utente['sitoweb'];     //la variabile sitoweb corrisponde al campo sitoweb del database
if ($row_dati_utente['sitoweb'] != "")
{
//se questa variabile non è vuota stampo la casetta con il collegamento
echo "<a href=\"http://$sitoweb\"><img src=\"/images/home.jpg\" alt=\"Visita il sito dell'autore\" width=\"17\" height=\"17\" target=\"blank\" border=\"0\" /></a>";
}
else
{
echo "";     //altrimenti non visualizzo niente
}
?>
Come potete capire abbiamo innanzitutto stabilito che la variabile '$sitoweb' viene presa in input dal campo 'sitoweb' del database. In seguito abbiamo definito che se il campo 'sitoweb' non è vuoto viene stampata l'immagine della casetta (/images/home.jpg) con il link alla home page; in caso contrario non viene stampato niente.
L'html relativo all'inserimento dell'immagine linkata è stato creato grazie al comando echo di php. Abbiamo dovuto pertanto usare le cosiddette sequenze di escape scrivendo \" al posto delle sole " (virgolette).

Generare password random
Quante volte avete dimenticato una password? E quante volte che avete eseguito le operazioni di recupero della password vi è arrivata una mail con una password di lettere e numeri random?
Beh, ecco un codice semplice ma che fa il suo dovere grazie alle funzioni rand e chr di php.
<?php
// Lunghezza della password da generare
$lunghezza_password = 10;
for ( $k=1;$k<=$lunghezza_password;$k++ )
{
// $k multiplo di 3
if ( $k % 3 )
{
// Scegliamo se maiuscola o minuscola
if ( rand( 0,200 ) <= 100 )
{
// Maiuscola
// Nella tabella ASCII da 65 a 90 ci sono le lettere dell'alfabeto Maiuscole
$newpass .= chr( rand ( 65,90 ) );
}
else
{
// Minuscola
// Nella tabella ASCII da 97 a 122 ci sono le lettere dell'alfabeto Minuscole
$newpass .= chr( rand ( 97,122 ) );
}
}
// $k non è multiplo di 3
else
{
// Inseriamo un numero
$newpass .= rand( 0,9 );
}
}
print $newpass;
?>
Con questo piccolo script, generiamo una stringa di lunghezza a vostra scelta composta da lettere (maiscole e minuscole) e numeri.
La funzione rand non fa altro che generare un numero casuale. Se non gli viene passato nessun range, sceglie autonomamente. La funzione chr recupera il valore nella tabella ASCII corrispondente al numero che gli viene passato.
Adesso sta a voi integrarlo nel vostro sito come più vi piace.

Visualizzare un link a caso
In questo tutorial useremo la funzione  rand, ma questa volta la utilizzeremo per farle scegliere un link, in una lista che abbiamo fatto prima, in maniera casuale e reindirizzando l'utente verso quel link.
Per far ciò creiamo una nuova pagina php con il nome 'linkrandom.php' e scriviamoci dentro questo semplice codice:
<?php
$url[] = "http://www.google.it";
$url[] = "http://www.xxxxxxxxxxx.org";
$url[] = "http://www.xxxxxxxxxxx.org";
$totlink = count($url);
$linknum = rand(0, $totlink-1);
header("Location: ".$url[$linknum]);
?>
e per apprezzare il tutto, nel nostro sito mettiamo un link di questo tipo:
<a href="linkrandom.php" onclick="alert('Tutorial By XXXXXXXXX');">Visita un sito a caso</a>
Come avrete visto è un codice molto semplice ma che funziona come deve.
La funzione rand già sappiamo cosa fa, mentre la funzione count non fa altro che contare di quanti valori è composta l'array $url e restituisce il numero. Ma siccome le chiavi di un'array iniziano da 0, abbiamo la necessità di diminuire di 1 quel valore.
La funzione header non fa altro che passare delle stringhe al browser che all'utente non vengono mostrate. Con Location non facciamo altro che reindirizzare il browser verso il sito che gli abbiamo passato come valore.

Cambiare il banner in base alla pagina
Con questo trucco capiremo come molti siti, specie quelli articolati in più sezioni, riescano a gestire il banner a seconda della pagina richiesta dall'utente. Si tratta di un'applicazione molto utile che permette all'utente di visualizzare banner diversi, mantenendo perfettamente identico il resto della struttura.
Supponiamo di avere un sito articolato in molte pagine tutte uguali e, tra queste, anche 'chat.php', 'guestbook.php' e 'forum.php'. Vogliamo distinguere le pagine in questione dalle altre cambiandone il logo. Vi chiedete come questo sia possibile? Semplicissimo.
Useremo il classico operatore di scelta multipla (switch) e la variabile server PHP_SELF che ci permette di ricavare il nome e la posizione sul server della pagina. Ci procureremo a priori quattro immagini da inserire nella cartella "images" chiamandole chat.gif, guestbook.gif, forum.gif ed ovviamente una generale chiamata banner.gif.
Gestiremo questi casi facendo in modo che se l'utente apra la pagina del forum (forum.php) visualizzeremo il logo del forum; lo stesso dicasi per la chat ed il guestbook. Nel caso in cui l'utente non richieda una di queste tre pagine bensì un'altra (curriculum.php, ad esempio), visualizzeremo un'immagine di default chiamata banner.gif. Mettiamoci al lavoro: cominciamo con il salvare questo codice in una pagina chiamata "gestione_banner.php":
<?php
$currentPage = $_SERVER["PHP_SELF"];     //recupero il nome della pagina
switch($currentPage) {
//pagina della chat
case '/chat.php':
echo "<img src=\"/images/chat.gif\" width=\"468\" height=\"60\" alt=\"La mia chat\">";
break;
//pagina del guestbook
case '/guestbook.php':
echo "<img src=\"/images/guestbook.gif\" width=\"468\" height=\"60\" alt=\"Leggi il mio guestbok\">";
break;
//pagina del forum
case '/forum.php':
echo "<img src=\"/images/forum.gif\" width=\"468\" height=\"60\" alt=\"Il mio Forum\">";
break;
//tutte le pagine tranne quelle su indicate
default:
echo "<img src=\"/images/banner.gif\" width=\"468\" height=\"60\" alt=\"Sassidesign.it\">";
break;
}
?>
Sarà di vitale importanza richiamare all'interno di ogni singola pagina questo codice nel punto in cui si voglia visualizzare il banner:
<?php include("gestione_banner.php"); ?>
N.B.: Per questioni di ordine del layout è opportuno lavorare con banner di uguali dimensioni. Il codice è abbondantemente commentato e non necessita di ulteriori chiarimenti.

Fogli di calcolo al volo con Php
Può essere utile in alcuni casi produrre al volo documenti ".xls" modificabili tramite il noto programma "Excel" per la gestione dei fogli di calcolo.
L'esempio che presentiamo in questo tutorial è estremamente semplice, ma con un po' di esperienza e di ingegno può essere sviluppato e integrato all'interno di applicativi complessi e basati sull'integrazione tra PHP e database come, ad esempio, gestori di fatturazione e magazzino. Passiamo ora al codice:
<?
header("Content-Type: application/vnd.ms-excel");
$a=9;
$b=10;
$c=11;
$somma= $a+$b+$c;
echo "
<table border="1">
<tr>
<td><strong>Prodotto a:</strong></td>
<td><strong>Prodotto b:</strong></td>
<td><strong>Prodotto c:</strong></td>
<td><strong>Somma:</strong></td>
</tr>
<tr>
<td>$a</td>
<td>$b</td>
<td>$c</td>
<td>$somma</td>
</tr>
</table>";
?>
Come avrete potuto notare, all'origine di tutto abbiamo la funzione "header()" a cui viene passato il "Content-Type", cioè la tipologia di documento che verrà generata, nel nostro caso essa sarà "vnd.ms-excel" relativa appunto ai fogli di calcolo. Per il resto sarà sufficente valorizzare le variabili che intendiamo elaborare e stamparle a video "immerse" nell'HTML.

Indicare il percorso della pagina sul server
Avete mai visto un sito che indica: Ti trovi in...
Bene, per fare in modo che sulla vostra pagina web appaia il percorso non dovete fare altro che inserire queste poche righe:
<?php print ("Sei in: "); ?>
<?php $currentPage = $_SERVER["PHP_SELF"];
print ($currentPage); ?>
Testate tutto e dovreste avere come output: Sei in: /nomecartella/nomepagina.php

Data e ora in una pagina web
Inserire la data e l'orario del server nelle proprie pagine web è facilissimo.
Basta solo incollare queste righe di codice php:
Per la data:
<?php print (date ("d/m/Y")); ?>
Per l'ora:
<?php print (date ("H:i:s")); ?>
Quindi, con un po di ingegno potremmo avere, per esempio:
Sono le ore <?php print (date ("H:i:s")); ?> del <?php print (date ("d/m/Y")); ?>
Per ottenere la data in altri formati, cambiate i caratteri nella sintassi del codice.
a - "am" o "pm"
A - "AM" o "PM"
d - giorno del mese a 2 cifre (con lo zero, eventualmente), da "01" a "31"
D - giorno della settimana in inglese a tre lettere
F - mese in forma estesa in inglese
h - ora in formato 12 ore
H - ora in formato 24 ore
g - ora in formato 12 ore (senza lo zero), da "1" a "12"
G - ora in formato 24 ore (senza lo zero), da "0" a "23"
i - minuti (con lo zero, eventualmente), da "00" a "59"
j - giorno del mese a 2 cifre (senza lo zero), da "1" a "31"
l - giorno della settimana in inglese; es. "Friday"
m - mese a 2 cifre (con lo zero, eventualmente), da "01" a "12"
n - mese a 2 cifre (senza lo zero), da "1" a "12"
M - mese in inglese a tre lettere
s - secondi a 2 cifre (con lo zero, eventualmente), da "00" a "59"
S - suffiso ordinale inglese
t - numero di giorni del mese specificato, da "28" a "31"
w - giorno della settimana espresso come numero, da "0" (Domenica) a "6" (Sabato)
Y - anno a 4 cifre
y - anno a 2 cifre
z - giorno dall'inizio dell'anno

Cosa sono e come settare i chmod
Il CHMOD è un comando FTP che serve ad impostare i permessi di scrittura e lettura di un file.
Esso rappresenta un problema non indifferente per un programmatore PHP, poichè spesso gli capita di dover dare ad alcuni file qualche permesso in più perchè funzioni lo script che sta progettando.
Il lato negativo di questo comando è che è settabile solo su server Linux/Unix, mentre su Windows non è possibile modificarlo (il valore di default su server win è di solito 655).
Il CHMOD è caratterizzato da una successione di 3 cifre:
es: 777
il primo setta i permessi per l' Owner (Proprietario)
il secondo per i Group (Gruppo)
il terzo per il Public (Utenti)
Ognuno dei 3 valori è il risulatato ottenuto dalla somma di tre numeri: 1: Execute , 2: Write , 4: Read.
Lettura (read) = 4
Scrittura (write) = 2
Esecuzione (execute) = 1
Il numero corrispondente si ottiene sommando i valori dei permessi, per cui:
5 = 4+1 (lettura ed esecuzione)
Ad esempio CHMOD 666 significa permesso in Lettura + Scrittura per Owner, Group e Public (2+4 per la prima cifra, 2+4 per la seconda e ancora 2+4 per la terza). Analogamente CHMOD 777 significa permesso in Lettura + Scrittura + Esecuzione (4+2+1=7).
Ad esempio chmod 755
leggibile-scrivibile-eseguibile al proprietario
leggibile-eseguibile al gruppo
leggibile-eseguibile agli altri utenti
Queste considerazioni valgono per i file.
I chmod, quando riferiti ad una directory, cambiano leggermente di significato. Infatti:
Leggibile
Significa possibilità di ottenere dall'esterno della directory l'elenco dei files
Scrivibile
Significa possibilità di creare nuovi files all'interno della directory
Eseguibile
Significa permesso di accesso all'interno della directory.
Questo è il motivo per cui molti sviluppatori PHP preferiscono un server Unix.

Includere file esterni su una pagina web
Php mette a disposizione i comandi include e require, molto utili quando vogliamo includere script o pagine esterne nella nostra pagina web...
La sintassi è la seguente:
<?php include("esterno.htm"); ?>
oppure:
<?php require("esterno.htm"); ?>
Tutto il codice contenuto in "esterno.htm" verrà elaborato dalla nostra pagina come se appartenesse alla pagina stessa.
Potete utilizzarlo per simulare un "effetto frame" (includendo più file in una stessa pagina), per questioni di comodità o comunque per organizzarvi al meglio il codice.

Formattare il testo di una textarea
Vediamo come permettere all'utente di formattare il testo di una textarea nella maniera a lui più congeniale...
Innanzitutto distinguiamo le due pagine: la prima conterrà il form in cui l'utente potrà scrivere, la seconda sarà quella che interpreterà il codice.
Nella prima pagina dobbiamo fare in modo che l'utente, cliccando su una "G" scriva del testo in grassetto e su una "I" in corsivo...
Realizzate le due immagini gif, chiamatele g.gif e i.gif e collocatele nella cartella images e inseritele nella vostra pagina con questo codice...
<img src="images/g.gif" OnClick="document.nomeform.nometextarea.value+='[B][/B]'">
<img src="images/i.gif" OnClick="document.nomeform.nometextarea.value+='[I][/I]'">
Nella seconda pagina dovrete incollare queste righe:
<?
$nomevariabile = str_replace("[B]","<strong>",$nomevariabile);
$nomevariabile = str_replace("[/B]","</strong>",$nomevariabile);
$nomevariabile = str_replace("[I]","<em>",$nomevariabile);
$nomevariabile = str_replace("[/I]","</em>",$nomevariabile);
print ($nomevariabile);
?>
Tramite uno str_replace i caratteri [B], [/B], [I], [/I] vengono convertiti rispettivamente nei tag <strong>, </strong>, <em>, </em>... semplicissimo.
La sintassi da seguire è la seguente...
$nomevariabile = str_replace("testodatrovare","testoconcuisostituirlo",$nomevariabile);
Se volete un esempio guardate pure il mio guestbook.
Questa funzione php potrebbe essere utilizzata per eliminare parole di cattivo gusto, sostituendole con asterischi... provateci voi!

Calcolare la dimensione di un file
Il php ci mette a disposizione un comando per ricavare la dimensione in byte di un file presente sul server.
Il comando da eseguire è il seguente:
$dimensione = filesize("nomedelfile.xxx");
Pertanto, supponiamo di voler calcolare il peso del nostro file index.php... il codice sarà il seguente:
echo ("Il file pesa ");
//recupero la dimensione del file in byte
$dimensione = filesize("index.php");
echo ($dimensione);
echo (" byte, pari a ");
//converto da byte a kilobyte
$dimensioneinkb = ($dimensione / 1024) ;
echo ($dimensioneinkb);
echo (" kb.");
?>
La riga $dimensioneinkb = ($dimensione / 1024) ; serve a convertire la grandezza da byte a kilobyte (1 kb = 1024 byte).
Terminate voi lo script arrotondando la variabile $dimensioneinkb a due cifre dopo la virgola.

Un saluto personalizzato in base all'ora
Oedremo come personalizzare il saluto all'utente in base al momento della giornata.
Per fare questo utilizzeremo un semplice script basato su un if, elseif, else. Dividiamo la giornata in tre momenti:
* la notte: dalle ore 0 alle ore 5;
* il giorno: dalle ore 6 alle ore 16;
* la sera: dalle ore 17 alle 23.
Incolliamo queste righe dove vogliamo che appaia il nostro saluto...
<?php
$ora = date ("H"); //recupero l'ora nel formato 24 ore
if ($ora >= 0 && $ora <= 5 ) {
echo " Buonanotte";
} else if ($ora > 5 && $ora <= 16) {
echo " Buongiorno";
} else echo " Buonasera";
?>
Non credo che questo script abbia bisogno di essere commentato... alla prossima!

Spedire e-mail da un form tramite php
In questa lezione vediamo come creare un modulo html capace di spedire e-mail tramite il php.
Nel nostro caso creeremo il codice necessario per permettere all'utente di inviarci un'email compilando un semplice form sul nostro sito web!
Così facendo nascondiamo anche il nostro indirizzo agli occhi di eventuali spammer! Procediamo subito con la creazione delle due pagine... vediamo la prima modulo.htm
<form action="send_mail.php" method="post" name="mail" id="mail">
<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><div align="center">Inserisci l'indirizzo presso il quale ricontattarti</div></td>
</tr>
<tr>
<td><div align="center">
<input name="indirizzo" type="text" id="indirizzo" size="40" maxlength="60">
</div></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td><div align="center">Oggetto del messaggio:</div></td>
</tr>
<tr>
<td><div align="center">
<input name="oggetto" type="text" id="oggetto" size="40" maxlength="50">
</div></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td><div align="center">Corpo del messaggio: </div></td>
</tr>
<tr>
<td><div align="center">
<textarea name="corpo" cols="40" rows="7" id="corpo"></textarea>
</div></td>
</tr>
<tr>
<td><div align="center">
<input type="submit" name="Submit" value="Invia">
<input type="reset" name="Submit2" value="Pulisci">
</div></td>
</tr>
</table>
</form>
Ora passiamo alla pagina send_mail.php che recupererà i dati dal form e li invierà tramite e-mail all'indirizzo specificato!
<?php
$mail_mittente = $_POST['indirizzo'];
$mail_destinatario = "michele@sassi.it"; //e-mail a cui saranno inviati i messaggi
$mail_oggetto = $_POST['oggetto'];
$mail_corpo = $_POST['corpo'];
if (mail($mail_destinatario, $mail_oggetto, $mail_corpo, "From: $mail_mittente"))
{
echo "E-mail inviata con successo";
}
else
{
echo "Errore... Non è stato possibile inviare alcun messaggio.";
}
?>
Personalizzate voi la grafica del vostro form, non posso pensare a tutto io ;)
Attenzione però perchè questa operazione non va a buon fine se il nostro server è temporaneamente fuori servizio o se non dispone del SendMail.

Andare a capo in una textarea: il comando nl2br
Avete notato come spesso, in molti siti web, scrivendo in una textarea di un form, non vengono rispettate le "andate a capo".
Questo avviene a causa di un errore che sta alla base della progettazione del form.
Supponiamo che la variabile che raccolga il testo inserito nella textarea sia chiamata proprio textarea.
Il normale comando in php per stampare un messaggio è questo:
<?php echo $textarea; ?>
Per rispettare le andate a capo dovremmo invece utilizzare il comando nl2br in questo modo:
<?php echo nl2br ($textarea); ?>
Problema risolto.

Un motore di ricerca con Php e Google
Grazie a pochi elementi del Php è possibile creare uno script che permetta all'utente di effettuare ricerche su Google ; è possibile specificare che la ricerca sul noto motore venga effettuata in tutto il Web o solo sulle pagine del nostro sito, specificando un parametro particolare in querystring che Google interpreterà. Per fare ciò utilizzeremo un semplice modulo Html che permetta di specificare il testo da ricercare e se, come già detto, la ricerca dev'essere eseguita in tutto il Web o solo sulle pagine del nostro sito.
Di seguito il codice Html da inserire nelle pagine del nostro sito:
<form method="post" action="google.php">
Cerca con Google
<input type="text" name="testo">
<input type="radio" name="dove" value="s" checked> in questo Sito
<input type="radio" name="dove" value="w"> nel Web
<input type="submit" value="Cerca">
</form>
Ecco lo script da inserire nel file 'google.php'
<?PHP
$testo = $_POST['testo'];
$dove = $_POST['dove'];
if ($testo == "") {
print "Inserisci un termine da ricercare";
}
else
{
if ($dove == "s")
{
header("location: http://www.google.com/search?as_sitesearch=www.lukeonweb.net&as_q=" . $testo);
}
else
{
header("location: http://www.google.it/search?hl=it&ie=UTF-8&q=" . $testo . "&meta=");
}
}
?>
Il funzionamento è semplice: recupero i dati dal form e li memorizzo nelle variabili $testo e $dove ; controllo che $testo non contenga una stringa vuota; controllo il valore di $dove per lanciare il redirect verso l'indirizzo di Google ed eseguire la ricerca sul Web o sul nostro sito.
Il primo redirect che effettuiamo, ovvero se $dove == "s", vede nell'indirizzo un parametro in querystring a cui abbiamo accennato ad inizio dell'articolo, ovvero as_sitesearch che contiene l'indirizzo del sito (con o senza la specifica http://) in cui effettuare la ricerca, ad esempio:
http://www.google.com/search?as_sitesearch= www.nomesito.xxx &as_q=TESTO_DA_CERCARE

Un'applicazione intelligente per lo smistamento dei messaggi provenienti da form-mail
Impareremo a creare un sistema intelligente per lo smistamento dei messaggi ricevuti da un form-mail. Supponiamo di voler permettere all'utente di poter contattare lo staff del nostro sito per quattro motivi essenziali, per esempio: informazioni generali, pubblicità, scambio link e segnalazione errori e di voler fare in modo che le email vengano così smistate: informazioni generali a info@dominio.it, pubblicità a pubblicita@dominio.it, scambio link a scambiolink@dominio.it e segnalazione errori a errori@dominio.it.
Le funzioni principali che coinvolgeremo in quest'applicazione sono essenzialmente due: mail() (che come ben sappiamo ci permette di inviare email dal web) e switch(), che effettua una determinata azione anzichè un'altra scegliendo in base al valore che l'utente associa alla variabile in quel determinato istante. Quando un'istruzione switch viene eseguita, viene calcolata l'espressione associata; se il valore dell'espressione corrisponde a quello di una case associata, il flusso di controllo passa alla case specificata, altrimenti si passa ad eseguire l'azione di default (default:).
Per quel che riguarda la nostra applicazione ci serviranno essenzialmente due pagine: vediamo la prima sulla quale non mi dilungherò molto, dato che si tratta di un semplice form:
<form action="contattaci.php" method="post" name="mail" id="mail">
<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td class="center">Inserisci l'indirizzo presso il quale ricontattarti * </td>
</tr>
<tr>
<td><div align="center">
<input name="indirizzo" type="text" id="indirizzo" size="40" maxlength="60">
</div></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td class="center">Oggetto del messaggio:</td>
</tr>
<tr>
<td><div align="center">
<select name="oggetto" id="oggetto">
<option value="informazioni">Informazioni</option>
<option value="pubblicita">Pubblicit&agrave;</option>
<option value="scambio_link">Scambio link</option>
<option value="segnalazione_errore">Segnalazione errori</option>
</select>
</div></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td class="center">Corpo del messaggio: </td>
</tr>
<tr>
<td><div align="center">
<textarea name="corpo" cols="40" rows="7" id="corpo"></textarea>
</div></td>
</tr>
<tr>
<td><div align="center">
<input type="submit" name="Submit" value="Invia">
<input type="reset" name="Submit2" value="Pulisci">
</div></td>
</tr>
</table>
</form>
Successivamente passiamo alla seconda parte dell'applicazione che sarà quella che cambierà il destinatario della mail in base all'oggetto specificato. E' necessario che questa pagina si chiami contattaci.php
<?php
//dichiaro la variabile 'modulo'
$modulo = @$_POST['oggetto'];
//Effettuo lo switch sulla variabile 'modulo'
switch($modulo)
{
//caso 'informazioni'
case 'informazioni':
$mail_mittente = $_POST['indirizzo'];
$mail_destinatario = "info@dominio.it";
$mail_oggetto = $_POST['oggetto'];
$mail_corpo = $_POST['corpo'];
if (mail($mail_destinatario, $mail_oggetto, $mail_corpo, "From: $mail_mittente"))
{
echo "Messaggio inviato con successo al destinatario";
}
else
{
echo "Errore... Nessun messaggio inviato.";
}
break;
//caso 'pubblicità'
case 'pubblicita':
$mail_mittente = $_POST['indirizzo'];
$mail_destinatario = "pubblicita@dominio.it";
$mail_oggetto = $_POST['oggetto'];
$mail_corpo = $_POST['corpo'];

if (mail($mail_destinatario, $mail_oggetto, $mail_corpo, "From: $mail_mittente"))
{
echo "Messaggio inviato con successo al destinatario";
}
else
{
echo "Errore... Nessun messaggio inviato.";
}
break;
//caso 'scambio link'
case 'scambio_link':
$mail_mittente = $_POST['indirizzo'];
$mail_destinatario = "scambiolink@dominio.it";
$mail_oggetto = $_POST['oggetto'];
$mail_corpo = $_POST['corpo'];

if (mail($mail_destinatario, $mail_oggetto, $mail_corpo, "From: $mail_mittente"))
{
echo "Messaggio inviato con successo al destinatario";
}
else
{
echo "Errore... Nessun messaggio inviato.";
}

break;
//caso 'segnalazione errori'
case 'segnalazione_errore':
$mail_mittente = $_POST['indirizzo'];
$mail_destinatario = "errori@dominio.it";
$mail_oggetto = $_POST['oggetto'];
$mail_corpo = $_POST['corpo'];

if (mail($mail_destinatario, $mail_oggetto, $mail_corpo, "From: $mail_mittente"))
{
echo "Messaggio inviato con successo al destinatario";
}
else
{
echo "Errore... Nessun messaggio inviato.";
}

break;

//caso 'default'
default:
include("index.php");
break;
}
?>
Il codice è commentato a sufficienza e per semplicità ne vedremo solo uno in dettaglio, commentandolo qui di seguito:
//caso 'informazioni'
case 'informazioni':
$mail_mittente = $_POST['indirizzo']; //dichiaro la mail del mittente
$mail_destinatario = "info@dominio.it"; //dichiaro la mail del destinatario
$mail_oggetto = $_POST['oggetto']; //dichiaro l'oggetto della mail
$mail_corpo = $_POST['corpo']; //dichiaro il corpo della mail
if (mail($mail_destinatario, $mail_oggetto, $mail_corpo, "From: $mail_mittente")) //creo la funzione mail()
{
echo "Messaggio inviato con successo al destinatario"; //avviso che la mail e' andata a buon fine
}
else
{
echo "Errore... Nessun messaggio inviato."; //avviso che la mail NON e' andata a buon fine
}

Un'area riservata basata su un if-else
Questa lezione vuole essere un pretesto per imparare a capire il funzionamento del costrutto if-else e non un modo per imparare a creare un'area riservata vera e propria in quanto sappiamo benissimo che un sistema di protezione così implementato è facilmente penetrabile.
Innanzitutto dobbiamo creare la pagina del form, alla quale assegniamo un titolo a piacere. Questo il suo codice xhtml:
<form action="login.php" method="get" name="login" id="login">
<p>
<input name="user" type="text" id="user" value="user" />
<br />
<input name="pass" type="text" id="pass" value="pass" />
<br />
<input type="submit" name="Submit" value="Invia" />
</p>
</form>
Il form appena creato punta alla pagina "login.php" il cui scopo è quello di ricevere i dati in ingressso, confrontarli con due variabili assegnate ($username e $password) ed eseguire una delle due operazioni dichiarate in base al risultato del confronto. Nel nostro caso i valori corretti da inserire sono username = michele e password = sassi. E' inutile dire che questi valori possono, anzi, devono essere modificati!
<?php
$username = "michele"; //dichiaro username
$password = "sassi"; //dichiaro password
$user = $_GET['user']; //username inserito viene preso in input dal form
$pass = $_GET['pass']; //password inserita viene presa in input dal form
//controllo che i due valori inseriti corrispondano a quelli stabiliti...
//in caso positivo rimando alla pagina riservata
if ($username == $user && $password == $pass)
{
header("Location: areariservata.php");
}
//in caso negativo stampo un messaggio di errore
else
{
print "Hai sbagliato l'inserimento dei dati!";
}
?>
Da notare l'utilizzo dell'operatore di confronto AND (&&) nella stringa in cui abbiamo dichiarato la condizione: if ($username == $user && $password == $pass); affinchè l'espressione sia valida per l'operatore AND è necessario che entrambe le condizioni siano soddisfatte. Apro una piccola parentesi (per spiegare la differenza) sull'utilizzo dell'operatore OR, indicato dal doppio simbolo di pipe ( || ); per quest'operatore è sufficiente che anche una sola delle due condizioni sia verificata per attribuire valore positivo all'espressione.
Un suggerimento... Nel nostro caso, per semplicità, abbiamo preferito stampare un messaggio d'errore per dichiarare all'utente che non ha inserito i dati corretti. Un uso più intelligente sarebbe quello di rimandare il visitatore sulla pagina con il form per la registrazione al sito! Divertitevi pure!

Creare immagini al volo con GD Library di Php
Forse pochi sono al corrente dell'esistenza di uno strumento grafico chiamato GD Library che ci permette di creare immagini "al volo" direttamente con PHP. Per riuscire nell'operazione è necessario che questa libreria sia già compresa nella versione installata di PHP. In caso contrario sarà possibile comunque procurarsela e installarla. In questa lezione vedremo le seguenti funzioni relative a GD Library:
* imagecreate();
* imagecolorallocate();
* imagefilledrectangle();
* imagerectangle();
* header();
* imagepng();
* imagedestroy();
Vi insegnerò quindi come creare un'immagine grazie a queste funzioni PHP e a GD Library... Ecco il codice per crearla:
<?php
$height = 15;
$width = 100; // E' consigliato se dobbiamo creare un'immagine che rappresenti una percentuale
$immagine = imagecreate($width, $height);
$bg = imagecolorallocate($immagine, 255, 255, 255); // bianco
$barra = imagecolorallocate($immagine, 0, 255, 0);
imagefilledrectangle($immagine, 0, 0, $width, $height, $barra);
imagerectangle($immagine, 0, 0, $width, $height, $bg);
header("Content-type: image/png");
imagepng($immagine);
imagedestroy($immagine);
?>
Commentiamo il codice:
* Attraverso la funzione imagecreate() settiamo un blocco di memoria per l'immagine;
* Attraverso imagecolorallocate() definiamo i colori di questa immagine: avremo bisogno di 2 colori, uno per lo sfondo ($bg) e uno per la barra ($barra);
* Con la funzione imagefilledrectangle() dipingiamo nell'immagine un rettangolo riempito che mostrerà la percentuale;
* Creiamo un altro rettangolo con imagerectangle() che, chiaramente, sarà per lo sfondo.
A questo punto del codice l'immagine è ormai ben definita in memoria; non ci rimane che copiarla nel browser o in un file.
* Con la funzione header() definiamo il formato dell'immagine, in questo caso .png (GD Library supporta anche i formati gif, jpeg, tiff, wbmp) e la inviamo al browser. Ricordatevi che qualora manderemo questa immagine sul browser la funzione header() dovrà necessariamente occupare la prima linea di questo codice;
* Infine con la funzione imagepng() mandiamo sul browser una copia di questa immagine;
* Con imagedestroy(), distruggiamo l'immagine, dato che è stata ormai inviata.

Immagini di dimensione variabile con Php e GD Library
Per comprendere questa lezione è necessario aver letto quella precedente: "Creare immagini al volo con GD Library di Php".
In questa lezione vi insegnerò come creare, grazie alle apposite funzioni PHP e a GD Library , un'immagine la cui lunghezza varia in modo direttamente proporzionale ad una percentuale (che dovrete però calcolarvi in un'altra pagina... se vi presento il piatto pronto non imparerete mai a cucinare!).
Chiamate la pagina "barra.php" ed inseriteci il seguente codice:
<?php
$height = 15;
$width = 100; // E' consigliato se dobbiamo creare un'immagine che rappresenti una percentuale
$imm = imagecreate($width, $height);
$bg = imagecolorallocate($imm, 255, 255, 255); // Bianco
$barra = imagecolorallocate($imm, 255, 0, 0); // Rosso
imagefilledrectangle($imm, 0, 0, $_GET['barra_percent'], $height, $barra);
imagerectangle($imm, 0, 0, $width, $height, $bg);
header("Content-type: image/png");
imagepng($imm);
imagedestroy($imm);
?>
Vi spiegherò ora come utilizzare questa immagine per i fini suddetti. I più attenti avranno notato che alla riga 7 del codice sovrastante ho inserito al posto di $width la variabile "$_GET[' barra_percent ']".
Questa prenderà il valore di "barra_percent" con metodo GET da un'altra pagina.
Ecco come fare per far variare il width della nostra immagine in base alla percentuale:
* Rechiamoci in vista codice nella pagina dove abbiamo calcolato la percentuale (supponiamo si chiami "pagina.php") ;
* Inseriamo nel codice PHP di "pagina.php", dopo il calcolo della percentuale il seguente codice:
echo "<img src=\"barra.php?barra_percent=$percent\" ></td>\n";
* Ricordate che $percent è chiaramente la variabile con la quale io ho calcolato la percentuale in “pagina.php”.
Cosa abbiamo fatto in questo modo? Abbiamo detto a PHP di stampare un immagine (caricandola da "barra.php") dove il valore barra_percent è uguale a quello della percentuale. In questo modo il width della nostra immagine sarà direttamente proporzionale alla percentuale.
Vi faccio un esempio pratico: il width della nostra immagine è 100 (vedi $width); supponiamo che $percent sia 40; di conseguenza l'immagine sarà caricata nel seguente modo:
echo "<img src=\"barra.php?width=40\" ></td>\n";
e otterremo l'effetto tanto sperato.

Controllare la corrispondenza tra due campi di un form
Supponiamo di voler registrare i visitatori al nostro sito, e che il processo di registrazione preveda l'inserimento di username e password. Supponiamo quindi di aver messo due campi per la password, uno per la scelta e uno per la conferma:
Ecco quindi il codice del nostro form:
<form method="post" action="modulo.php" name="modulo">
Username scelto:<input type="text" name="username" size="30"/><br />
Digita qui la password:<input type="password" name="password" size="30"/><br />
Conferma la password:<input type="password" name="password_di_convalida" size="30" /><br />
<input type="submit" value="Invia" />
</form>
Ecco quindi il codice di "modulo.php":
<?php
// Recupero i dati dal form
$username = $_POST['username'];
$password = $_POST['password'];
$password2 = $_POST['password_di_convalida'];
// Controllo che l'input PASSWORD non sia vuoto
if ($password==null)
{
echo ("Errore: digitare una password valida!");
}
else
{
// Controllo la corrispondenza tra le password
if ($password!=$password2)
{
echo ("Errore: la password inserita non coincide con la prima!");
}
else
{
echo ("Successo: le password coincidono!");
// Qui tutte le operazioni in caso di coincidenza da parte delle password
}
}
?>
Il codice è abbondantemente commentato.. a voi il compito di modificare e personalizzare i messaggi.

Realizzare una calcolatrice con Php
Creare una calcolatrice con Php, così come con qualsiasi altro linguaggio, è molto semplice. Le pagine da creare sono essenzialmente due; la prima che servirà a raccogliere da un form i dati in input e la seconda che elaborerà i dati e stamperà a video il risultato!
Vediamo la prima pagina, alla quale potete assegnare un nome qualsiasi:
<form name="calcolatrice" id="calcolatrice" method="post" action="calcola.php">
<table style="background-color:#FFFF99; font-family:Verdana, Arial, Helvetica, sans-serif; border:1px dotted #0000FF; "width="300" border="0" cellspacing="3" cellpadding="3">
<tr>
<td colspan="2"><div align="center"><strong>CALCOLATRICE</strong></div></td>
</tr>
<tr>
<td width="210"><div align="right">Inserisci il primo numero</div></td>
<td width="69"><input name="1" type="text" id="1" size="10" /></td>
</tr>
<tr>
<td><div align="right">+</div></td>
<td><input name="radiobutton" type="radio" value="addizione" checked="checked" /></td>
</tr>
<tr>
<td><div align="right">-</div></td>
<td><input name="radiobutton" type="radio" value="sottrazione" /></td>
</tr>
<tr>
<td><div align="right">*</div></td>
<td><input name="radiobutton" type="radio" value="moltiplicazione" /></td>
</tr>
<tr>
<td><div align="right">/</div></td>
<td><input name="radiobutton" type="radio" value="divisione" /></td>
</tr>
<tr>
<td><div align="right">Inserisci il secondo numero </div></td>
<td><input name="2" type="text" id="22" size="10" /></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Calcola!" /></td>
</tr>
</table>
</form>
Ora passiamo alla seconda che, come abbiamo già detto, sarà quella che elaborerà i dati utilizzando il solito switch! Per il funzionamento di questo comando vi rimando ad una lettura precedente; ora vediamo il codice della pagina che dovrà necessariamente chiamarsi "calcola.php":
<?php
$primo_valore = $_POST['1']; //recupero il primo valore dal form
$secondo_valore = $_POST['2']; //recupero il secondo valore dal form
$operazione = $_POST['radiobutton']; //recupero l'operazione da eseguire dal form
switch($operazione)
{
case 'addizione':
{
$somma = $primo_valore + $secondo_valore;
print($somma);
}
break;
case 'sottrazione':
{
$sottrazione = $primo_valore - $secondo_valore;
print($sottrazione);
}
break;
case 'moltiplicazione':
{
$prodotto = $primo_valore * $secondo_valore;
print($prodotto);
}
break;
case 'divisione':
{
$quoziente = $primo_valore / $secondo_valore;
print($quoziente);
}
break;
default: //in caso di errore stampo un messaggio
print("Si è verificato un errore!");
break;
}
?>

Collegare immagini a un database mysql
Qual'è la soluzione migliore per collegare o caricare delle immagini .jpg o simili in un database mysql? come le recupero con php?
potresti salvare le immagini in una cartella del server, e nel data base, tra i vari campi di qui è composto metterci una colonna del tipo "indirizzo_foto" nel quale salvi l'indirizzo della foto stessa. Praticamente lo usi per richiamare la foto.
Non credo che salvare le foto direttamente nel db sia la via migliore. 
Concordo con luca, anche perchè salvare immagini su database ha un peso devastate, calcoal che un record testuale su db pesa una manciata di Byte mantre un'immagine, magari grande, può arrivare anche a un paio di MB.
come si fa tutto questo con php?
spedisci il file tramite un form file;
nella pagina di destinazione usi move_uploaded_file per copiarlo definitivamente sul server;
usi fli attributri di $_FILE[....] per copiarti il nome del file e lo aggiungi alla path(esempio la cartella /tuosito/foto/);
salvi su db la path che ti risulta sopra (/tuosito/foto/$nome_file)
e poi lo visualizzi sulla pagina che ti interessa come link ad immagine
tra l'altro c'e' anche il metodo per risolvere il problema dei fi
le doppi, ossia se c'e' un file con lo stesso nome nella cartella viene riscritto ma mettendoci davanti la data in timestamp si sta sicuri
viene pure spedita una mail a tutt iquelli che devono sapere che è stato fatto l'upload (a me serviva e non ha voluto toglierlo).
Qui all'inizio c'è una conferma per la sessione in corso, ma senza la pagina prima non ha senso

<?PHP
require_once('../connection/connection.php');
require_once('membri.php');
session_start();
if($_SESSION['admin'] != '***' AND $_SESSION['admin'] != '****' ){
die ("non hai accesso al sito prima devi effettuare il <a href=\"login.php\">login</a> ");
}
$currentPage=$_SERVER['PHP_SELF'];
$cancella= "cancella.php";
mysql_select_db($database, $database_a);
$msg_per_page = 10;
$count_mess = @mysql_query("SELECT COUNT(id) FROM table");
$res_count = @mysql_fetch_array($count_mess);
if ($res_count[0] == FALSE) {
echo "Nessun messaggio è stato inserito nel database";
}else{
$tot_pages = ceil($res_count[0]/$msg_per_page);
$curr_page = $_GET['page'];
if ($curr_page < 1){ $curr_page = 1;}
$primo = ($curr_page - 1) * $msg_per_page;
$query_disk = "SELECT * FROM table ORDER BY id DESC LIMIT $primo,$msg_per_page";
$result_disk = mysql_query($query_disk);
$data=(date("dmyhis"));
}
if($_POST['submit']){
$titolo=$_POST['titolo'];
$nome_senza= ereg_replace(" ","_",$_FILES["file"]["name"]);
$titolo_file= $data."_".$nome_senza;
$file_path="../dumpingground/upload/".$titolo_file;
$firma=$_POST['firma'];
if($_POST['mail']){
$testo=$_POST['testo'];
}
// Parte relativa all'upload
$uploaddir = '/membri/sito/upload/';
$userfile_tmp = $_FILES['file']['tmp_name'];
$userfile_name = $titolo_file;
if (move_uploaded_file($userfile_tmp, $uploaddir . $userfile_name)){
echo "<p>File ".$userfile_name." inserito con successo</p>";
$data= date("D d-m-Y");
$query= "INSERT INTO table (id, data, titolo, firma, download) VALUES(NULL, '$data', '$titolo', '$firma', '$file_path')";
mysql_query($query);
echo "<p>inserimento avvenuto corretamente di: ".$titolo."</p>";
}else{
echo "Upload del file ".$userfile_name." NON effettuato. Errore di trasmissione dati: RITENTA</p>";
}
}
if($_POST['mail']){
$testo=$_POST['testo'];
$data_post= date("D d-m-Y");
mail("$membri", //cambiare con l'indirizzo di destinazione
"nuovo materiale",// oggetto
"da: $firma <a href=\"www.sito.org/login.php\">www.sito.org/login.php</a>; $data_post; $firma; $testo");
echo "<p>messaggio spedito corretamente</p>";
}else{
echo "<p>spedisci da solo il messaggio agli altri</p>";
}
$query_disk = "SELECT * FROM table ORDER BY id DESC LIMIT $primo,$msg_per_page";
$result_disk = mysql_query($query_disk);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="stili_pagine.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.Stile5 {color: #00CC00}
-->
</style>
</head>
<body>
<table width="607" height="502" border="0">
<tr>
<th width="922" class="Stile4" scope="row"><div align="center" class="Stile5">
<div align="center"><img src="dritto.gif" width="462" height="61"></div>
</div></th>
<td width="27"> </td>
</tr>
<tr>
<th scope="row"><p class="Stile4">FILE IN ARCHIVIO</p><p>
<?PHP
if($_SESSION['admin'] == 'cescofry'){
while ($hot_disk = mysql_fetch_array($result_disk)) {
echo "<table width=\"100%\" border=\"1\"><tr><td width=\"5%\">";
$id= $hot_disk['id'];
echo $id;
echo "</td><td width=\"45%\">";
echo $hot_disk['titolo'];
echo "</td><td width=\"20%\">";
echo $hot_disk['firma'];
echo "</td><td width=\"20%\">";
echo $hot_disk['data'];
echo "</td><td width=\"10%\">";
$download=$hot_disk['download'];
echo "<a href=\"".$download."\">download</a>";
echo "</td><td width=\"10%\">";
echo "<a href=\"".$cancella."?id=".$id."\">cancella</a>";
echo "</td></tr></table>";
}
}else{
while ($hot_disk = mysql_fetch_array($result_disk)) {
echo "<table width=\"100%\" border=\"1\"><tr><td width=\"5%\">";
echo $hot_disk['id'];
echo "</td><td width=\"45%\">";
echo $hot_disk['titolo'];
echo "</td><td width=\"20%\">";
echo $hot_disk['firma'];
echo "</td><td width=\"20%\">";
echo $hot_disk['data'];
echo "</td><td width=\"10%\">";
$download=$hot_disk['download'];
echo "<a href=\"".$download."\">download</a>";
echo "</td></tr></table>";
}
}
?>
</p></th>
<td> </td>
</tr>
<tr>
<th height="334" scope="row"><p align="center" class="Stile4">INSERISCI FILE NELL ARCHIVIO </p>
<form method="post" enctype="multipart/form-data" name="download" action="<?PHP echo $courrentPage; ?>">
<p align="left"><span class="Stile1">COMMENTO:</span> <input name="titolo" type="text" id="commento2" value="" size="50">
</p>
<p align="left"> <span class="Stile1">SELEZIONA FILE:</span>
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input name="file" type="file" size="35">
</p>
<p align="left"> <span class="Stile1">FIRMA:</span>
<input name="firma" type="text" id="firma2">
notifica via mail agli altri
<input name="mail" type="checkbox" id="mail2" value="checkbox">
</p>
<p align="center" class="Stile1">TESTO DELLA MAIL CHE VERRA' SPEDITA : </p>
<p align="left">
<textarea name="testo" cols="70" rows="5" id="textarea2"></textarea>
<input name="submit" type="submit" id="submit" value="Invia">
</p>
<p align="right"> </p>
</form> </th>
<td> </td>
</tr>
<tr>
<th height="35" scope="row">powered by <a href="mailto:cescofry@hotmail.com">free_zone </a></th>
<td> </td>
</tr>
</table>
</body>

Creare cartella e uploadare files
Sto realizzando un semplice codice php che deve eseguire delle operazione su file e cartelle ( tipo copia, rinomina a richiesta dell'utente)
Es: interrogando lo script a questa maniera:
page.php?make=ciao
Lo script dovrebbe, creare la dir "ciao", copiare un fil e "file.swf" della dir principale nella dir creata, e successivamente rinominare questo file copiato con nome "ciao.swf". Seguendo le refenrece offerte dal sito php.net/it ho arrangiato qualche script ottimale, ma purtroppo il risultato è che mi crea solamente la directory, gli altri comandi (copia del file, e rinomina) non me li esegue. Come mai? Ci tengo a precisare che lo script lo testato su altervista.org e in Locale.
Devo impostare quale permesso particolare oppure ho elaborato uno script fetticcio?
Spero potete darci un occhiatina, e consigliarmi qualcosa di gratificante.
<?
if($genera == "ok") 
{
$target = $make;
if (strlen($target)<2) 

echo "Scrivi minimo 2 caratteri!<br><br><a href=./genera.php>Torna indietro</a>"; echo "</td></tr>";exit(); 
}
if (is_dir($target)) echo "Firma già presente!<br><br><a href=./genera.php>Torna indietro</a>"; echo "</td></tr>";exit();
if (ereg('\.\.', $target) || ereg("[^a-zA-Z0-9\._\-\/]", $target)) echo "Caratteri invalidi!"; exit();
//if (!is_dir($target))
if (file_exists($target) && !is_dir($target)) return 0;
mkdir($target);
if(is_dir($target)) echo "$target Creata!";
copy("firma_esempio.swf", $target);
rename("$target/firma_esempio.swf", "$target/$target.swf");
exit();
}
?>

Reperire l'indirizzo IP di un visitatore
La funzione getenv() del Php permette di reperire le variabili d'ambiente del server; in questo modo è semplice reperire l'indirizzo IP di un visitatore ed utilizzarlo per registrarlo in un cookie, in un database, o per qualsiasi altro controllo.
Il codice seguente si limita a stamparlo a video:
Il tuo indirizzo IP è <?echo getenv("REMOTE_ADDR")?>

Convertire una stringa in maiuscolo e in minuscolo
In Php è semplice effettuare la conversione di una stringa in minuscolo o in maiuscolo, operazione utile in molti occasioni, dato che spesso si tratta di applicazioni case-sensitive sulle stringhe.
Utilizzeremo le funzioni strtolower() e strtoupper().
Il seguente codice trasforma il testo in minuscolo:
<?PHP
echo strtolower('LukeOnWeb.Net');
?>
Il seguente codice, invece, trasforma il testo in maiuscolo:
<?PHP
echo strtoupper('LukeOnWeb.Net');
?>

Generare numeri casuali
In Php è possibile generare numeri casuali mediante il comando rand().
La sintassi è
rand(inizio,fine);
dove inizio e fine sono rispettivamente i limiti minimi e massimi scelti, e tra questi viene estratto un numero a caso.
Un esempio:
<?PHP
$n = rand(0,100);
echo $n;
?>
Per verificare il funzionamento basta aggiornare la pagina e verificare che il numero sia diverso e senza una particolare logica rispetto al precedente.

Creare un menu dinamico in Php
Con questo semplicissimo script è possibile creare un menu dinamico. Allo scopo sono utilizzati gli array, e ci servoe una sola pagina (navigation.php).
Vediamo il codice:
<?PHP
function navigation()
{
global $HTTP_HOST;
$nav[] = array(
"txt" => "Homepage",
"pag" => "index.php"
);
$nav[] = array(
"txt" => "Links",
"pag" => "links.php"
);
$nav[] = array(
"txt" => "Contatti",
"pag" => "contatti.php"
);
for ($id = 0; $id <= count($nav) - 1; $id++)
{
echo "<a href=\"http://" . $HTTP_HOST . "/" . $nav[$id]["pag"] . "\">" . $nav[$id]["txt"] . "</a><br>\n";
}
}
?>Per aggiungere un'altra sezione, basta aggiungere questa stringa di codice:
$nav[] = array(
"txt" => "Nome_Della_Sezione",
"pag" => "Pagina_Della_Sezione.Estensione"
);
Ed ora vediamo come visualizzare il menu su tutte le pahine .php che volete:
<?PHP
require("navigation.php");
navigation();
?>

Creare una sezione di annunci (non testato)
La tabella Annunci che memorizza gli annunci contiene i campi:

ID [chiave primaria] 
Nome [nome dell'autore dell'annuncio] 
Email [email] 
Testo [testo dell'annuncio]

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] 

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 durante la connessione al database");
$sql="INSERT INTO Annunci (Nome,Email,Testo) VALUES('".$nome."','".$email."','".$testo."')";
mysql_db_query("db_annunci",$sql,$db);
mysql_close();
?> 

In questo caso il database inserisce automaticamente una chiave unica che contraddistingue l'annuncio nel campo ID della tabella Annunci.
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 durante la connessione al database");
$sql="SELECT * FROM Annunci";
$result=mysql_db_query("db_annunci",$sql,$db);
while ($row=mysql_fetch_array($result)) {
print("<B>Nome</B>: <A HREF=\"".$row["Email"]."\">".$row["Nome"]."</A><BR>");
print("<B>Testo dell'annuncio</B>:<BR>");
print(htmlentities($row["Testo"])."<BR>");
print("<HR SIZE=\"1\">");
}
mysql_close();
?> 

La funzione htmlentities() permette di "tradurre" le lettere accentate e gli altri caratteri particolari nella loro codifica html, in modo da poter venire visualizzate correttamente dai vari browser. 

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 durante la 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,$db);
while ($row=mysql_fetch_array($result)) {
print("<B>Nome</B>: <A HREF=\"".$row["Email"]."\">".$row["Nome"]."</A><BR>");
print("<B>Testo dell'annuncio</B>:<BR>");
print(htmlentities($row["Testo"])."<BR>");
print("<HR SIZE=\"1\">");
}
mysql_close();
?> 

Campi del Database di MySQL

campo testo

tipo lunghezza massima descrizione
varchar 255 caratteri campo di testo a lungh. variabile - 255 byte X+1 byte ( X è lo spazio occupato dal testo all'interno del campo)
char 255 caratteri campo di testo a lungh fissa - 255 byte X byte ( X è lo spazio occupato dal testo all'interno del campo)
tinytext
tynyblob
255 caratteri campo di testo a lungh. variabile - 255 byte X+1 byte ( X è lo spazio occupato dal testo all'interno del campo)
text
blob
65.535 caratteri campo di testo a lungh. variabile - 65535 byte X+2 byte ( X è lo spazio occupato dal testo all'interno del campo)
mediumtext
mediumblob
16.777.215 caratteri (1,6 Mb) campo di testo a lungh. variabile - 1,6 MB X+3 byte ( X è lo spazio occupato dal testo all'interno del campo)
longtext
longblob
4.294.967.295 caratteri (4 Gb) campo di testo a lungh. variabile - 4,2 GB X+4 byte ( X è lo spazio occupato dal testo all'interno del campo)
enum 65.535 caratteri Valori potenziali di un campo di testo

campo numerico

int 4.294.967.295 Campo numerico con o senza segno (4 byte da -2147483648 a +2147483647 da 0 a +4294967295)
tinyint 255 Campo numerico con o senza segno (1 byte da -128 a +127 da 0 a +255)
smallint 65.535 Campo numerico con o senza segno (2 byte da -32768 a +32767 da 0 a +65535)
mediumint 16.77.215 Campo numerico con o senza segno (3 byte da -8388608 a +8388607 da 0 a +16777215)
bigint 18.446.744.073.709 Campo numerico con o senza segno (8 byte da -9223372036854775808 a +9223372036854775807 da 0 a +18446744073709550615)
fload - Campo numerico in virgola mobile con segno (4 byte A seconda dei valori )
double - Campo numerico in virgola mobile con segno (8 byte A seconda dei valori)
decimal - Campo numerico in virgola mobile con segno (Il peso di I + 2 Byte A seconda dei valori=

campo data e ora

date dal 01-01-1001 al 31-12-9999 Memorizza i dati in formato YYYY-MM-DD (anno-mese-giorno)
time da -838:59:59 a 838:59:59 Memorizza i dati in un formato ora (hh:mm:ss 00:00:00)
datetime dalle 00:00:00 del 01-01-1001 alle ore 23:59:59 del 31-12-9999 Memorizza i dati in un formato YYYY-MM-DD HH:MM:SS (anno-mese-giorno, ore:minuti:secondi)
timestamp 2-14 Memorizza i valori numerici per presentare diversi tipi di indicatori dati data e ora Unix
TIMESTAMP(2) AA 00
TIMESTAMP(4) AAMM 0000
TIMESTAMP(6) AAMMGG 000000
TIMESTAMP(8) AAAAMMGG 00000000
TIMESTAMP(10) AAMMGGhhmm 0000000000
TIMESTAMP(12) AAMMGGhhmmss 000000000000
TIMESTAMP(14) AAAAMMGGhhmmss 00000000000000
year dal 1901 al 2155 memorizza quattro cifre (o due) per presentare l'anno

Leggere il codice sorgente HTML di una pagina web (in remoto)
<?php
//lettura di un file remoto
if (isset($_POST['webpage']))
$webpage = $_POST['webpage'];
else
$webpage = "";

echo "Inserire l'indirizzo della pagina Web (senza http://)";
echo "<form action='" . $_SERVER['PHP_SELF'] . "' method='post'>";
echo "<input type='text' size='50' name='webpage' value='$webpage'>";
echo "<input type='submit' value='Visualizza'>";
echo "</form>";

if ($webpage) {
$fp1 = fopen("http://" . $_POST['webpage'],"r");
echo "Il contenuto della pagina Web è:<p>";
echo "<form>";
echo "<textarea cols=60 rows=30>";
$c=1;
$s=fgets($fp1, 4096);
while(!feof($fp1)) {
echo "$s";
$s=fgets($fp1,4096);
}
echo "/textarea></form>";
fclose($fp1);
}
?>

MySQL: generare una tabella HTML con una semplice istruzione SELECT
Con il monitor di MySQL è possibile generare una tabella direttamente in codice HTML, già popolata con i dati risultanti dall'istruzione SELECT.
Ecco come fare:
Aprite un prompt di DOS e posizionatevi nella cartella /bin di MySQL (tipicamante c:\mysql\bin) digitate il comando
mysql -H -uU -pP DB
dove
U = username
P = password
DB = nome database cui collegarsi
-H è il parametro per generare l'output HTML
Eseguite ora una qualsiasi istruzione SELECT che vi dia qualche risultato
esempio:
SELECT * FROM MiaTabella LIMIT 10;
Il risultato a video non è il solito elenco di record e campi incolonnati, bensì il codice HTML di una tabella già formata, pronto per essere copiato e incollato.

Creare un log con PHP
Il trucco di oggi riguarda il PHP e vi insegnerà a creare un semplice Log delle visite. Infatti un semplice "logger" dei visitatori può aiutarvi a tenere traccia di chi ha appena visitato il vostro sito e la provenienza.
Il logger che andremo a creare sarà memorizzato in un normale file di testo: questo significa che non abbiamo bisogno di alcun database come mySQL. Il nostro script memorizzerà queste quattro informazioni di base:
1. Data e ora della visita.
2. L'indirizzo IP dell'utente.
3. L'indirizzo di provenienza (referer) dell'utente, se disponibile.
4. Che browser stava utilizzando.
Tutte e quattro queste informazioni sono ricavabili da funzioni native del PHP. Tutto ciò che dobbiamo fare è definire questi dati e poi mandarli nell'apposito file di log HTML. Per primo, avrete bisogno di creare un file log.html con permessi 777 (chmod 777 log.html). Useremo la funzione date() per impostare data e ora. Tutte le altre variabili sono predefinite in PHP. La seconda parte dello script aprirà il file log.html utilizzando fopen() e scriverà dentro tutti i dati utilizzando fputs().
Ecco il codice PHP, i commenti vi aiuteranno a capire meglio:
<?
$time = date("F jS Y, h:iA"); //usiamo la funzione date()
$ip = $REMOTE_ADDR;
//$remote_addr è una variabile del PHP per determinare l'indirizzo ip del
visitatore
$referer = $HTTP_REFERER;
//$http_referer è un variabile di PHP per conoscere l'indirizzo (url) di
provenienza del visitatore
$browser = $HTTP_USER_AGENT;
//$http_user_agent determina il tipo di browser
$fp = fopen("log.html", "a");
//usiamo la funzione fopen()
fputs($fp, "<b>Time:</b> $time<br><b>IP:</b> $ip<br><b>Referer:</b> $referer<br>
<b>Browser:</b> $browser<br><br>");
//usiamo la funzione puts()
fclose($fp);
//Ora chiudiamo la funzione
?>
E questo è tutto il codice che dobbiamo scrivere per creare un semplice "logger" dei visitatori. Potete mettere questo codice ovunque nella vostra pagina da tracciare, ed esso farà il resto. Ricordate di creare una file log.html vuoto, caricarlo sul server nella stessa directory dove si trova la pagina che conterrà il codice, e di dargli i permessi 777 (chmod 777 log.html). Bene, questo è tutto.
NB: - si ricorda che a partire dalla versione 4.1.0 del PHP le variabili di ambiente ($REMOTE_ADDR,$HTTP_REFERER,$HTTP_USER_AGENT,ecc.) potranno essere richiamate utilizzando gli array superglobal es.: $REMOTE_ADDR diventa $_SERVER['REMOTE_ADDR'] · il file HTML prodotto non è propriamente corretto, dato che non contiene i tag <HTML>, <BODY>, <HEAD> ecc..

Ebbene tutta la lezione è scaricabile gratuitamente cliccando qui (http://click.be3a.com/click_it.html?ADVD=602047.326453.4.0190020. oppure quì)

Caricare un file sul server con PHP
Questo tutorial vi insegnerà a costruire un semplice script per caricare un'immagine gif sul vostro server o spazio hosting.

Innanzitutto dobbiamo parlare delle restrizione che PHP a riguardo la possibilità di caricare attraverso script file sul server; tale restrizione limitano la grandezza massima del file a 2 MB (impostazione di default). Per verificare tale impostazione è sufficiente lanciare phpinfo() e poi controllare il valore massimo dell'upload consentito alla voce "upload_max_filesize".
Visto abbiamo sotto mano le impostazioni del PHP, vi consiglio di dare un'occhiata alla voce "upload_tmp_dir" ovvero la directory temporanea dove PHP caricherà il vostro file: per il momento vi basti verificare tele impostazione nel corso del tutorial capire il perchè.
Iniziamo con il Form di caricamento in puro HTML
<form name="form1" method="post" action="carica.php" enctype="multipart/form-data">
<input type="file" name="imagefile">
<input type="submit" name="Submit" value="carica">
File di elaborazione
Adesso è necessario scrivere lo script che elaborerà il form ovvero il file a cui il form punta ( action="carica.php" )
Innanzitutto voglio applicare una restrizione per consentire l'upload di file sono in formato gif.
if ($_FILES['imagefile']['type'] == "image/gif"){
copy ($_FILES['imagefile']['tmp_name'], "directory_di_destinazione/".$_FILES['imagefile']['name'])
or die ("Impossibile caricare il file sul server");
Nota: "directory_di_destinazione" deve essere rescrivibile dello script ovvero deve avere Chmod 777 (per quanto riguarda server Linux).
Se il file che tentiamo di caricare è in formato gif, visualizzazione sullo schermo il nome del file, 
la dimensione e la sua estensione (gif).
echo "Nome del file: ".$_FILES['imagefile']['name']."";
echo "Dimesione: ".$_FILES['imagefile']['size']."";
echo "Estensione: ".$_FILES['imagefile']['type']."";
echo "<br><b>Il file è stato caricato con successo sul server</b>"
Nel caso in cui qualcosa sia andata storto e quindi il file non sia stato caricato sul vostro spazio web
else {
echo "";
echo "<b> Upload non effettuato!</b>, estensione del file non consentita (".$_FILES['imagefile']['name'].")"; 
}
}
?>

Ultima modifica
Stampa la data e l'ora dell'ultima modifica del file. 
<?php
echo date( "F d Y h:i:s", getlastmod() );
?>

Evitare l'interpretazione del codice HTML
Ho fatto un test con il guestbook che ho creato l'altro giorno e ho scoperto che se nel testo del messaggio che posto inserisco codice html, questo mi viene interpretato dalla pagina! come di fa per disabilitare l'interpretazione?
$msg = stripslashes($msg);
$msg = htmlspecialchars($msg);
$msg = nl2br($msg);
prima dell'inserimento del database dove $msg è l'imput del messaggio, tt quello ke ci scrivi nel mey come < sarà riportato e non calcolato come programazione in + quando fai enter ti mette un <br>
http://it.php.net/manual/it/function.htmlspecialchars.php
$messaggio = stripslashes($messaggio);
$messaggio = strip_tags($messaggio);
$messaggio = htmlspecialchars($messaggio);
$messaggio = nl2br($messaggio); 
$nickname = $_POST["nickname"];
$messaggio = $_POST["messaggio"];
$conn = mysql_connect('localhost','davidez','miodb');
$sel_db = mysql_select_db('davidez',$conn);
if(($conn!=FALSE) && ($sel_db!= FALSE)){
$qr = mysql_query("INSERT INTO gb (nickname, messaggio) VALUES('$nickname', '$messaggio')");
if ($qr==FALSE) {
echo(mysql_error());
} else {
echo ('<div class="confirm"><b>Messaggio inserito con successo!</b><br>redirect in corso...</div>' . '<META HTTP-EQUIV="Refresh" CONTENT="2; URL=index.php">');
}
} else {
echo(mysql_error());
}

Un contatore di accessi in formato grafico!
Iniziamo a vedere "il contatore" vero e proprio, ovvero il file PHP che tiene il conto degli accessi alle tue pagine salvando i risultato su un semplice file di testo. Ecco il codice:
<?php
$file = $_SERVER['DOCUMENT_ROOT'] . 'contatore.txt';
$visite = file($file);
$visite[0]++;
$fp = fopen($file , "w");
fputs($fp , "$visite[0]");
fclose($fp);
?>
Inserite queste righe di codice PHP in ogni pagina (.php) che volete tracciare.
Non ritengo opportuno commentare il codice qui sopra dato che abbiamo più volte affrontato l'argomento in articoli precedenti.
Vediamo ora il "cuore" della nostra applicazione, ovvero la funzione che recupera il numero delle visite dal file "contatore.txt" e lo "traduce" in numeri.
Ecco il codice:
<?php
function view_tot_entries() {
$file = $_SERVER['DOCUMENT_ROOT'] . 'contatore.txt';
$fp = fopen($file, "r");
$tot = fgets($fp, 4096);
fclose($fp);
for ($i = 0; $i <= 10; $i++) {
$tot = str_replace($i, "<img src=\"/img/numeri/n_{$i}.gif\" border=\"0\" alt=\"$i\">", $tot);
}
return $tot;
}
?>

1) Innanzitutto abbiamo selezionato il file da aprire (in modalità di sola lettura) ed abbiamo recuperato il numero degli accessi tramite la variabile $tot.
2) Il ciclo "for" è la parte forte dello script: infatti abbiamo usato la funzione str_replace() per modificare il numero da testo a immagine sostituendo tutte le cifre (da 0 a 9) con il loro equivalente grafico.
Il codice che abbiamo visto sopra va salvato come "converti.php" e va incluso in tutte le pagine (.php) in cui volete visualizzare il contatore.
Per visualizzare il contatore grafico useremo poi questa stringa da inserire nel punto esatto della vostra pagina (.php) in cui volete appaia il contatore:
<?php
echo view_tot_entries();
?>
Vorrei sottolineare una cosa che potrebbe sembrare scontate ma a mio parere non lo è: createvi le immagini dei singoli numeri da 0 a 9 e salvateli in questa modalità: n_X.gif (dove "X" sta per il numero!).

Ricavare informazioni sugli utenti
Con PHP è piuttosto semplice ricavare informazioni sul nostro utente.
Più precisamente, vedremo in questo breve tutorial come ricavare:
- l'indirizzo IP
- Il browser utilizzato
- Il refer
Per conoscre l'indirizzo IP del nostro visitatore useremo semplicemente:
<?
echo $REMOTE_ADDR;
?>
Per conoscere i dati relativi al browser utilizzato:
<?
echo $HTTP_USER_AGENT;
?> 
Per conoscre il refer (ovvero da quale sito proviene il nostro utente) useremo:
<?
echo $HTTP_REFERER; 
?>

Lavorare con i file di testo
fopen()
Per aprire un file useremo la funzione "fopen()", la quale restituirà "true" in caso di esito positivo o "false" in caso di esito negativo.
Ecco come usare "fopen()".
$fp = fopen("data.txt", "r");
if(!$fp) die ("Errore nella operaione con il file");
Come vedete all'interno della funzione, oltre al percorso del file da aprire, abbiamo usato l'attributo "r" (che prende il nome di "mode"). Ma vremmo potuto usare anche diversi valori.
Ecco una tabella riassuntiva del significato di ciascuno:
r - Apertura del file per sola lettura;
r+ - Apertura del file per lettura e scrittura;
w - Apertura del file per sola scrittura; I contenuti del file esistente andranno persi, qualora il file non esiste PHP cercherà di crearlo;
w+ - Apertura del file per lettura e scrittura. I contenuti del file esistente andranno persi, qualora il file non esiste PHP cercherà di crearlo;
a - Apertura del file per sola aggiunta. I nuovi dati verranno aggiunti in coda ai dati già presenti, qualora il file non esiste PHP cercherà di crearlo;
a+ - Apertura del file per lettura e aggiunta. I nuovi dati verranno aggiunti in coda ai dati già presenti, qualora il file non esiste PHP cercherà di crearlo;
Dopo aver aperto il file possiamo lavorarci sopra. Le funzioni utili a questo punto saranno "fread()" e "fwrite()" che utilizzeremo, rispettivamente, per leggere e per scrivere sul file.
fread()
Questa funzione viene utilizzata per estrarre una stringa di caratteri da un file. Quindi (dopo aver aperto il file nel modo visto sopra) aggiungeremo qualcosa del genere:
$data = fread($fp, 10);
echo $data
Il numero utilizzato all'interno della funzione sta ad indicare il numero massimo di byte da leggere (nell'esempio abbiamo messo 10). Arrivato a quel numero PHP smetterà di leggere.
Con "echo" abbiamo poi chiesto al nostro script di stampare a video il contenuto ricavato dal file.
fwrite()
Ovviamente, prima di usare questa funzione dovremo aprire il file in modo adeguato, quindi non utilizzeremo "r" ma, ad esempio, "w" in modo da consentire la scrittura.
Ora useremo qualcosa del genere:
fwrite($fp, "ciao a tutti");
In questo modo scriveremo la stringa "ciao a tutti" all'interno del nostro file (la posizione in cui verrà inserita la stringa di testo all'interno del file dipende dal valore precisato per "mode" al momento dell'aperura del file)
fclose()
Una volta concluso il nostro lavoro sul file è buona norma chiedere a PHP di chiudere lo stesso. In questo modo:
fclose($fp)

Contiamo gli accessi alle nostre pagine web con l'aiuto di MySQL
Lo script che creeremo sfrutterà le potenzialità di MySQL e delle sessioni (le sessioni le abbiamo trattate in un precedente tutorial).
Iniziamo quindi a creare una pagina, chiamata "crea_tabella.php", che avrà il seguente codice:
<?
$host = "localhost";
$user = "root";
$pass = "";
$nome_db = "test";
$nome_tab = "sito";
@mysql_connect($host, $user, $pass);
@mysql_select_db($nome_db);
$query = "CREATE TABLE $nome_tb (
accessi int(10) unsigned NOT NULL default '0',
visite int(10) unsigned NOT NULL default '0'
id tinyint(3) unsigned NOT NULL auto_increment,
PRIMARY KEY (id)
)";
@mysql_query($query);
?>
Questa pagina serve a creare la tabella della quale ci serviremo tra un po'. Il suo codice si può commentare così:
$host = "localhost";
Questa variabile contiene il percorso dell'host dove si trova il database MySQL al quale ci colleghiamo. Se siamo il locale lasciamo la variabile così com'è, se siamo in remoto dovrebbe andare bene lo stesso; se non dovesse funzionare dovrete chiedere al vostro fornitore di servizi l'indirizzo del database MySQL
$user = "root";
Questa variabile contiene lo username che verrà usato per collegarsi a MySQL. Se siamo in locale va bene così com'è, se siamo in remoto bisogna chiedere al proprio fornitore di servizi quale username usare.
$pass = "";
Questa variabile contiene la password che verrà usata per autenticarsi a MySQL. Se siamo in locale la si può lasciare com'è (ovvero vuota), se siamo in remoto dovremo chiedere al nostro fornitore di servizi quale password usare.
$nome_db = "test";
Questa variabile contiene il nome del database al quale ci collegheremo. Se siamo in locale può rimanere così com'è, dato che il database test è creato automaticamente all'atto dell'installazione di MySQL. Se siamo in remoto dobbiamo cambiarla con il nome del database che ci è stato assegnato. Come fare a sapere quale database ci è stato assegnato ? Provate a indovinare... Lo chiediamo al nostro fornitore di servizi!
$nome_tab = "sito";
Questa variabile contiene il nome della tabella che andremo a creare. ATTENZIONE! Nello stesso database non possono esistere due o più tabelle con lo stesso nome, in altre parole i nomi delle tabelle devono essere UNIVOCI.
@mysql_connect($host, $user, $pass);
Mi collego al database utilizzando la funzione mysql_connect(), passandole tre parametri. La chiocciolina prima della funzione serve per non far comparire a video eventuali errori di connessione.
@mysql_select_db($nome_db);
Una volta collegato a MySQL, uso la funzione mysql_select_db() passandole un parametro per selezionare il mio database. Se in locale abbiamo la possibilità di creare più database, in realtà è difficile che in hosting ne abbiamo a disposizione più di uno, quindi in remoto questa riga potrebbe anche essere superflua, ma per sicurezza noi la scriviamo lo stesso...
$query = "CREATE TABLE $nome_tb (
accessi int(10) unsigned NOT NULL default '0',
visite int(10) unsigned NOT NULL default '0'
id tinyint(3) unsigned NOT NULL auto_increment,
PRIMARY KEY (id)
)";
Questa variabile contiene la struttura della nostra tabella. Senza addentrarmi troppo a spiegare le strutture delle tabelle in MySQL (non è questa la sede adatta), dico che la query crea una tabella di nome $nome_tb. Tale tabella è formata da tre campi; i primi due, accessi e visite, entrambe di tipo integer (ovvero numeri interi), unsigned (ovvero di soli valori positivi), NOT NULL (ovvero non vuoti) e che hanno 0 come valore predefinito, ovvero quando creiamo la tabella. Il terzo campo, id, è un numero integer positivo di massimo 3 caratteri, NOT NULL e auto_increment.
@mysql_query($query);
Tramite la funzione mysql_query() eseguo la query prima dichiarata, creando effettivamente la mia tabella.
Dobbiamo adesso creare un'altra pagina (che chiameremo "conta.php") con lo script adibito a contare gli accessi e le visite. Il codice è questo:
<?
$host = "localhost";
$user = "root";
$pass = "";
$nome_db = "test";
$nome_tab = "sito";
@mysql_connect($host, $user, $pass);
@mysql_select_db($nome_db);
$query = "SELECT * FROM $nome_tab";
$esegui_query = @mysql_query($query);
while ($ris = @mysql_fetch_array($esegui_query)) {
$accessi = $ris[0];
$visite = $ris[1];
$id = $ris[2];
}
session_start();
if (!$_SESSION['visite']) {
$_SESSION['visite'] = 1;
$visite++;
}
$accessi++;
$query = "UPDATE $nome_tab SET accessi = '$accessi', visite = '$visite' WHERE id = '$id';";
@mysql_query($query);
echo "Ci sono stati $accessi accessi e $visite visite a questa pagina...";
?>
Ovviamente non commento le prime otto righe, esattamente uguali a quelle già presenti in "crea_tabella.php", e che servono solo a definire le variabili che verranno usate per connettersi al database e la connessione al database stesso.
$query = "SELECT * FROM $nome_tab";
Con questa query selezioniamo tutti i dati presenti nella tabella $nome_tab. L'asterisco (*) serve appunto per selezionare il contenuto di tutti i campi.
$esegui_query = @mysql_query($query);
Eseguo la query prima descritta.
while ($ris = @mysql_fetch_array($esegui_query)) {
Questa riga crea un array di nome $ris, che ha come elementi i dati prelevati dal database: il primo elemento ($ris[0]) conterrà il numero degli accessi; il secondo elemento ($ris[1]) conterrà il numero delle visite; il terzo elemento ($ris[2]) conterrà l'id, ovvero 1.
$accessi = $ris[0];
$visite = $ris[1];
$id = $ris[2];
Con queste tre righe creo tre variabili, ognuna delle quali sta per uno degli elementi dell'array prima creato. In questo modo i dati saranno disponibili anche al di fuori del ciclo while.
session_start();
Avvio una sessione.
if (!$_SESSION['visite']) {
Se la variabile $_SESSION['visite'] non esiste... Il punto esclamativo (!) significa negazione.
$_SESSION['visite'] = 1;
...crea tale variabile e assegnale il valore 1...
$visite++;
...quindi incrementa il valore di $visite.
Queste ultime righe servono per contare le visite. Abbiamo detto che le visite sono univoche, e rappresentano il numero di persone che si sono collegate al server. Abbiamo quindi due casi: se il visitatore ha aperto per la prima volta la pagina, viene registrato in una variabile di sessione il valore 1, quindi viene incrementato il valore di $visite. Se il visitatore non ha già aperto la pagina altre volte nel corso della stessa connessione, il valore della variabile di sessione impedisce che il valore di $visite sia incrementato.
$accessi++;
Incremento il valore di $accessi. Questo valore si riferscie al numero delle volte che la pagina è richiesta, e quindi va incrementato sempre, senza ricorrere adl alcun controllo.
$query = "UPDATE $nome_tab SET accessi = '$accessi', visite = '$visite' WHERE id = '$id';";
Questa query serve per modificare il contenuto della tabella con i nuovi dati.
$esegui_query = @mysql_query($query);
Eseguo la query.
echo "Ci sono stati $accessi accessi e $visite visite...";
Stampo a video il numero di accessi e visite della pagina...

La funzione Date()
In questa pillola studieremo la funzione date() per poterla usare nei nostri script. Questa funzione consente di ottenere la data e l'ora impostate sul server sul quale girano i nostri script. Analizziamo dunque i suoi parametri principale:
a = fa comparire accanto all'ora la dicitura "am" se l'ora è compresa tra mezzanotte e mezzogiorno, fa invece comparire la dicitura "pm" se l'ora è compresa tra mezzogiorno e mezzanotte. Per esempio 9:25 am per le nove e venticinque del mattino, 9:25 pm per le ventuno e venticinque di sera.
A = ha la stessa funzione del parametro precedente, ma fa comparire le lettere in maiuscolo anzichè in minuscolo. Per esempio 9:25 AM per le nove e venticinque del mattino, 9:25 PM per le ventuno e venticinque di sera.
D = indica le prime tre lettere del nome inglese del giorno della settimana. Per esempio Sun, Mon, Fri, Sat.
l = indica il nome inglese del giorno della settimana. Per esempio Sunday, Monday, Friday, Saturday.
g = indica l'ora, in formato 12 ore (da usare magari con i parametri a e A), senza l'eventuale zero iniziale. Quindi assumerà un valore compreso tra 1 e 12.
G = indica l'ora, in formato 24 ore, senza l'eventuale zero iniziale. Quindi assumerà un valore compreso tra 1 e 24.
h = indica l'ora, in formato 12 ore, con l'eventuale zero iniziale. Quindi assumerà un valore compreso tra 01 e 12.
H = indica l'ora, in formato 24 ore, con l'eventuale zero iniziale. Quindi assumerà un valore compreso tra 01 e 24.
i = indica i minuti, con l'eventuale zero iniziale. Quindi assumerà un valore compreso tra 00 e 59.
I = restituisce 1 se c'è l'ora legale, 0 se c'è quella solare.
j = indica il giorno del mese, senza l'eventuale zero iniziale. Quindi assumerà un valore compreso tra 1 e 31.
d = indica il giorno del mese, con l'eventuale zero iniziale. Quindi assumerà un valore compreso tra 01 e 31.
L = restituisce 1 se l'anno è bisestile, 0 se non lo è.
m = indica il numero del mese con l'eventuale zero iniziale. Quindi assumerà un valore compreso tra 01 e 12.
n = indica il numero del mese senza l'eventuale zero iniziale. Quindi assumerà un valore compreso tra 1 e 12.
M = indica le prime tre lettere del nome inglese del mese in cui ci troviamo. Per esempio Jan, Mar, Aug, Nov.
F = indica il nome inglese per intero del mese in cui ci troviamo. Per esempio January, March, August, November.
O = indica la differenza dal meridiano di Greenwich. Per esempio +0200 per indicare due ore di ritardo, o -0400 per indicare quattro ore di anticipo.
Z = indica la differenza dal meridiano di Greenwich in secondi. Per esmpio +43200 o - 43200.
r = restituisce la data formattata secondo la norma RFC 822. Per esempio Thu, 21 Dec 2000 16:01:07 +0200. (Disponibile a partire da PHP 4.0.4)
s = indica i secondi, con l'eventuale zero iniziale. Quindi assumerà un valore compreso tra 00 e 59.
S = indica il suffisso inglese per i numeri cardinali. Per esempio st, nd, rd, th.
t = indica il numero di giorni di un dato mese senza lo zero iniziale. Quindi assumerà un valore compreso tra 1 e 31.
U = indica il numero di secondi trascorsi dall'Unix Epoch, ovvero il 1 Gennaio 1970.
w = indica il numero del giorno della settimana senza lo zero iniziale. Bisogna tenere conto che la settimana inglese inizia la Domenica, e che in PHP gli elementi si contano a partire da 0. Quindi assumerà 0 per Domenica, 1 per Lunedì e così via fino a 6 per Sabato.
W = indica il numero della settimana in cui ci troviamo. Per questo parametro le settimane iniziano il Lunedì, e non la Domenica.
Y = indica l'anno utilizzando quattro cifre. Per esempio 2003.
y = indica l'anno utilizzando le ultime due cifre. Per esempio 03.
z = indica il numero di giorno dell'anno senza l'eventuale zero iniziale. Quindi assumerà un valore compreso tra 1 e 366
Ora che conosciamo i parametri principali da usare con la funzione date(), passiamo alla loro applicazione pratica.
Immaginiamo di voler ottenere una data del tipo 22/04/85 (la mia data di nascita ;-)), dovremmo scrivere una riga come questa:
date("d/m/y");
Per ottenere una data del tipo 4/6/1998 dovremmo scrivere una riga come questa:
date("j-n-Y");
Per ottenere un'orario del tipo 15:54:06 dovremmo scrivere una riga come questa:
date("H:i:s");
Per ottenere un'orario del tipo 9.54 pm dovremmo scrivere una riga come questa.
date("g.i a");
Passiamo adesso a vedere come ottenere delle date un po' più comlesse. Nulla infatti ci vieta di ottenere una data del tipo 06/4/2000 9:54.65 PM. La riga da scrivere sarà come questa.
date("d/n/Y g:i.s A");
Vediamo adesso un'ultimo esempio, un po' più complicato degli altri, che però non deve spaventare. Supponiamo di voler ottenere una data del tipo Lunedì 6 Ottobre 2002, sono le 19, 24 minuti e 36 secondi. Le righe di codice sarebbero queste:
$giorni = array("Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato");
$mesi = array("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre","Novembre", "Dicembre");
$numero_giorno_settimana = date("w");
$nome_giorno = $giorni[$numero_giorno_settimana];
$numero_giorno_mese = date("j");
$numero_mese= date("n");
$numero_mese--;
$nome_mese = $mesi[$numero_mese];
$numero_anno = date("Y");
$ore = date("G");
$minuti = date("i");
$secondi = date("s");
echo "Oggi è $nome_giorno $numero_giorno_mese $nome_mese $numero_anno, sono le $ore, $minuti minuti e $secondi secondi";
Ma analizziamole meglio:
$giorni = array("Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato");
Creo un array, lo chiamo $giorni e scrivo sette valori, corrispondenti ai nomi italiani della settimana, partendo dalla domenica. Parto dalla Domenica e non dal Lunedì perchè la settimana inglese parte appunto di Domenica e non di Lunedì (scusate il gioco di parole ma meglio di coì non ci riuscivo a spiegarlo). Questo array ci sarà utile utilizando il parametro w, vedete la spiegazione sopra.
$mesi = array("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre","Novembre", "Dicembre");
Creo un array e lo chiamo $mesi, inserisco dodici valori, corrispondenti ai nomi italiani dei mesi. Questo array ci sarà d'aiuto quando useremo il parametro n.
$numero_giorno_settimana = date("w");
La variabile $numero_giorno_settimana contiene adesso un valore compreso tra 0 e 6.
$nome_giorno = $giorni[$numero_giorno_settimana];
Do alla variabile $nome_giorno il valore di un nome del giorno della settimana contenuto nell'array $giorni. Il nome del giorno cambia il funzione del valore di $numero_giorno_settimana.
$numero_giorno_mese = date("j");
Assegno alla variabile $numero_giorno_mese un valore compreso tra 1 e 31.
$numero_mese= date("n");
Assegno alla variabile $numero_mese un valore compreso tra 1 e 12;
$numero_mese--;
Decremento di un'unità il valore di $numero_mese. La variabile avrà quindi un valore compreso tra 0 e 11. Questo perchè negli array il primo elemento è l'elemento 0, il secondo è l'elemento 1 e così via. Ne abbiamo già parlato spiegando il parametro w.
$nome_mese = $mesi[$numero_mese];
Assegno alla variabile $nome_mese il valore di un nome di mese contenuto nell'array $mesi.
Prendiamo un attimo in esame le ultime tre righe e cerchiamo di capirle meglio. Ammettiamo che $numero_mese= date("n"); mi restituisca 9, ovvero settembre. Se utilizzassi direttamente $nome_mese = $mesi[$numero_mese]; senza prima decrementare il valore di $numero_mese, $nome_mese assumerebbe il valore del nono elemento dell'array, ovvero Ottobre e non Settembre. Per questo è necessario decrementare prima il valore di $numero_mese.
$numero_anno = date("Y");
Assegno alla variabile $numero_anno il valore dell'anno in cui ci troviamo utilizzando 4 cifre.
$ore = date("G");
Assegno alla variabile $ore il valore dell'ora in cui siamo.
$minuti = date("i");
Assegno alla variabile $minuti il valore dei minuti in cui siamo.
$secondi = date("s");
Assegno alla variabile $secondi il valore dei secondi in cui siamo.
echo "Oggi è $nome_giorno $numero_giorno_mese $nome_mese $numero_anno, sono le $ore, $minuti minuti e $secondi secondi";
Stampo a video la mia stringa, ovvero Lunedì 6 Ottobre 2002, sono le 19, 24 minuti e 36 secondi. 

Tempo di caricamento per una pagina Php
<?
function tempo() {
$tempo = microtime();
$tempo = explode(" ", $tempo);
$tempo[0] = floatval($tempo[0]);
$tempo[1] = floatval($tempo[1]);
return ($tempo[0] + $tempo[1]);
}
$tempo_iniziale = tempo();

for ($a = 0; $a < 1000; $a++) {
}
$tempo_finale = tempo();
$tempo_trascorso = $tempo_finale - $tempo_iniziale;
$tempo_trascorso = substr($tempo_trascorso, 0, 6);
echo $tempo_trascorso;
?>

Ma vediamo di analizzarlo nei dettagli...
function tempo() {
creo una funzione, la chiamo tempo e non le passo nessun parametro
$tempo = microtime();
La funzione microtime restituisce una stringa di tipo "Millisecondi Secondi", il tutto misurato a partire all'Unix Epoch (1 Gennaio 1970)
$tempo = explode(" ", $tempo);
Spezzo la variabile tempo e creo un array: il primo elemento ($tempo[0]) sono i millisecondi, il secondo elemento ($tempo[1]) sono i secondi.
$tempo[0] = floatval($tempo[0]);
$tempo[1] = floatval($tempo[1]);
Abbiamo detto che la funzione microtime() restituisce una stringa, e siccome sue stringhe non si possono sommare (al massimo si possono "unire" con "."), dobbiamo convertire i due valori in numeri di tipo float, ovvero a virgola mobile. La funzione floatval() serve appunto a questo.
return ($tempo[0] + $tempo[1]);
Dico alla funzione di avere come risultato la somma dei due valori, quindi il risultato sarà un numero float del tipo 1063897097.2178
$tempo_iniziale = tempo();
Creo una variabile e le assegno il valore della funzione tempo(), quindi $tempo_iniziale sarà qualcosa come 1063897097.2178
for ($a = 0; $a < 1000; $a++) {}
Questo codice è assolutamente inutile, e serve solo a fare "perdere tempo" allo script. Al posto di questa riga dovrete inserire il corpo della vostra pagina.
$tempo_finale = tempo();
Creo una variabile e le assegno il valore della funzione tempo(), quindi $tempo_finale sarà qualcosa come 1063897097.2202, in quanto per contare da 1 a 1000 (le righe di script "inutili" servono a quello) il server avrà impiegato un po' di tempo.
$tempo_trascorso = $tempo_finale - $tempo_iniziale;
Creo un'altra variabile e le assegno il valore della differenza tra il tempo iniziale e quello finale. La variabile avrà quindi un valore tipo 0.0024149251937866
$tempo_trascorso = substr($tempo_trascorso, 0, 6);
siccome la variabile $tempo_trascorso è troppo lunga, tramite la funzione substr() considero solo i primi 6 caratteri (il terzo parametro) a partire dal primo (il secondo parametro, 0)
echo $tempo_trascorso;
Stampo a video il tempo trascorso

Operazioni matematiche con il PHP
Nello scrivere programmi in PHP può risultare utile eseguire operazioni matematiche di diverso tipo.
In questo tutorial cercheremo di spiegare semplicemente come effettuare addizioni, sottrazioni, divisioni e moltiplicazioni.
Iniziamo con l'esporre la sintassi degli operatori:
- somma (+)
- sottrazione (-)
- moltipicazione (*)
- divisione (/)
Poniamo, ad es., di voler sommare due numeri: 7 e 3.
Ecco cosa dovremmo fare:
<?PHP
$somma = (7 + 3);
echo $somma;
?>
Per offrire una panoramica più ampia ritengo utile postare qualche esempio esclusivamente teorico che (mi auguro) vi offirà qualche utile spunto.
Creiamo quindi un piccolo script definendo al suo inizio il valore numerico di due variabili che ci serviranno per eseguire le diverse operazioni: "$Numero_1" e poniamo che abbia come valore 8 e "$Numero_2" con valore 2 (Ovviamente potete assegnare a queste variabili i valori che volete...).
Ecco finalmente il nostro script "matematico":
<?PHP
$Numero_1=8;
$Numero_2=2;
$Somma = ($Numero_1+$Numero_2);
echo "$Numero_1 + $Numero_2 = $Somma <br>";
$Sottrazione = ($Numero_1-$Numero_2);
echo "$Numero_1 - $Numero_2 = $Sottrazione <br>";
$Moltiplicazione = ($Numero_1*$Numero_2);
echo "$Numero_1 x $Numero_2 = $Moltiplicazione <br>";
$Divisione = ($Numero_1/$Numero_2);
echo "$Numero_1 : $Numero_2 = $Divisione <br>";
?>
Poniamo invece di voler effettuare una complessa equazione...
<?PHP
$Numero_1=8;
$Numero_2=2;
$Equazione = ((($Numero_1+$Numero_2)/$Numero_2)*$Numero_1);
echo "((($Numero_1 + $Numero_2) : $Numero_2) x $Numero_1) = $Equazione";
?>

Estrarre dati da un db MySql
In questo semplice tutorial spiegheremo (in poche parole) come realizzare un piccolo script Php in grado di connettersi ad un db MySql e recuperarne i dati.
Ovviamente è necessario avere installato sul proprio server (olre a PHP ovviamente...) il supporto di MySql.
Per gestire i database MySql è consigliabile avere installato sul proprio server PhpMyAdmin (Ndr: PhpMyAdmin è un'applicazione Php che aiuta a gestire con estrema facilità i nostri db MySql).
Quindi: entriamo in PhpMyAdmin e creiamo una nuova tabella nel nostro DB (che chiameremo "amici") composta da 3 campi: nome, email e sex. 
Ai fini dell'esempio, utlizzeremo la tabella "amici" come fosse una semplice agenda con nome ed email di tutti i nostri amici. Poniamo inoltre che il campo "sex" possa avere solo 2 valori: "uomo" o "donna".
Ecco la query:
mysql> CREATE TABLE amici (
> id INT NOT NULL AUTO_INCREMENT,
> nome VARCHAR (50),
> email VARCHAR (50),
> sex VARCHAR (5),
> PRIMARY KEY (id)); 
A questo punto la nostra nuova tabella "amici" è pronta per essere utilizzata...
Vediamo adesso com'è possibile recuperarne i dati con Php... 
<html>
<head>
<title>Recuperare i dati da un DB MySql</title>
</head>
<body>

<?
/* dichiariamo alcune importanti variabili per collegarci al database */
$DBhost = "Hostname o IP del tuo database";
$DBuser = "il tuo username";
$DBpass = "la tua password";
$DBName = "il nome del database";
/* specifichiamo il nome della nostra tabella */
$table = "amici";
/* Connettiamoci al database */
mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
@mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName"); 
/* impostiamo la query e cerchiamo solo le amiche donne...*/
$sqlquery = "SELECT * FROM $table WHERE sex = 'donna'";
$result = mysql_query($sqlquery);
$number = mysql_num_rows($result);
$i = 0;
if ($number < 1) {
print "<center><p>La ricerca non ha prodotto nessun risultato</p></center>";
}
else {
while ($number > $i) {
$thename = mysql_result($result,$i,"nome");
$theemail = mysql_result($result,$i,"email");
print "<p><b>Nome:</b> $thename<br><b>E-Mail:</b>
$theemail</p>";
$i++;
}
}
?>
</body>
</html>
Salviamo tutto il codice qui sopra in una pagina con estensione ".PHP" e godiamoci il risultato... 
Attenzione: il tutto viene molto meglio se si ha la premura di inserire un po' di dati nel DB, in caso contrario verrà visualizzato solamente un messaggio che ci avvisa che la ricerca non ha prodotto risultati... 

Realizziamo un semplice gioco a quiz
Lo scopo di questo tutorial è quello di introdurre alle capacità di PHP di interagire con l'utente attraverso i form.
Nello specifico impareremo a costruire un piccolo quiz on-line: si tratterà pertanto di porre una domanda al nostro utente e di verificarne la risposta in modo automatico.
Ovviamente si tratta solo di un esempio in grado di far comprendere in che modo il linguaggio riellabora e risponde alle informazioni inserite dagli utenti.
Il nostro esempio si compone di 2 diverse parti: una pagina HTML contenente il form con la domanda ed una pagina PHP che riceve i dati dal form, li interpreta e da una risposta.
Questo il codice della pagina Html:
<html>
<head></head>
<body>
<form method="get" action="quiz.php">
In quale squadra di calcio italiana ha giocato Maradona?<br>
<br>
<input name="risposta" type="radio" value="Juve"> Juve<br>
<input name="risposta" type="radio" value="Milan"> Milan<br>
<input name="risposta" type="radio" value="Napoli"> Napoli<br>
<br>
<input type="submit" value="INVIA RISPOSTA">
</form>
</body>
</html>
In questa sede non è certo il caso di dilungarsi sul funzionamento della pagina in Html e dei form (per i quali rimandiamo alla lettura di un comune manuale di Html).
Salviamo questa pagina come "domanda.html" e passiamo all'applicazione in Php. 
In sostanza dovremo impostare 2 diverse azioni che si realizzeranno l'una in caso di risposta esatta e l'altra nel caso contrario.
Ecco il codice:
<html>
<head></head>
<body>
<?php
if ($_GET['risposta'] == "Napoli") echo "Risposta esatta!";
if ($_GET['risposta'] != "Napoli") echo "Risposta sbagliata! Maradona giocò nel Napoli";
?>
</body>
</html>
Salviamo questo codice in un file chiamato "quiz.php".
Come avrete notato per recuperare i dati dal form abbiamo introdotto una variabile $_GET['risposta'] ed abbiamo usato la condizione "if" associandola nel primo caso all'operatore di equivalenza (==) e nell'altro all'operatore di diseguaglianza (!=).
Ora non ci resta che caricare entrambi i file sul nostro server, aprire il file "domanda.html" con il nostro browser, provare a rispondere al quiz e vedere cosa succede. 

Spedire email con il Php
Inviare e-mail con PHP è un'operazione abbastanza semplice: l'unico comando che ci servrà in questo contesto è la funzione "mail()".
La nostra funzione Mail() una volta richiamata all'interno della nostra applicazione "contatterà" il sistema postale del nostro server (sendmail o server SMTP). Nel caso in cui il nostro server non ne sia attrezzato la nostra operazione non potrà riuscire.
Questa la sintssi di Mail():
mail(destinatario, oggetto, messaggio, headers)
Ecco un piccolo esempio di codice PHP per l'invio di e-mail:
<?PHP
#Specifica la tua mai e quella del destinatario
$mail_mittente = "mittente@sito.com";
$mail_destinatario = "destinatario@sito.com";
#specifica il subject ed il body della mail
$mail_oggetto = "Messaggio di prova";
$mail_corpo = "Questo è un messaggio di prova per testare la mia applicazione";
if (mail($mail_destinatario, $mail_oggetto, $mail_corpo, "From: $mail_mittente"))
echo "Messaggio inviato con successo a $mail_destinatario";
else
echo "Errore. Nessun messaggio inviato.";
?>
Ovviamente è possibile personalizzare il codice qui sopra nel modo che si ritiene più opportuno.
Con qualche piccolo accorgimento e con l'aiuto dei form potrete creare facilmente applicazioni molto interessanti come, ad es., un applicazione per raccogliere i suggerimenti degli utenti oppure per inviare cartoline virtuali.

La prima pagina in PHP. Il comando print ed i commenti.
Se è la prima volta che avete a che fare con PHP questo piccolo tutorial potrà esservi utile, in quanto vin introdurrà alle piu' semplici funzionalita' del PHP, ovvero: la stampa di un testo e la possibilita' di commentare il codice. 
Qui sotto il codice da inserire nella nostra nuova pagina "prova.php" (per scriverla possiamo usare anche un semplice editor come il notepad di Windows e poi salvare come file .php)
Ecco il codice:
<?PHP
/* 
************************** 
* Il mio primo programma * 
************************** 
*/ 

// <--- Indica un commento su una linea 
/* 
Indicano un commento multi-linea 
*/ 

// Stampo una stringa a video 
print "Hello Baby!"; 
?> 
Lo scopo dell'esempio è di mostrare il formato speciale dei tag di PHP. In questo esempio abbiamo usato <?PHP per indicare l'inizio e ?> per indicare la fine del codice Php. All'esterno dei due tag può essere tranquillamente inserito del normale codice Html.
Il risultato? Proviamo a caricare la pagina "prova.php" e staimo a vedere... Se tutto funziona correttamente (e se PHP è installato sulla vostra macchina) il risultato a video sarà: Hello Baby! 

Un po' di sintassi...

Simbolo Significato
/*
*/
Segna più righe come commenti
// Indica un commendo su una riga. E' uguale a #
# Segna una riga come commento
\n L'equivalente di un invio - nuova riga
\r Nuova riga
==  (due simboli dell'uguale) Uguale
===  (tre simboli dell'uguale) Identico (uguale e dello stesso tipo - solo PHP4)
<= Non maggiore
>= Non minore
!= Non uguale (diverso da)
!== Non identico (diverso ma dello stesso tipo - solo PHP4)
&& AND
|| (due pipe - sbarrette verticali) OR
! (punto esclamativo) NOT
. (punto) Operatore di concatenazione
strlen ($variabile) Conta il numero di caratteri in una riga
Es. $title = "TITOLO";
$size = strlen($title);
if ($size <= 60) {          //controllo del numero di caratteri
echo "la lunghezza del titolo è $size. OK";
}
else {
echo "la lunghezza del titolo è $size. NON VA BENE!";
}