0

我已经使用 javascript 进行了条件重定向(取决于引用者)。但是现在我需要检测用户是否被重定向,然后他单击返回按钮并再次回到他被重定向的页面。在这种情况下,我不需要再次重定向他。

我在这里找到了解决方案 - 但我无法正确组合 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';
}

4

1 回答 1

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 } ?>
}
于 2013-05-09T13:59:48.393 回答