2013-05-09 42 views
0

我已經做了條件重定向與JavaScript(取決於referer)。但是現在我需要檢測用戶是否被重定向,然後他點擊返回按鈕並再次返回到他已被重定向的頁面。在這種情況下,我不需要再重定向他。帶後退按鈕檢查器的條件JavaScript重定向

我已經找到了解決辦法在這裏 - 但我沒有PHP和JavaScript正確結合,所以總有一個錯誤 - 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 2013-05-09 13:49:32

+0

我添加了錯誤。它根本不做任何重定向。核心重定向工作正常我測試,但一旦我添加了JavaScript後退按鈕條件它失敗。 – Zox 2013-05-09 13:53:42

回答

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 } ?> 
} 
+0

謝謝,但它似乎並沒有工作也形式不應該是行動之一,但我隱藏了一個。 – Zox 2013-05-09 14:09:34

+0

php執行後,這是我得到的代碼 - 它似乎只是這2頁不重定向,這是問題 -

的document.getElementById( 'form1中')提交();
Zox 2013-05-09 14:11:36