Newsgroup: it.comp.www.php
Titolo: HTTP_REFERER non mi da quello che vorrei se opero su un 404 File not found

Come al solito, i miei subject lasciano un po' spaesati :)
Allora la questione è la seguente:
ho un url diciamo 
http://www.miosito.it/cartella1/cart2/cartella%20inesistente
La cartella inesistente è la simulazione di un errore (premetto che questi 
sono eserecizi di stile piu che altro)
Alla chiamata dovrebbe rispondere un 404.php regolarmente impostato in un 
.htaccess
Il codice del 404.php è il seguente
<?php
$wow[1] = $_SERVER[HTTP_REFERER];   //prendo l'URL chiamante
list($prot, $void, $domain, $shoproot, $catroot, $searchstring)  = 
explode('/', $wow[1]);  //scompatta l'URL chiamante in un array e mi prendo 
solo la parte finale
$keywords = ereg_replace('%20',' ',$searchstring);   //preparo la variabile 
che andrò a cercare
echo "Controllo: " . $keywords;     //controllo che la procedura funzioni
header("Location: 
http://www.miosito.it/cartella1/cart2/risultati_ricerca.php?keywords=
" . 
$keywords);
exit;            /* Assicura che il codice sottostante non sia eseguito dopo 
il redirezionamento. */
?>
Bene, questo codice non solo mi da errore "Cannot modify header..." ma se 
estrapolo solo la variabile
di controllo cio che ottengo non è "cartella inesistente" ma la pagina 
precedentemente visitata sul sito e
correttamente visualizzata.
Qualche idea?Dove sbaglio?
Grazie a tutti
-- 
franz 

 Bene, questo codice non solo mi da errore "Cannot modify header..."
Ovvio, hai inviato dell'output PRIMA di usare header e senza l'output
buffer attivato.
-- 
I am what I am, I do what I can
Do. Or do not. There is not try.

 buffer attivato.
bene, grazie per i riferimenti. ho visto che tu hai costruito una classe sui 
referer
ma il file zip su 
phpclasses.org
 risulta vuoto.
Ora rivedo questo scriptino basandomi sulle tue indicazioni.
Grazie
--
franz 

 buffer attivato.
se invece di un redirect, creo un link dinamico come quello che vedi su, beh 
tale link funziona, ma sempre
col problema che non prende come referer l'url errato ma quello della pagina 
sulla quale vi è il link all'url
errato.
Esempio: su  
miosito.it/prodotto.php
 c'è un link 
miosito.it/badfolder
 
(badfolder genera un 404 perchè non esiste)
Il 404 dovrebbe prendere come referer 
miosito.it/badfolder
 e non 
miosito.it/prodotto.php
Mi sfugge qualcosa
--
franz 

 Il 404 dovrebbe prendere come referer 
miosito.it/badfolder
 
No, e' corretto che prenda 
http://miosito.it/prodotto.php
Per quelli che vuoi fare non usare la gestione degli errori, usa
mod_rewrite.


 mod_rewrite.
Lo so, ma pensavo di riuscirci anche con la gestione personalizzata degli 
errori.
Ad esempio se vai qui 
http://www.kneuf.com/
 e ci attacchi una cartella a 
caso
(
http://www.kneuf.com/mia%20cart
 ) ti genera un 404 in cui ti dice che la
cartella mia%20cart è inesistente.
Il tizio del sito mette a disposizione il suo script ma una volta importato 
sul mio sito
la parte in cui mi dovrebbe dire che la cartella è inesistente è vuota.
Sto cominciando a pensare che le mie impostazioni del server non siano 
compatibili con la cosa
che voglio fare.
Hai idee?
--
franz 

 cartella h inesistente h vuota.  
Invece di HTTP_REFERER usa SCRIPT_URI.


 Invece di HTTP_REFERER usa SCRIPT_URI.
Ci provo.
Cmq ho notato che REDIRECT_URL di apache (che ho usato nella riscrittra del 
mio codice)
 non mi va come dovrebbe.
Non mi da, come recita O'Reilly, the mistyped or the inexistant file, ma mi 
da esattamente
l'error handler...nel mio caso 404handler.php.
Cmq domani rifaccio il tutto usando mod_rewrite, anche se mi spiace non 
venire a capo
di sto problema.
--
franz