条件Javascript重定向与后退按钮检查器

Conditional Javascript Redirect With Back Button Checker

本文关键字:按钮 检查 Javascript 重定向 条件      更新时间:2023-09-26

我已经用javascript做了一个条件重定向(取决于referer)。然而,现在我需要检测用户是否被重定向,然后他点击后退按钮,再次得到他已经重定向的页面。在这种情况下,我不需要再次重定向他。

我在这里找到了一个解决方案-但我没能正确地结合php和javascript,所以总是有一个错误-我如何检测用户是否使用后退按钮进入了一个页面?

代码:

<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';
}

我看了一下你的代码,这里有几点:

  • 当混合使用PHP和JS时,请记住,PHP代码将首先执行,它不会读取任何JS语句

你把一段PHP代码放到JS的if语句中。

这是一个可能的解决方案: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 } ?>
}