2013-06-06 10 views
10

Na naszej adserver, używamy następujące prosty skrypt PHP przekierowanie do strony docelowej reklamy:Przekierowanie losowo braku w IE 8 i starszych

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

Skrypt bierze swoją lp parametr i przekierowuje do tego adresu URL . Celem jest to, abyśmy mogli skanować nasz dziennik dostępu w celu śledzenia kliknięć (adres URL zawiera również parametr id, który skrypt ignoruje).

Mamy jednego klienta (który znam do tej pory), w którym to nie działa konsekwentnie, ale tylko w IE 8 i starszym. URL z problemem jest:

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

ten powinien przekierować do http://travelinsingles.com/home.htm, ale czasami to idzie do http://webutil.bridgebase.com/home.htm (który nie istnieje). Zawsze zdarza się to przy pierwszym kliknięciu reklamy; czasami kolejne kliknięcia poprawnie podążają za przekierowaniem, czasami nadal przechodzą na zły adres URL.

Wykonałem przechwytywanie pakietów na nasz serwer, to wygląda jakbyśmy wysyłania prawidłowego nagłówka:

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 

I ujęte zarówno na upadającego i udanego przekierowania, a nagłówki były identyczne z wyjątkiem Dacie .

Używam komputera Mac, więc używam BrowserStack do testowania IE, co ogranicza moją zdolność do debugowania po stronie klienta. Czy ktoś wie, co może być przyczyną tego i czy jest coś, co możemy zrobić, aby obejść go?

I zamieszczonym problem ze screenów BrowserStack wyposażone:

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

+0

to adres URL wysyłany pocztą e-mail? –

+0

To może nie mieć nic wspólnego z twoim problemem, ale jestem ciekawy - w jakim trybie renderowania działa twój IE8? Tryb dziwactwa lub standardów? Wpadłem na dziwne rzeczy w trybie dziwactwa na IE8. – Revent

+0

@Dagon Nie, jest to href kotwicy, której wewnętrznym kodem HTML jest obraz reklamy. Ale powieliłem problem w przeglądarce BrowserStack po prostu wpisując tam URL do przeglądarki. – Barmar

Odpowiedz

0

Co się stanie, jeśli używasz rawurldecode($lp)? Testowałem w systemie Windows 7 w IE7-10 i działa dobrze dla mnie (w obie strony). Dziwne!

Sprawdź adres URL, do którego następuje przekierowanie w IE, co mówi pasek adresu?

0

Aby zapobiec problemom z przekierowaniami nagłówków, zazwyczaj używam ob_start(); i ob_flush();

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


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

Czy dodanie exit lub die(); do końca swojego PHP zrobić różnicę?

Czasami HTTP klienci nie lubią, gdy nagłówek przekierowanie jest wysyłany, gdy zawartość nadal istnieje w organizmie (nawet jeśli jest to pusta treść: przestrzenie, powraca linia, itp)

-1

Może masz buforowanie wyjścia na serwer. Buforowanie wyjścia może uzyskać nagłówek z powodu bufora (jak wiesz, nagłówki powinny zostać wysłane jako pierwsze).

Mam nadzieję, że to może być problem.

+0

Nie, brak buforowania wyjścia. – Barmar