2013-06-06 7 views
10

Sul nostro server di annunci, usiamo il seguente semplice script PHP per reindirizzare alla pagina di destinazione dell'annuncio:reindirizzamento in modo casuale non riuscendo in IE 8 e più vecchio

<?php 
$lp=array_key_exists('lp',$_REQUEST)?trim($_REQUEST['lp']):""; 
$location = sprintf('Location: %s', $lp) ; 
header($location) ; 
?> 

Lo script prende il parametro lp e reindirizza a tale URL . Lo scopo è di poter analizzare il nostro registro di accesso per tracciare i clickthrough (l'URL include anche un parametro id, che lo script ignora).

Abbiamo un cliente (che conosco fino ad ora) in cui questo non funziona in modo coerente, ma solo in IE 8 e precedenti. L'URL con il problema è:

http://webutil.bridgebase.com/v2/ad_lp.php?id=340&lp=http%3A%2F%2Ftravelinsingles.com%2Fhome.htm

Questo dovrebbe reindirizzare ad http://travelinsingles.com/home.htm, ma a volte va a http://webutil.bridgebase.com/home.htm (che non esiste). Sembra sempre che succeda al primo clic sull'annuncio; a volte i clic successivi seguono correttamente il reindirizzamento, a volte continuano a passare all'URL errato.

ho eseguito un bloccaggio del pacchetto sul nostro server web, sembra che stiamo inviando la corretta intestazione:

HTTP/1.1 302 Moved Temporarily 
Server: nginx/1.2.1 
Date: Thu, 06 Jun 2013 01:39:12 GMT 
Content-Type: text/html 
Transfer-Encoding: chunked 
Connection: close 
X-Powered-By: PHP/5.4.15-1 
Location: http://travelinsingles.com/home.htm 

ho catturato sia una mancanza e reindirizzamento di successo, e le intestazioni erano identici tranne che per la data .

Utilizzo un Mac, quindi utilizzo BrowserStack per testare IE, il che limita la mia capacità di debug sul lato client. Qualcuno sa che cosa potrebbe causare questo, e se c'è qualcosa che possiamo fare per aggirare il problema?

ho riprodotto il problema con le immagini di BrowserStack Caratteristica:

http://www.browserstack.com/screenshots/3659c3b992a1738594d2fd370caef2852fecb3fa

+0

è l'URL per caso inviato in una e-mail? –

+0

Questo potrebbe non avere nulla a che fare con il tuo problema, ma sono curioso - In che modalità di rendering è in esecuzione il tuo IE8? Quirks o modalità standard? Ho incontrato cose bizzarre in modalità strane su IE8. – Revent

+0

@Dagon No, è l'href di un'ancora il cui codice HTML interno è l'immagine dell'annuncio. Ma ho riprodotto il problema su BrowserStack semplicemente inserendo l'URL nel browser lì. – Barmar

risposta

0

cosa succede se si utilizza rawurldecode($lp)? Ho provato su Windows 7 in IE7-10 e funziona perfettamente per me (in entrambe le direzioni). Strano!

Verifica l'URL a cui ti stai reindirizzando in IE, che cosa dice la barra degli indirizzi?

0

Per evitare problemi con i reindirizzamenti delle intestazioni di solito utilizzo ob_start(); e ob_flush();

<?php 
ob_start(); //at the top of the page// 


header($location) ; 
ob_flush(); 
?> 
1

Vuol aggiungendo exit o die(); alla fine del vostro PHP fare la differenza?

volte HTTP clienti non piace quando un colpo di testa di reindirizzamento viene inviato mentre il contenuto esiste ancora nel corpo (anche se è contenuto vuoto: gli spazi, ritorno della linea, ecc)

-1

Forse avete buffer di uscita sul il server. Il buffering dell'output può estrarre l'intestazione a causa del buffer (come sai, le intestazioni dovrebbero essere inviate prima).

Spero che potrebbe essere il problema

+0

No, nessun buffer di output. – Barmar

Problemi correlati