Newsgroup: it.comp.www.php
Titolo: log error 404

sto cercando di trovare un sistema per cui quando un utente segue un link
interrotto (di cui non mi sono accorto) l'errore di ritorno 404 venga
loggato (su un file o un db o mandi una mail... questo non importa).
ho usato il file .htaccess inserendo una redirezione del 404
<cut>
ErrorDocument 404 
http://www.sito.com/catcherror.php?404
</cut>
il codice di catcherror.php e' cosi' (ne sto provandi di ogni):
<cut>
/*il server e' in in fuso anteriore di 6 ore (21600 secondi)*/
$data = date("Y-m-d H:i:s", (time()+21600));
$msg = "data = <B>$data</B><br>";
$msg .= "\$HTTP_REFERER = <B>$HTTP_REFERER</B><br>";
$msg .= "\$QUERY_STRING = <B>$QUERY_STRING</B><br>";
$msg .= "\$REQUEST_URI = <B>$REQUEST_URI</B><br>";
$msg .= "\$PHP_SELF = <B>$PHP_SELF</B><br>";
$msg .= "error = <B>$QUERY_STRING</B><br>";
$msg .= "\$php_errormsg = <B>$php_errormsg</B><br>";
/*[omissis - qui loggo su file/db o mando la mail]*/
header("Location: 
http://www.sito.com/
");
exit;
</cut>
questo e' il messaggio di un link errato dalla hp alla pagina false.php (che
non esiste)
<cut>
data = 2001-10-05 17:20:17
$HTTP_REFERER = 
http://www.sito.com/index.htm
$QUERY_STRING = 404
$REQUEST_URI = catcherror.php?404
$PHP_SELF = catcherror.php
error = 404
$php_errormsg =
$REMOTE_ADDR = 192.168.5.5
</cut>
nel referer mi trovo la pagina in cui c'e' il link errato, ma non riesco a
pigliarmi la pagina a cui il link e' diretto (false.php).
la cosa che pensavo mi potesse risolvere e' $php_errormsg, anche se in rete
non posso settare track_errors
nel file php.ini (o posso dargli un valore locale tipo .htaccess?), ma cmq
qui da me non funzia anche con il corretto valore in php.ini.
nb nel 404 di default il dato c'e'
<cut>
The requested URL /false.php was not found on this server.
<cut>
da dove se lo piglia?? e dove e' il codice degli errori di default???
fabio che e' pieno di dubbi

 </cut>
Sembra quasi che il tuo catcherror.php alla sua volta ha qualche problema di
trovare qualcosa (e per quello dovrebbe vedere quella).
Prova seguente cose, magari ti aiuta:
- togliere il ?404 come parametro (o metti ?e=404
- togliere il redirect
Altra cosa, ma non sembra il tuo problema: IE non visualizza pagine 404 che
sono state spedite con meno di 512 byte (finche' non settato in IE)

 - togliere il redirect
lo script di catch gira *prima* del redirect, quindi non influisce
il vero problema e' che non riesco ad agguantare la pagina verso cui il link
punte, mi spiego meglio
<ipotesi>
-il sito e' composto da 2 pagine, home.php e dettaglio.php
-in home.php vi e' un link alla seconda pagina scritto errato
(dettaLGio.php)
voglio poter ottenere dallo script
1- la pagina ad cui e' partito il link errato ($HTTP_REFERER funziona)
2- la pagina a cui il link era diretto (?????)
</ipotesi>

 2- la pagina a cui il link era diretto (?????)
$REDIRECT_URL
Ciao,
Luca.

da dove se lo piglia??
Metti phpinfo() dentro error.php, e lo scoprirai. In qualche variabile
deve pur essere. Se non lo trovi, allora tanto vale che tu ti metta i'
ccore in pace :-(((
Leonardo
-- 
Nior thainig ar major i dtus an lae chugainn,
is ni rabhamar fein ann i gcoir na gceart
ach mar sheolfai aoireacht bo gan aoire,
ar thaobh na greine de Sliabh na mBan.


l'ho fatto, e non c'e' da nessuna parte.  :-(
forse comincio ad essere OT, ma apache come fa a darmi la pagina nel
messaggio 404??
fabio che non vuole mettersi i'ccore in pace

"Luca" <lu...@qwerty.it.invalid> ha scritto nel messaggio
news:Xns913796F1...@192.168.2.1...

da me:
-PHP Version 4.0.3pl1
Undefined variable: REDIRECT_URL
ho provato anche $GIVE_ME_THE_PAGE_PLEEEASE
ma non funziona   :-)
fabio che ha voglia di fare dello spirito

l'ho fatto, e non c'e' da nessuna parte.  :-(
Nel file httpd.conf, devi avere:
	ErrorDocument	/path/error.php
*SENZA* specificare http:// o altro. ALLORA ti setta REDIRECT_URL.
Leonardo che si e' riletto il manuale... 8-D


 Undefined variable: REDIRECT_URL
Non centra il PHP e apache che setta questa variabile. 
Dal manuale di apache (/manual/custom-error.html):
To achieve this, Apache will define new CGI-like environment variables, 
e.g.
REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/x-xbitmap, image/jpeg
REDIRECT_HTTP_USER_AGENT=Mozilla/1.1b2 (X11; I; HP-UX A.09.05 9000/712)
REDIRECT_PATH=.:/bin:/usr/local/bin:/etc
REDIRECT_QUERY_STRING=
REDIRECT_REMOTE_ADDR=121.345.78.123
REDIRECT_REMOTE_HOST=
ooh.ahhh.com
REDIRECT_SERVER_NAME=
crash.bang.edu
REDIRECT_SERVER_PORT=80
REDIRECT_SERVER_SOFTWARE=Apache/0.8.15
REDIRECT_URL=/cgi-bin/
buggy.pl
note the REDIRECT_ prefix.
Ciao,
Luca.

funzia...grazie in ritardo!
fabio che e' stato malato
"Luca" <lu...@qwerty.it.invalid> ha scritto nel messaggio
news:Xns913BB7A4...@192.168.2.1...


 ha scritto nel messaggio
news:jsolstgkalhq6nkk2...@4ax.com...
