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.
Avatar utente
danix
Staff
Staff
Messaggi: 3287
Iscritto il: ven ott 27, 2006 19:32
Nome Cognome: Danilo M.
Slackware: 64 14.1
Kernel: 4.4.0
Desktop: kde4
Località: Siderno (RC)
Contatta:

php - includere una 404 personalizzata

Messaggioda danix » ven set 26, 2008 22:18

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

myself ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

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

Re: php - includere una 404 personalizzata

Messaggioda cymon » ven set 26, 2008 23:05

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 2.6
Linux 2.6
Messaggi: 993
Iscritto il: mar apr 24, 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

Messaggioda sardylan » ven set 26, 2008 23:22

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: 3287
Iscritto il: ven ott 27, 2006 19:32
Nome Cognome: Danilo M.
Slackware: 64 14.1
Kernel: 4.4.0
Desktop: kde4
Località: Siderno (RC)
Contatta:

Re: php - includere una 404 personalizzata

Messaggioda danix » ven set 26, 2008 23:37

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

myself ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
danix
Staff
Staff
Messaggi: 3287
Iscritto il: ven ott 27, 2006 19:32
Nome Cognome: Danilo M.
Slackware: 64 14.1
Kernel: 4.4.0
Desktop: kde4
Località: Siderno (RC)
Contatta:

Re: php - includere una 404 personalizzata

Messaggioda danix » sab set 27, 2008 0:24

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

myself ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

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

Re: php - includere una 404 personalizzata

Messaggioda cymon » sab set 27, 2008 1:14

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 2.6
Linux 2.6
Messaggi: 993
Iscritto il: mar apr 24, 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

Messaggioda sardylan » sab set 27, 2008 1:45

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: 12773
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: php - includere una 404 personalizzata

Messaggioda conraid » sab set 27, 2008 10:37

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.4
Linux 2.4
Messaggi: 430
Iscritto il: ven gen 05, 2007 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: php - includere una 404 personalizzata

Messaggioda cymon » sab set 27, 2008 13:12

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: 3287
Iscritto il: ven ott 27, 2006 19:32
Nome Cognome: Danilo M.
Slackware: 64 14.1
Kernel: 4.4.0
Desktop: kde4
Località: Siderno (RC)
Contatta:

Re: php - includere una 404 personalizzata

Messaggioda danix » sab set 27, 2008 14:12

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

myself ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

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

Re: php - includere una 404 personalizzata

Messaggioda cymon » sab set 27, 2008 14:18

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: 12773
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: php - includere una 404 personalizzata

Messaggioda conraid » sab set 27, 2008 14:21

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)


Torna a “Programmazione”

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti