2013-06-06 2 views
10

, 우리는 광고의 방문 페이지로 리디렉션 다음과 같은 간단한 PHP 스크립트를 사용리디렉션 무작위로 IE 8에 실패 이상 우리의 광고 서버에

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

스크립트가 lp 매개 변수를 그 URL로 리디렉션 . 그 목적은 액세스 로그를 검사하여 클릭 연결을 추적 할 수 있도록하는 것입니다 (URL에는 스크립트가 무시하는 id 매개 변수도 포함됨).

IE8 이상에서만 일관되게 작동하지 않는 고객이 있습니다 (지금까지 내가 아는 고객이 한 명 있습니다). 이 http://travelinsingles.com/home.htm로 리디렉션해야

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

하지만, 경우에 따라서는 (존재하지 않는) http://webutil.bridgebase.com/home.htm로 이동 : 문제가있는 URL입니다. 항상 광고를 처음 클릭 할 때 발생하는 것으로 보입니다. 종종 후속 클릭이 리디렉션을 올바르게 따르기도하고 때로는 잘못된 URL로 이동하기도합니다. 우리가 올바른 헤더를 보내는 것처럼 우리의 웹 서버의 패킷 캡처를 수행

, 그것은 같습니다

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 

나는 실패와 성공 리디렉션에 모두 촬영을하고, 헤더는 날짜를 제외하고는 동일했다 .

저는 Mac을 사용 중이므로 BrowserStack을 사용하여 IE를 테스트합니다. 따라서 클라이언트 측에서 디버깅 기능이 제한됩니다. 누군가는 이것을 일으킬 수있는 것을 알고 있습니까? 그리고 우리가 그 문제를 해결하기 위해 할 수있는 것이 있다면요?

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

+0

이메일로 전송 혹시 URL입니다 수 있었다 희망? –

+0

이것은 귀하의 문제와 관련이 없지만 궁금합니다 - 귀하의 IE8은 어떤 렌더링 모드에서 실행되고 있습니까? Quirks 또는 표준 모드? 나는 IE8의 버크 모드 (quirks mode)에서 기괴한 것들을 경험했다. – Revent

+0

@Dagon 아니요, 내부 HTML이 광고 이미지 인 앵커의 href입니다. 그러나 BrowserStack에서 URL을 브라우저에 입력하기 만하면 문제가 재현됩니다. – Barmar

답변

0

당신이 rawurldecode($lp) 무엇을 사용하면 어떻게됩니까 :

나는 기능 BrowserStack의 스크린 샷이 문제를 재현? Windows 7에서 IE7-10에서 테스트를 해본 결과 나에게 잘 작동합니다 (두 가지 방법 모두 가능). 이상한!

IE에서 리디렉션되는 URL을 확인하십시오. 주소창의 내용은 무엇입니까?

0

헤더 리디렉션 문제를 방지하기 위해 일반적으로 ob_start()를 사용합니다. 및 ob_flush();

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


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

차이를 만들 당신의 PHP의 끝 exit 또는 die();를 추가합니까?

-1

은 어쩌면 당신은 출력 버퍼링에 있습니다 리디렉션 헤더를 보낼 때 내용이 여전히 몸 (공백, 줄 반환 등 비어 내용의 경우에도)에 존재하는 동안

때때로 HTTP 클라이언트는 그것을 좋아하지 않아 서버. 출력 버퍼링은 버퍼 때문에 헤더를 가져올 수 있습니다 (알다시피, 헤더가 먼저 보내 져야 함).

는 문제

+0

아니요, 출력 버퍼링이 없습니다. – Barmar