2014-02-06 2 views
-1

페이지가 IE9를 리디렉션하지 않고 Chrome 및 IE 11에서 작동합니다. 사용자가 완료된 자격 증명없이 로그인 버튼을 클릭하면 코드에 텍스트와 오류 메시지가 표시됩니다. 이 페이지는 URL 에 붙어 있으며 다음 코드에 응답하지 않습니다.리디렉션 IE 9에서 작동하지 않는 PHP 코드 리디렉션

IE9 이하가 PHP에서 리디렉션이 작동하지 않는 알려진 문제가 있습니까?

if(!empty($_POST["email"])){ 
     $_SESSION["Email"] = $_POST["email"]; 

     redirect("customer.php?action_nm=custlogin&action=xpwd"); 
     exit; 
     } 
     else 
     { 

     redirect("customer.php?action_nm=custlogin&action=nocredentials"); 
     exit;   
     } 
    } 

이는 funcition 다음과 같습니다 :

function redirect($s){ 
echo '<script language="JavaScript"> 
function redir() { document.location="'.$s.'"; } 
console.log("' . $s . '") 
redir(); 

</script>'; 
} 
+4

'redirect()'함수의 내용을 보여 주시겠습니까? –

+0

함수가 추가되어 게시물의 서식을 지정하지 않습니다. –

+0

리디렉션에 자바 스크립트를 사용한 이유는 무엇입니까? –

답변

1

나는 내가 내 자신의 버전을 게시하도록하겠습니다, 당신이 거기에 그것을 게시하지 않은 이후 리디렉션 기능이 제대로 작동하지라고 생각합니다.

리디렉션에이 기능을 사용했지만 지금까지 문제가 없었습니다. 당신이 응답의 HTTP 헤더에 다음과 같은 라인을 삽입해야 리디렉션이하기 위해

function redirect($url) { 
     try { 
      if (!headers_sent()) { 
       @header('Location: ' . $url); 
       exit; 
      } else 
       throw new Exception(); 
     } catch (Exception $ex) { 
      // Headers already sent!! Redirect via Javascript? 
      echo '<script type="text/javascript">'; 
      echo 'window.location.href="' . $url . '";'; 
      echo '</script>'; 
      // Javascript disabled, redirect via metatags? 
      echo '<noscript>'; 
      echo '<meta http-equiv="refresh" content="0;url=' . $url . '" />'; 
      echo '</noscript>'; 
      exit; 
     } 
    } 
0

: 이제

Location: customer.php?action_nm=custlogin&action=xpwd 

을, 당신이 작성한하지 않을 수 있습니다 헤더에 넣어 뭐든지을 가지고 아무것도 출력 버퍼에, 또는 당신이 할 수있는 HTTP 몸에 물건을 넣어입니다.

다른 말로하면, 그 행 앞에 무엇이 렌더링 되었든지간에 (빈 공간조차도)이 방법이 작동하지 않게됩니다.

PHP를위한 가장 좋은 방법은 바로 첫 번째 바이트 떨어져 태그를 열 수 있습니다 :

<?php 

결코 파일에 닫습니다.

이제 다른 출력 전에 header() 함수를 사용하여 해당 행을 HTTP 헤더에 넣을 수 있습니다. 그래서 귀하의 페이지는 다음과 같아야합니다 :

<?php 

header('Location: customer.php?action_nm=custlogin&action=xpwd'); 

이 문제는 불투명합니다. 그렇지 않으면 응답 스크립트의 일부가 이미 출력 버퍼를 채 웠기 때문입니다. 이 주장을 둘러싼 방법은 없습니다.

+0

다시 다른 브라우저에서 작동합니다. 귀하의 대답은 모든 브라우저와 관련이 있다고 생각합니까? –

+0

해당 줄을 복사하여 간단한 정적 페이지에 붙여넣고 IE9로 엽니 다. 이것에 영향을 줄 수있는 마지막 일은 독자적인 브라우저입니다. 가능한 경우 다른 컴퓨터에서 IE9로 간단한 정적 페이지를 열어보십시오. – pid

관련 문제