2013-03-21 4 views
0

전자 메일을 보내고 기본 페이지로 리디렉션하는 스크립트를 작성하려고합니다. 네, 그게 효과가 있어요! 하지만 ...IE에서 PHP 리디렉션이 작동하지 않습니까?

IE에서는 작동하지 않습니다.

코드 예제 :

<?php 
if(isset($_POST['email'])) { 

    // EDIT THE 2 LINES BELOW AS REQUIRED 
    //$email_to1 = "[email protected]"; 
    $email_to2 = "[email protected]"; 
    $email_subject = "Email from www.abc.com";   
    ................ 
    ................     
    // create email headers 
    $headers = 'From: '.$email_from."\r\n". 
    'Reply-To: '.$email_from."\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 
    //@mail($email_to1, $email_subject, $email_message, $headers); 
    @mail($email_to2, $email_subject, $email_message, $headers); 
    header("Refresh: 3; http://www.abc.com/Contact.html"); 
?> 

<!-- include your own success html here --> 

    Thank you for contacting us. We will be in touch with you very soon.<br> 
    <a href="http://www.abc.com/Contact.html">back to website</a> 
<?php 
} 
?> 

내가 그것을 어떻게 해결할 수 있을까? 이 코드

+0

exit()로 헤더 함수 다음에 스크립트를 종료하려고 했습니까? ? –

+1

은 http://en.wikipedia.org/wiki/Meta_refresh (' Najzero

+0

@Stoyan Dimov 예, 시도하십시오. – fronthem

답변

2

코드 아래 사용하세요

header('Location:http://www.abc.com/Contact.html') 
    exit; 
+0

예를 들어 크롬, 파이어 폭스에서 코드가 이미 작동되었다고 나와 있습니다. 그러나 IE에서도 종료하지 않았습니다. 추가됩니다. – fronthem

0

사용 대신

die(header('Location:http://www.abc.com/Contact.html')); 

당신은 die()를 생략 할 수 있지만,이 헤더를 재 전송 한 후 실행 스크립트를 방지 할 수 있습니다 사용하기 때문에, 여기에 유용합니다.

+0

의 답변을 참조하십시오, 작동하지 않았다. – fronthem

+0

그런 다음 단계별 확인을 시도해야합니다. 이 줄을 주석 줄에 넣고 'die ('bool) $ mailSentRes. '결과') ';와 같은 줄을 써서 스크립트에서이 지점을 얻었 으면합니다. –

+0

@로'mail()'을 닫는 것은 좋지 않습니다. 어쩌면 당신에게 할 말이 있습니다. –

0

변경

header("Refresh: 3; http://www.abc.com/Contact.html"); 

header("Refresh: 3; URL=http://www.abc.com/Contact.html"); 

에 난 그

는 또한이 대답을주의 깊게 살펴 트릭을 할해야한다고 생각 : 'Refresh' HTTP header 및이 주석 : 'Refresh' HTTP header

+0

이것은 내가 가지고있는 문제를 해결하는 데 도움이되었습니다. IIS가 IE 브라우저의 리디렉션을 엉망으로 만들고있는 것 같습니다. Location 메서드가 실행되지 않는 동안 Refresh 메서드가 작동했습니다. – dVyper

관련 문제