0

나는 조건부 리디렉션을 자바 스크립트 (리퍼러에 따라 다름)로 수행했습니다. 그러나 이제는 사용자가 리디렉션되었는지 감지 한 다음 다시 버튼을 클릭하고 리디렉션 된 페이지로 다시 이동해야합니다. 이 경우에는 다시 리디렉션 할 필요가 없습니다.조건부 자바 리디렉션 뒤로 버튼 검사기

는 여기 해결책을 발견했다 -하지만 난 제대로 PHP와 자바 스크립트를 결합하는 데 실패하고, 그래서 오류가 항상있다 - How do I detect if a user has got to a page using the back button?

코드 : 여기 뭐가 문제

<form name="ignore_me"> 
<input type="hidden" id="page_is_dirty" name="page_is_dirty" value="0" /> 
</form> 

<script language="javascript" type="text/javascript"> 
var dirty_bit = document.getElementById('page_is_dirty'); 
if (dirty_bit.value == '1') { 

document.write("<p>Do Not Redirect</p>"); 

} 
else { 

<?php if((stristr($_SERVER['HTTP_REFERER'],"thoughts") != FALSE) { ?> 

<?php $setupform = '<form id="form1" method="post" action="http://yahoo.com">'; ?> 
<?php $submitform = 'document.getElementById(\'form1\').submit(); </form>'; ?> 
<?php echo $setupform; ?> 
<?php echo $submitform; ?> 

<?php } ?> 
} 

function mark_page_dirty() { 
dirty_bit.value = '1'; 
} 
</script> 

?

오류는 단순히 리디렉션하지 않는다는 것입니다 - 그것의 코드와 빈 페이지를 제공합니다

<form name="ignore_me"> 
<input type="hidden" id="page_is_dirty" name="page_is_dirty" value="0" /> 
</form> 

<script language="javascript" type="text/javascript"> 
var dirty_bit = document.getElementById('page_is_dirty'); 
if (dirty_bit.value == '1') { 

document.write("<p>My First JavaScript</p>"); 

} 
else { 


<form id="form1" method="post" action="http://yahoo.com">document.getElementById('form1').submit(); </form> 
} 

function mark_page_dirty() { 
dirty_bit.value = '1'; 
} 

+0

가 어떤 오류? 자세한 내용을 알려주세요. – Robert

+0

오류가 무엇인지 추가했습니다. 단순히 리디렉션을 수행하지 않습니다. 핵심 리디렉션 잘 테스트 한 작동하지만 일단 자바 스크립트 다시 단추 조건이 실패했습니다. – Zox

답변

1

내가 당신의 코드를 살펴했고 여기에 몇 가지 포인트는

  • 는 PHP를 혼합하는 경우와 JS, 그것은 JS 문 중 하나를 읽을 수없는 것, 즉 PHP 코드가 먼저 실행되고, 기억

JS의 if 문에 PHP 코드 블록을 넣습니다.

여기에 대한 가능한 해결책은 다음과 같습니다 PHP 로직 첫째 :

$redir = false ; 
if((stristr($_SERVER['HTTP_REFERER'],"thoughts"))) { 
    $redir = true ; 
} 

HTML 양식 :

<form id="check" action="a.php" method="post"> 
    <input type="hidden" name="durty_bit" value="1" /> 
</form> 

JS 확인 :

var check = getElementById("check") ; 
if (check && check.durty_bit == 1){ 
    document.write("<p>Do Not Redirect</p>"); 
} else { 
    <?php if ($redir){ ?> 
    document.write('<form id="form1" method="post" action="http://yahoo.com"> </form>'); 
    document.getElementById("form1").submit() ; 
<?php } ?> 
} 
+0

고마워하지만 작동하지 않는 것 역시 양식은 행동 하나가 아니어야합니다. – Zox

+0

PHP 실행 후이 코드는 내가 얻는 코드입니다 -이 두 페이지가 리디렉션되지 않고 문제가있는 것처럼 보입니다 -

document.getElementById ('form1'). submit();
Zox