Repository 32bit  Forum
Repository 64bit  Wiki

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.

php - includere una 404 personalizzata

Messaggioda danix » ven set 26, 2008 21: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... :)
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: php - includere una 404 personalizzata

Messaggioda cymon » ven set 26, 2008 22: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
cymon
Linux 2.4
Linux 2.4
 
Messaggi: 430
Iscritto il: ven gen 05, 2007 1:40
Località: Milano
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox

Re: php - includere una 404 personalizzata

Messaggioda sardylan » ven set 26, 2008 22: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
sardylan
Linux 2.6
Linux 2.6
 
Messaggi: 993
Iscritto il: mar apr 24, 2007 8:21
Località: Cagliari
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.5.5
Distribuzione: Debian - CLFS

Re: php - includere una 404 personalizzata

Messaggioda danix » ven set 26, 2008 22: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??
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: php - includere una 404 personalizzata

Messaggioda danix » ven set 26, 2008 23: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... ;)
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: php - includere una 404 personalizzata

Messaggioda cymon » sab set 27, 2008 0: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
cymon
Linux 2.4
Linux 2.4
 
Messaggi: 430
Iscritto il: ven gen 05, 2007 1:40
Località: Milano
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox

Re: php - includere una 404 personalizzata

Messaggioda sardylan » sab set 27, 2008 0: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
sardylan
Linux 2.6
Linux 2.6
 
Messaggi: 993
Iscritto il: mar apr 24, 2007 8:21
Località: Cagliari
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.5.5
Distribuzione: Debian - CLFS

Re: php - includere una 404 personalizzata

Messaggioda conraid » sab set 27, 2008 9: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
conraid
Staff
Staff
 
Messaggi: 12022
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: php - includere una 404 personalizzata

Messaggioda cymon » sab set 27, 2008 12: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
cymon
Linux 2.4
Linux 2.4
 
Messaggi: 430
Iscritto il: ven gen 05, 2007 1:40
Località: Milano
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox

Re: php - includere una 404 personalizzata

Messaggioda danix » sab set 27, 2008 13: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... :)
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: php - includere una 404 personalizzata

Messaggioda cymon » sab set 27, 2008 13: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
cymon
Linux 2.4
Linux 2.4
 
Messaggi: 430
Iscritto il: ven gen 05, 2007 1:40
Località: Milano
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox

Re: php - includere una 404 personalizzata

Messaggioda conraid » sab set 27, 2008 13: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)
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12022
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite