Repository 32bit  Forum
Repository 64bit  Wiki

Personalizzare errore 404

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.

Personalizzare errore 404

Messaggioda samiel » ven ott 29, 2010 16:52

In un sito ho "personalizzato" l'errore 404 in caso si cerchi di aprire
una pagina non (ancora) presente col seguente codice:
Codice: Seleziona tutto
<?php if(file_exists("$folder/$pagina.php")) include("$folder/$pagina.php"); else include("moduli/nondisp.php"); ?>

e ho ovviamente un file nondisp.php.
Vorrei però inserire anche una pagina diversa se il problema
fosse generato dal tentativo di aprire un link a un oggetto
(come un pdf) non ancora caricato.
Come possa fare in questo caso?

Grazie
M.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Personalizzare errore 404

Messaggioda shark1500 » ven ott 29, 2010 17:32

E` un po` brutto il tuo metodo.

Basta aggiungere la seguente opzione nel file http.conf

Codice: Seleziona tutto
ErrorDocument 404 /errordoc-404.shtml


Dove (ovviamente) cambi la pagina e ci metti quella che vuoi, cosi` se non esiste la pagina richiama quel file li`.
Ultima modifica di shark1500 il sab ott 30, 2010 9:35, modificato 1 volta in totale.
Avatar utente
shark1500
Linux 2.6
Linux 2.6
 
Messaggi: 785
Iscritto il: gio apr 03, 2008 13:33
Località: Modna
Slackware: current
Kernel: 2.6.27.7-smp
Desktop: kde

Re: Personalizzare errore 404

Messaggioda samiel » ven ott 29, 2010 18:06

In http.conf? Ma il sito mica è in un mio server,
è nel server della provincia di Venezia!
Non so se ho capito bene la tua indicazione,
ma pensavo piuttosto di dover mettere un redirect
relativo allo header dell'errore in .htaccess...
Il fatto è che con la mia soluzione
se si richiama una pagina inesistente.
si apre comunque una pagina del sito stesso
con la sua formattazione e i menu.
Invece se metto una cosa del tipo
Codice: Seleziona tutto
ErrorDocument 404 /moduli/error.php

e creo una pagina error.php vedo solo una pagina bianca
col messaggio...

M.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Personalizzare errore 404

Messaggioda roberto67 » ven ott 29, 2010 21:04

mm.. mi sa che allora apache non ti consente di usare .htaccess (AllowOverride none) :cry:
roberto67
Packager
Packager
 
Messaggi: 289
Iscritto il: lun set 14, 2009 17:55
Slackware: 14.1 multilib
Desktop: kde

Re: Personalizzare errore 404

Messaggioda samiel » ven ott 29, 2010 21:46

Sì che mi consente di usarlo,
ma volevo fare un redirect
a una pagina del sito in caso di errore...

M.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Personalizzare errore 404

Messaggioda conraid » sab ott 30, 2010 8:45

è proprio quello il metodo
Codice: Seleziona tutto
ErrorDocument 404 /error.php

o quella che vuoi, l'importante è che esista, se continua a darti errore 404 semplicemente hai sbagliato path
Poi in quella pagina, puoi usare anche cose belline, io per esempio ho solamente la pagina error.php e redirigo li tutti gli errori. In questa pagina controllo $_SERVER['REDIRECT_STATUS'] ed in base a quello mostro immagine diverse e messaggi personalizzati

Per l'altra domanda http://www.php.net/manual/en/function.finfo-file.php
Avatar utente
conraid
Staff
Staff
 
Messaggi: 11994
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Personalizzare errore 404

Messaggioda samiel » sab ott 30, 2010 18:16

No, funziona nel senso che vedo il messaggio incluso in error.php.

La mia domanda nasceva dal fatto che col codice già incluso,
ossia il sopracitato
Codice: Seleziona tutto
<?php if(file_exists("$folder/$pagina.php")) include("$folder/$pagina.php"); else include("moduli/nondisp.php"); ?>

in caso di errore (quando si cerca di aprire una pagina che no esiste)
il messaggio appare in una tipica pagina del sito, formattata come tutto il resti
e con i menu, per cui è facile tornare in un'altra sezione.

Invece, nel caso si cerchi di aprire un oggetto non presente,
come un jpg o un pdf non caricato, appare silo il messaggio
invocato tramite .htaccess. Invece io volevo, come sopra,
che ci fosse il reindirizzamento a una pagina del sito.

Da quello che capisco potrei eliminare nondisp.php
e creare un unico error.php contenente la funzione
$_SERVER['REDIRECT_STATUS']. Provo a vedere
come si gestiscono in questo caso i tipi di errore...

Intanto grazie
M.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Personalizzare errore 404

Messaggioda samiel » sab ott 30, 2010 18:38

Allora... ho creato un error.php così:
Codice: Seleziona tutto
<?php

// Get Variables
$error = $_SERVER['REDIRECT_STATUS'];
$referring_url = $_SERVER['HTTP_REFERER'];
$requested_url = $_SERVER['REQUEST_URI'];
$referring_ip = $_SERVER['REMOTE_ADDR'];
$server_name = $_SERVER['SERVER_NAME'];

//echo $error;

// Error messages to display
switch ($error) {

# Error 400 - Bad Request
case 400:
?>
<h2>Errore 400 - Richiesta erronea</h2>
<p>L'indirizzo richiesto non &egrave; raggiungibile</p>
<?
break;

# Error 401 - Authorization Required
case 401:
?>
<h2>Errore 401 - Autorizzazione richiesta</h2>
<p>L'indirizzo richiesto richiede una previa autenticazione</p>

<?
break;

# Error 403 - Access Forbidden
case 403:
?>
<h2>Errore 403 - Accesso vietato</h2>
<p>L'accesso all'indirizzo richiesto &egrave; vietato</p>
<?
break;

# Error 404 - Page Not Found
case 404:
?>
<h2>Errore 404 - File non trovato</h2>
<p>L'oggetto richiesto non esiste</p>
<?
break;

# Error 500 - Server Configuration Error
case 500:
?>
<h2>Errore 500 - Errore di configurazione del server</h2>
<p>L'indirizzo richiesto risulta a un errore di configurazione del server </br>
Se possibile, contattare il webmaster</p>
<?
break;

# Unknown error
default:
?>
<h2>Errore sconosciuto</h2>
<p>Dovrebbe essere impossibile vedere questa pagina. </br>
Controllare le impostazioni locali di sicurezza</p>
<?

}

// Display selected error message
echo($errordesc);
if (!$referring_url == '')
{
echo '<p><a href="'.$referring_url.'"><< Torna alla pagina precedente</a></p>';
}
else
{
echo '<p><a href="javascript:history.go(-1)"><< Torna alla pagina precedente</a></p>';
}
?>


In index.php ho lasciato (ma non sono sicuro)
Codice: Seleziona tutto
<div id="content">
<?php
if(file_exists("$folder/$pagina.php")) include("$folder/$pagina.php");
else include("moduli/error.php");
?>
</div><!--content-->


Problema:
Mentre se cerco di caricare una pagina che non esiste
vedo una normale pagina del sito, col corretto messaggio
di errore impostato in error.php, invece
se cerco di scaricare un file che non esiste
(come da un link a un pdf che non c'è nel server)
mi appare correttamente il messaggio di error.php.
Ma la pagina è a sfondo bianco, senza alcuna intestazione.
Io invece volevo che il messaggio di errore
comparisse in una normale pagina...

M.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Personalizzare errore 404

Messaggioda danix » dom ott 31, 2010 10:58

Ciao Mauro, my 2 cents...
perchè non usi la struttura che c'è nel resto del sito anche nella pagina error.php e la richiami tramite htaccess come ti è stato consigliato? così ti eviti di doverla includere nella index del sito ma ti rimane comunque la stessa impaginazione... certo, magari è poco elegante e poco 'dinamica', ma almeno ti eviti quell'inclusione poco standard... In questo modo risolvi anche il secondo problema...
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: Personalizzare errore 404

Messaggioda samiel » lun nov 01, 2010 19:51

Credo che l'inghippo stia nell aparte finale di error.php, ossia
Codice: Seleziona tutto
// Display selected error message
echo($errordesc);
if (!$referring_url == '')
{
echo '<p><a href="'.$referring_url.'"><< Torna alla pagina precedente</a></p>';
}
else
{
echo '<p><a href="javascript:history.go(-1)"><< Torna alla pagina precedente</a></p>';
}
?>

Infatti io vorrei che il messaggio fosse stampato
ricorrendo smpre e comunque a una pagina formattata come il resto del sito.

Però una cosa non capisco:
perché i vari errori stampano la pagina bianca
di Apache col messaggio e invece l'errore sconosciuto
mi apre una pagina formattata con tanto di menu ecc?
Ce sicuramente un errore che mi sfugge...

M.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

cron