php - includere una 404 personalizzata

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

php - includere una 404 personalizzata

Messaggio da danix »

Ciao a tutti...
mi sapete consigliare il metodo migliore per includere una pagina 404 personalizzata?? dite di creare una paginetta html o è meglio se la includo tramite php??

vorrei capire pro e contro di entrambe le soluzioni...


Grazie mille per l'aiuto... :)
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
cymon
Linux 2.x
Linux 2.x
Messaggi: 430
Iscritto il: ven 5 gen 2007, 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: php - includere una 404 personalizzata

Messaggio da cymon »

danix85 ha scritto:Ciao a tutti...
mi sapete consigliare il metodo migliore per includere una pagina 404 personalizzata?? dite di creare una paginetta html o è meglio se la includo tramite php??

vorrei capire pro e contro di entrambe le soluzioni...


Grazie mille per l'aiuto... :)
Non capisco il tema... la 404 si dovrebbe inserire come redirect di apache tipo come c'è scritto qui. A questo punto è una pagina come tutte le altre, puoi crearla dinamica così che riporti informazioni sulla provenienza e instradi meglio l'utente o può esere un semplice HTML...

Avatar utente
sardylan
Linux 3.x
Linux 3.x
Messaggi: 993
Iscritto il: mar 24 apr 2007, 9:21
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.14
Distribuzione: Debian - CLFS
Località: Cagliari
Contatta:

Re: php - includere una 404 personalizzata

Messaggio da sardylan »

Anche io ti consiglio di sistemare il tutto con l'uso dell'htaccess, sempre che l'hosting dove sei te lo permetta...

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Re: php - includere una 404 personalizzata

Messaggio da danix »

non mi sono spiegato bene nel mio precedente post...
ovviamente userò uno statement nel .htaccess per reindirizzare in caso di errore, ma vorrei capire... è meglio reindirizzare verso una pagina a se stante o verso una pagina inclusa tipo index.php?p=404??

tra l'altro la pagina 404 sarà comunque in php anche se a se stante perchè ci dovrò includere del codice per inviarmi una mail con l'errore che l'ha richiamata... :)


Alla luce di tutto ciò... com'è meglio procedere??
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Re: php - includere una 404 personalizzata

Messaggio da danix »

altra carne al fuoco...

nell'htaccess io specifico un ErrorDocument per il 404, giusto?? questo però verrà utilizzato solo in questo caso specifico:

Codice: Seleziona tutto

www.miosito.it/paginainesistente.ext
mi seguite?? :)
se invece mi trovo in questa situazione:

Codice: Seleziona tutto

www.miosito.it/index.php?p=paginainesistente
php se ne uscirà con un errore di inclusione non riuscendo a trovare la pagina in questione... in questo caso però non riesco a fargli mandare un header 404, perchè trovandomi all'interno della index.php l'header è già settato a text/html... come potrei fare?? si può lavorare a livello di htaccess (credo di no) o devo scrivere qualche controllo in php??


Grazie per l'aiuto... ;)
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
cymon
Linux 2.x
Linux 2.x
Messaggi: 430
Iscritto il: ven 5 gen 2007, 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: php - includere una 404 personalizzata

Messaggio da cymon »

danix85 ha scritto:altra carne al fuoco...

nell'htaccess io specifico un ErrorDocument per il 404, giusto?? questo però verrà utilizzato solo in questo caso specifico:

Codice: Seleziona tutto

www.miosito.it/paginainesistente.ext
mi seguite?? :)
se invece mi trovo in questa situazione:

Codice: Seleziona tutto

www.miosito.it/index.php?p=paginainesistente
php se ne uscirà con un errore di inclusione non riuscendo a trovare la pagina in questione... in questo caso però non riesco a fargli mandare un header 404, perchè trovandomi all'interno della index.php l'header è già settato a text/html... come potrei fare?? si può lavorare a livello di htaccess (credo di no) o devo scrivere qualche controllo in php??


Grazie per l'aiuto... ;)
Lato apache non è un 404 perché la index.php c'è. Secondo me devi filtrare i valori di p e gestire un "else" per tutti quelli non considerati. Se vuoi penso sia rapidissimo impostare in questo caso una redirect che alla fine fa ricadere il server in 404 e fa venire su la pagina di cui si parlava prima.

Avatar utente
sardylan
Linux 3.x
Linux 3.x
Messaggi: 993
Iscritto il: mar 24 apr 2007, 9:21
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.14
Distribuzione: Debian - CLFS
Località: Cagliari
Contatta:

Re: php - includere una 404 personalizzata

Messaggio da sardylan »

Io ti consiglio di crearti una dir nella root del tuo sito chiamata errors e metterci dentro una pagina per ogni errore... Oppure crei una error.php e li passi code=number.. E gestisci così...
Se poi vuoi anche mascherare l'indirizzo, ti consiglio di usare mod_rewrite!!

Esempio di .htaccess:

Codice: Seleziona tutto

ErrorDocument 401 /errors/401.php
ErrorDocument 403 /errors/403.php
ErrorDocument 404 /errors/404.php
ErrorDocument 500 /errors/500.php
Oppure altro esempio:

Codice: Seleziona tutto

ErrorDocument 401 /errors.php?code=401
ErrorDocument 403 /errors.php?code=403
ErrorDocument 404 /errors.php?code=404
ErrorDocument 500 /errors.php?code=500
in pratica non fa altro che fare un redirect all'url inserito nella direttiva dopo il codice di errore!! Quindi il browser dell'utente vedra un codice 200 (se non sbaglio) che significa redirect, e punterà alla pagina errors.php, che dovrà contenere una roba simile:

Codice: Seleziona tutto

<?php

$error_code = $_GET['code'];

echo "<h1>Errore $error_code</h1>\n";

if($error_code == "404") {
    echo "<p>Pagina non trovata</p>\n";
} elseif ($error_code == "500") {
    echo "<p>Pagina non trovata</p>\n";
} else {
    echo "<p>Errore non conosciuto</p>\n";
}

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: php - includere una 404 personalizzata

Messaggio da conraid »

Se vuoi fare tutto con index.php puoi usare il metodo consigliato da sardylan

Codice: Seleziona tutto

ErrorDocument 404 /index.php?error=404
e poi prendi la variabile dall'array GET

Ma http manda una "variabil"e senza bisogno di aggiungerla

Codice: Seleziona tutto

ErrorDocument 404 /index.php
per esempio basta, e dal file index.php la ricavi con $_SERVER['REDIRECT_STATUS']; senza bisogno di scomodare GET

Come ti ha detto, meglio usare una pagina apposita però, tipo errors.php o come vuoi chiamarla

Avatar utente
cymon
Linux 2.x
Linux 2.x
Messaggi: 430
Iscritto il: ven 5 gen 2007, 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: php - includere una 404 personalizzata

Messaggio da cymon »

danix85 ha scritto: tra l'altro la pagina 404 sarà comunque in php anche se a se stante perchè ci dovrò includere del codice per inviarmi una mail con l'errore che l'ha richiamata... :)
Vuoi che invii una mail a ogni 404? Ma è un sito su internet? Conta che in questo caso riceverai uno mucchio di spam per i tentatvi di hack per raggiungere pagine amministrative o altre robe del genere, senza contare i furbini che cercheranno di riscriversi la URL per vedere i contenuti non ancora rivelati...
Io ho un sito a basso traffico e questo mese sono già a un 200 404, ma ad analizzarli trovo pochissimi broken link effettivi.

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Re: php - includere una 404 personalizzata

Messaggio da danix »

Grazie delle risposte...
Dal momento che ho il SafeMode di php spento, potrei fare in modo che i 404 mi vengano salvati su un log, e magari una volta a settimana potrei farmi spedire il log via mail...

che ne pensate??

Chiedo consiglio perchè non ho mai amministrato un sito che dovrà andare in produzione, a parte i sitarelli personali non ho mai fatto nulla di grosso...


Grazie mille per l'aiuto che mi state dando... :)
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
cymon
Linux 2.x
Linux 2.x
Messaggi: 430
Iscritto il: ven 5 gen 2007, 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: php - includere una 404 personalizzata

Messaggio da cymon »

danix85 ha scritto:Grazie delle risposte...
Dal momento che ho il SafeMode di php spento, potrei fare in modo che i 404 mi vengano salvati su un log, e magari una volta a settimana potrei farmi spedire il log via mail...

che ne pensate??
Sicuramente il log è meno disordinato di un invio continuo di mail a mio parere... ovviamente bisogna valutare come crescono per non ingolfare l'harddisk... Conta che già i log di apache, di per sé, riportano i 404, comunque. In proposito, non hai già un sistema di reportistica degli accessi che potrebbe gestire la cosa?

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: php - includere una 404 personalizzata

Messaggio da conraid »

danix85 ha scritto: che ne pensate??
Se hai un gestore di statistiche ci pensa lui a mostrarti i 404, altrimenti ne metti uno tu.
Tieni presente che ti serve solo per valutare i tuoi errori, come ti hanno detto troverai 10/100/1000 tentativi di scovare pagine inesistenti, e su questi... lascia perdere.
Guarda per esempio alcuni 404 del mio blog

Codice: Seleziona tutto

/2006/11/index.php
/phpwcms/include/inc_ext/spaw/dialogs/table.php
/2006/index.php
/sitemap.html
/2006/phpwcms/include/inc_ext/spaw/dialogs/table.php
/_vti_bin/owssvr.dll
/bmckulchjxzz.html
/MSOffice/cltreq.asp
a che ti serve?

Diverso il discorso di sapere i tuoi errori come dicevo. Su un sito nuovo per esempio avevo dei 404 per il favicon ed ho visto che avevo i permessi errati per quel file, e così via...

Un file di log è IMHO la cosa migliore, ma se ce l'ha già il provider... usa quello (se te lo fanno usare, quello che uso io mi fa vedere gli ultimi 4 giorni di log del mio sito, e comunque tutto rimane memorizzato grazie ad awstat)

Rispondi