Spero di fare cosa gradita a qualcuno. La versione on-line la trovate qui. Piu' tardi spero di riuscire a caricare i file d'esempio...
Intercetta e ricevi una notifica degli errori del server.
una soluzione semplice con PHP
Introduzione
Tramite questa guida sarà possibile creare delle pagine di errore personalizzate (ad esempio la famosa "404: Page not Found") e fare in modo di ricevere una mail quando una di queste pagine viene mostrata nel vostro sito. Sebbene il file .htaccess venga usato solitamente per ragioni di sicurezza, può tornare utile per altri scopi, tra cui la gestione delle pagine di errore. Inoltre, sebbene si possano modificare le pagine d'errore standard, non verrai mai a conoscenza di cosa ha prodotto l'errore e, quindi, non potrai porvi rimedio Tramite il file .htaccess, riceverai un avviso non appena l'errore viene generato. Non solo, saprai anche cosa ha fatto il visitatore per causare l'errore e quindi, ad esempio, correggere eventuali link non corretti. Qui ci limitiamo alla pagina 404. Una volta però compreso il meccanismo, basta replicarlo alle pagine 401, 403 e 500.
Requisiti
- Apache come webserver
- la possibilità di personalizzare le pagine di errore
Creazione del file .htaccess
Con un editor di test, tipo notepad, crea un nuovo file e salvalo come ".htaccess". Le virgolette sono importanti, altrimenti verrà aggiunta l'estensione .txt. Se non dovessi riuscirci, non preoccuparti. Salva pure il file come "htaccess.txt"; sarà possibile modificare l'estensione una volta caricato sul server.
All'interno del file .htaccess viene usata una direttiva ErrorDocument. Questa ha lo stesso formato per ogni tipo di errore e dice a PHP quale pagina mostrare quando si verifica un errore. La sintassi è la seguente:
codice:
ErrorDocument numeroerrore /un_file_qualsiasi.html
ErrorDocument non varia e, naturalmente, numeroerrore viene sostituito dal numero dell'errore, ad esempio 404, 403, etc (gli errori più comuni vengono elencati al termine della guida). un_file_qualsiasi.html è il file che verrà mostrato al visitatore al verificarsi dell'errore. Questo file può avere una qualsiasi estensione comprensibile dal browser, come ASP, HTML o PHP (che useremo in questo tutorial).
Assicurati di avere il file .htaccess aperto, e digita la seguente riga:
codice:
ErrorDocument 404 /404.php
Così facendo, quando si verifica un errore 404 (page not found/pagina non trovata, il file .htaccess farà in modo che venga visualizzata la pagina 404.php, al posto della pessima pagina di Apache.
Creazione del file di configurazione
Prima di creare la pagina di errore, è necessario specificare alcune variabili che saranno usate in tutte le pagine di errore. Un file di configurazione conterrà le variabili e sarà usato per tutti i tipi di errore. Per esempio, se dovessi cambiare indirizzo e-mail o vuoi che gli errori vengano inviati ad un indirizzo diverso, basterà modificare il file di configurazione, invece di editare tutte le singole pagine di errore.
Con il tuo editor preferito, crea un nuovo file chiamato "config.php". Per prima cosa dobbiamo inserire l'indirizzo a cui inviare la notifica quando l'errore si verifica. Digita il testo seguente:
codice:
<?php
// chi riceve la mail
$mailto = "webmaster@tuodominio.it";
?>
Ora dobbiamo specificare l'indirizzo del tuo sito. Questo viene usato in tutte le pagine di errore, per consentire al visitatore di tornare all'homepage. Se vuoi che vada ad una pagina diversa (la sitemap, piuttosto che una con un motore di ricerca interno), puoi modificare l'URL. Aggiungi la riga seguente sotto la riga $mailto, che avevi appena aggiunto:
codice:
// URL che il visitatore clicca per lasciare la pagina di errore
$url = "http://www.tuodominio.it/";
Dobbiamo anche specificare da chi proviene la mail, altrimenti verrà inviata in bianco. Questo non ha particolare importanza, dato che non farai mai un reply. Per questo, semplicemente, scrivi qualcosa tipo:
codice:
// da chi proviene la mail
$from = "attenzione@tuodominio.it";
Alla fine, il codice dovrebbe essere più o meno così:
codice:
<?php
// chi riceve la mail
$mailto = "webmaster@tuodominio.it";
// URL che il visitatore clicca per lasciare la pagina di errore
$url = "http://www.tuodominio.it/";
// da chi proviene la mail
$from = "attenzione@tuodominio.it";
?>
Salva il file e chiudilo. Adesso dobbiamo crreare la pagina di errore vera e propria.
Creazione della pagina di errore in PHP
Semore usando il tuo editor preferito, crea un nuovo file e salvalo come 404.php. Questa sarà la pagina che verrà mostrata dal file .htaccess al verificarsi dell'errore 404.
Prima di tutto, dobbiamo includere il file di configurazione appena creato, per cui aggiungi il seguente testo:
codice:
<?php
//includere il file di configurazione...
include "config.php";
?>
Sarebbe carino sapere cosa cavolo ha digitato il visitatore per causare l'errore (ovviamente è colpa sua, i webmaster non sbagliano mai e quindi usiamo alcune variabili d'ambiente per ottenere questa informazione. $HTTP_HOST otterrà il nome dell'host (ad esempio: www.tuodominio.it) e $REQUEST_URI che ottiene tutto quello che c'è dopo l'host nell'URL (ad esempio:/un_folder/pagina_inesistente.html).
Per aggiungerli, dobbiamo usarli come una stringa, a cui antecediamo "http://" per creare il link completo. Aggiungi il seguente codice sotto quanto già scritto:
codice:
// per ottenere l'url che ha generato l'errore
$where = "http://$HTTP_HOST$REQUEST_URI";
Adesso bisogna creare il codice che invierà la mail al verificarsi dell'errore. Aggiungi il seguente codice sotto quanto appena scirtto:
codice:
//prepara il messaggio
$to= $mailto; //$mailto è definito nel file di configurazione config.php
$subject= "Errore 404";
$mailheaders= "Wrom: GDADRZFSQHYUCDDJBLVLMHAALPTCXLYRWTQTIPW
$body .= "Un errore 404 Error si è verificato nel tuo sito: $url\n\n\n";
$body .= "La pagina richiesta era: $where\n\n";
// ora invia la mail
mail($to, $subject, $body, $mailheaders);
Questo esaurisce il codice PHP. La tua pagina 404.php dovrebbe assomigliare a questa:
codice:
<?php
//includere il file di configurazione...
include "config.php";
// per ottenere l'url che ha generato l'errore
$where = "http://$HTTP_HOST$REQUEST_URI";
//prepara il messaggio
$to= $mailto; //$mailto è definito nel file di configurazione config.php
$subject= "Errore 404";
$mailheaders= "Wrom: IGYOKSTTZRCLBDXRQBGJSNBOHMKHJYFMYXOEAIJ
$body .= "Un errore 404 Error si è verificato nel tuo sito: $url\n\n\n";
$body .= "La pagina richiesta era: $where\n\n";
// ora invia la mail
mail($to, $subject, $body, $mailheaders);
?>
Adesso bisogna aggiungere l'output in HTML, che verrà mostrato al visitatore e lo informerà dell'errore. Aggiungi il seguente codice sotto il blocco del codice PHP nel file 404.php:
codice:
<html>
<head>
<title>ERRORE 404 - Pagina inesistente</title>
</head>
<body>
<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>
</p>
<h2><font color="#990000">Errore 404</font> Pagina inesistente</h2>
Spiacente, la pagina che hai richiesto non esiste, o è stata rimossa. </p>
Usa il link sottostante per tornare all'homepage
">Clicca qui per tornare all'homepage</p>
</td>
</tr>
</table>
</body>
</html>
Avrai notato che l'URL specificata nel file config.php viene usata nel codice HTML. Il codice <? Echo "$URL"; ?> non fa altro che prendere il valore dal file di configurazione e trasformarlo in link. Ovviamente questa pagina è molto semplice, ma nessuno ti vieta di personalizzarla come meglio credi, in modo da uniformarla alle altre pagine del sito.
Salva il file 404.php file. Il prossimo passo sarà caricare i file appena creati.
Caricare i file sul server
Con un client FTP, connettiti al tuo sito e portati nella cartella dove vuoi usare i file. Ti suggerisco di caricare tutto nella root. Carica i file config.php, 404.php e .htaccess. Assicurati che il file .htaccess venga trasferito in modalità ASCII.
Se in precedenza non fossi stato in grado di salvare il file come .htaccess e hai dovuto salvarlo come htaccess.txt, una volta caricato sul server, potrai rinominarlo.
Adesso puoi testare il codice. Digita l'indirizzo del tuo sito, ed aggiungi il percorso per un file che non esiste. Dovresti visualizzare la pagina di errore e ricevere la mail che ti informa dell'errore.
Conclusioni
Questo è sicuramente un ottimo modo per avere un sito sempre aggiornato e funzionante, grazie alla notifica istantanea degli errori. Naturalmente ci sono altre pagine che puoi creare per tutta una serie di errori. I più comuni sono:
401 - Authorization Required (Autorizzazione Necessaria)
400 - Bad request (Richiesta errata)
403 - Forbidden (Proibito)
500 - Internal Server Error (Errore interno del server)
404 - Wrong page
Potresti anche includere altre variabili nella mail, come l'ora in cui si è verificato l'errore e/o chi stava visitando il sito (tramite l'indirizzo ip). Per una lista di variabili, visita il sito della NCSA.
Per qualsiasi bug, inesattezza, correzione, fatemi sapere.
Dario