Newsgroup: it.comp.www.php
Titolo: Problema strano con un header('location:')

Non so per quale motivo ma su un server in cui sto testando un progetto
ogni volta che utilizzo il codice qui sotto si pianta tutto.
Lo strano č che lo stesso codice lo utilizzo piů o meno dappertutto, ma
solo qui mi da questo problema.
$query = "bla bla bla"
mysql_select_db($database_DBConn, $DBConn);
$Result = mysql_query($insertSQL, $DBConn) or die(mysql_error());
if($Result) {
  $goto = "id_art=".$_GET['id_art']."&codice=".$_GET['codice'];
  header('location:articolo.php?'.$goto);
}
-- 
http://www.maxori.it

 $query = "bla bla bla"
$insertSQL = "bla bla bla";
-- 
http://www.maxori.it

 il codice qui sotto si pianta tutto.
Che cosa intendi per "si pianta tutto"?
-- 
Vuoi distribuire il tuo sito web su CD/DVD?
Prova 
http://www.dwebpro.com/
Vuoi diventare un esperto analista PHP/MySQL?
Vieni a fare uno stage con noi: 
http://www.creativepark.it/stage/

 Che cosa intendi per "si pianta tutto"?
La query viene eseguita ma non viene effettuato il redirect.
C'è da notare un particolare; già qualche giorno fa avevo postato di un
problema con le sessioni, in pratica sembra che il php.ini di questo
server sia configurato male.
Ti chiedevo quindi se c'è qualche parametro che possa pregiudicare
l'esecuzione della funzione header().
Io non ne sono a conoscenza ma magari esiste.
Grazie
Max
-- 
http://www.maxori.it

 La query viene eseguita ma non viene effettuato il redirect.
Inserisci all'inizio dello script il seguente codice:
error_reporting(E_ALL);
ini_set('display_errors', 1);
Ricarica lo script a posta qui eventuali errori visualizzati.


 Ricarica lo script a posta qui eventuali errori visualizzati.
Non appare nessun errore perchè il caricamento della pagina si blocca
quando incontra la funzione header().
In pratica l'utente deve cliccare su un articolo per inserire nel
carrello i prodotti acquistati, la funzione di INSERT carica i dati nel
Db e al successo dell'operazione la funzione header(location) rispedisce
l'utente alla pagina di provenienza.
Funziona in tutti i siti che ho fatto, qui no.
Max
-- 
http://www.maxori.it

   header('location:articolo.php?'.$goto);}
Mmh.. provato a specificare l'indirizzo completo (
http://ecc.ecc
)?

 quando incontra la funzione header().
Esegui questi test:
1. Commenta la funzione header e ricarica la pagina.
2. Sostituisci la funzione header con :
header('Location: 
http://www.google.it/'
);
e ricarica la pagina.
3. Controlla gli header restituiti dalla pagina. Anche se il
caricamente si blocca, in teoria qualche cosa dovrebbe venire
restituito dal server.


   header('location:articolo.php?'.$goto);
                                ^^^^^^^
Un URL passato a location **DEVE** iniziare con http(s):// ed essere
ASSOLUTO ie: 
http://www.example.com/articolo.php
.
Inizia a sistemare questo.
ciao, f.

 ciao, f.
Non funziona. O meglio, funzio0na ma ci vogliono 5 minuti prima che la
pagina venga ricaricata.
Mi chiedo perchè questo è l'unico sito che mi da questo problema, quando
è una tecnica che uso abitualmente ed ha sempre funzionato?
Max
-- 
http://www.maxori.it

 Mmh.. provato a specificare l'indirizzo completo (
http://ecc.ecc
)?
Si, il redirect funziona ma dopo 5' di attesa
Max
-- 
http://www.maxori.it

 restituito dal server.
Infatti il prodotto viene inserito nel carrello, è sempre l'header che
non lavora.
E non solo, dopo il sito diventa lentissimo, tutto quanto è bloccato,
come se ci fosse un loop, solo che non ci sono loop nelle altre pagina.
Max
-- 
http://www.maxori.it

 è una tecnica che uso abitualmente ed ha sempre funzionato?
Perchè con alcuni browser - PER CASO - funziona anche con l'header
"malformato".
Anche se dimentichi di chiudere un tag html 9/10 funziona. Ecco, è circa
la stessa cosa.
ciao, f.

 pagina venga ricaricata.
Sostituisci header() con echo "foo"; e controlla che i cinque minuti non
siano un problema che si verifica PRIMA di header.
ciao, f.

 siano un problema che si verifica PRIMA di header.
PS: Hai dimenticato ANCHE l'urlencode dei parametri in GET.
ciao, f.

 "malformato".
Io uso Mac e Win, cn safari, IE, FF per entrambi e non avevo mai visto
questa cosa.
Comincio a credere che sia l'APACHE del sito che ha dei problemi
Già non riuscivo a fare l'upload dei files e non funzionavano le
sessioni. Modificando con ini_set() alcuni parametri ora funzionano.
Infatti fin dal primo post chiedevo se c'era qualcosa che potessi fare
per correggere questo inghippo.
Grazie cmq per il tempo che stai usand per aiutarmi.
Max
-- 
http://www.maxori.it

 sessioni. Modificando con ini_set() alcuni parametri ora funzionano.
Vabbè ... ma vai a caso ? ;) Quali parametri ? Cerca di COMPRENDERE
esattamente cosa succede ... guarda le logs di apache, ecc.
ciao, f.

Non so se può servire, questo è un  estratto del phpinfo 
Cache-Control max-age=0
Accept
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plai
n;q=0.8,image/png,*/*;q=0.5
Accept-Language it-it
Accept-Encoding gzip, deflate
Cookie PHPSESSID=b30a34da17c91527974d062e00ccede7536e86dc
Connection keep-alive
HTTP Response Headers
X-Powered-By PHP/5.2.0-8+etch10
Connection close
Transfer-Encoding chunked
Content-Type text/html
-- 
http://www.maxori.it

 questa cosa.
PS: da 
php.net/header
Note: HTTP/1.1 requires an absolute URI as argument to » Location:
including the scheme, hostname and absolute path, but some clients
accept relative URIs. You can usually use $_SERVER['HTTP_HOST'],
$_SERVER['PHP_SELF'] and dirname() to make an absolute URI from a
relative one yourself:
ciao, f.

 esattamente cosa succede ... guarda le logs di apache, ecc.
Purtroppo non posso, il sito è depositato da chi mi ha commissionato il
lavoro su un server a cui non posso accedere.
Per comprendere quello che sta succedendo sto facendo il possibile,
l'unica cosa che so è che se non utilizzo header() tutto funziona
perfettamente.
Ho cmq già codificato tutta la stringa GET e inserito l'URL assoluto, a
scanso di equivoci.
Max
-- 
http://www.maxori.it

 lavoro su un server a cui non posso accedere.
'azz !
Non riesci a fare un po' di prove e poi farti spedire l'error_log di
apache ?
ciao, f.

 pagina venga ricaricata.
Cinque minuti mi puzza molto di timeout nella risoluzione del nome tramite 
DNS, ma non ho idea di dove guardare.
Puo` essere che ci sia qualcosa sul server (moduli di apache) che verifica 
l'esistenza del dominio prima di mandare l'header di redirect al browser?
Bye.

 DNS, ma non ho idea di dove guardare.
Buona idea, potrebbe provare a fare un redirect verso un ip direttamente
e vedere che succede.
ciao, f.

 Funziona ma dopo 5 minuti di attesa
Sei sicuro che non sia un problema di client?
Hai provato con un altro browser, con un altro PC, da un'altra
connessione internet?


 connessione internet?
Si, abbiamo provato in due, con Mac e Pc e vari browser.
Credo proprio sia un problema di configurazione del server Apache.
Ho aperto un ticket per l'assistenza, staremo a vedere.
Grazie.
Max
-- 
http://www.maxori.it