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 に答える