Pagina 1 di 9 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 84
  1. #1

    [Pillola] Pagine d'errore in PHP

    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
    Anomalia grafica: una perdita di tempo

  2. #2
    Utente bannato
    Registrato dal
    Aug 2001
    Messaggi
    696
    Aggiunta alle pillole!
    :metallica

    Spero di avere il tempo di leggerla presto.
    Ciao

  3. #3
    Originariamente inviato da bubu sette sette
    Aggiunta alle pillole!
    :metallica
    Grazie
    Spero di avere il tempo di leggerla presto.
    Ciao
    Sembra lunga, me e' piu' semplice di quanto non sembri.

    Dario
    Anomalia grafica: una perdita di tempo

  4. #4
    Utente bannato
    Registrato dal
    Aug 2001
    Messaggi
    696
    [supersaibal]Originariamente inviato da dariottolo
    Sembra lunga, me e' piu' semplice di quanto non sembri.
    Dario [/supersaibal]
    Una conferma o una ripassata fa sempre comodo.

  5. #5
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    :metallica

    php.net con un sistema simile ha implementato le funzionalità di ricerca nel manuale. www.php.net/ + il nome della funzione ricerca la pagina del manuale in cui si parla di quella funzione
    "Nei prossimi tre anni col mio governo vogliamo vincere anche il cancro, che colpisce ogni anno 250.000 italiani e riguarda quasi due milioni di nostri concittadini"

  6. #6
    Utente di HTML.it L'avatar di Gren
    Registrato dal
    Jun 2001
    Messaggi
    11
    Bella pillolina, complimenti.

    :bubu:

  7. #7

    xche mi da questo errore????

    Not Found
    The requested URL /tester.html was not found on this server.

    Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request

  8. #8
    scusate risolto da solo

    era o slash prima del nome della pagina 404.php
    (che non avevo messo)


    Grazie x la pillola :sgrat:

  9. #9
    Complimenti Dariottolo
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  10. #10
    [supersaibal]Originariamente inviato da Gren
    Bella pillolina, complimenti.

    :bubu: [/supersaibal]
    [supersaibal]Originariamente inviato da gm
    Complimenti Dariottolo [/supersaibal]
    Grazie a voi

    Mi fa piacere che vi sia piaciuta!!!

    Alla prossima.

    Dario
    Anomalia grafica: una perdita di tempo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.