PHP:表单阻止多个选项卡。

时间:2014-04-08 12:10:42

标签: javascript php forms

我目前正在使用javascript来防止每次用户点击它时在多个浏览器标签上打开链接。假设我的链接目的地是google,如果不存在,它将创建一个新标签,但如果存在相同的目的地则刷新。到目前为止它运作良好。

这是代码。

链接

<div id="container">
<a href="https://www.google.com" target="_blank">Google</a>
</div> 

的JavaScript

<script>
    document.getElementById("container").onclick = function(test){
        if (test.target.tagName === "A")
            window.open(test.target.href, test.target.href);

        return false;
    }
</script>

我的问题是,如何在我的表单上使用相同的JavaScript,效果相似?我的意思是如果用户提交我的表格。如果不存在,它将在提交时创建新选项卡。但如果选项卡存在,则在相同选项卡上重新提交。我试图更改JavaScript,但无法使其作为普通链接工作。

这是我的表格

<form name='form1'  action='/newform.php' method='post' target='_blank'>
<input type='hidden' name='test' value=''>
<input type='image' src='../data/images/myimages.gif' width='100px' height='30px' alt=''>
</form>

2 个答案:

答案 0 :(得分:0)

如何使用会话变量?
还可以将ID用于javascript。

<?php 
  //Check if session has not been started.
  if (session_status() == PHP_SESSION_NONE)
  {
    session_start();
  }


//If it has not been set, set no default.
if (!ISSET($_SESSION['hasSubmit'])
{
    $_SESSION['hasSubmit'] = "no";
}

if ($_SESSION['hasSubmit'] == "no")
{
   //Execute code for no
  echo "
  <form name='form1'  id='firstSubmit' action='/newform.php' method='post' target='_blank'>
  <input type='hidden' name='test' value=''>
  <input type='image' src='../data/images/myimages.gif' width='100px' height='30px' alt=''>
  </form>";
}
else if($_SESSION['hasSubmit'] == "yes")
{
   //Execute code for yes
   //Edit your form properties here to your likes.
  echo "
  <form name='form1'  action='#' method='post' target='_newblank'>
  <input type='hidden' name='test' value=''>
  <input type='image' src='../data/images/myimages.gif' width='100px' height='30px' alt=''>
  </form>";
}
?>

在newform.php中设置:

$_SESSION['hasSubmit'] = 'yes'

现在是javascript:

$('firstSubmit').click(function(){
location.reload;
});

这应该可以解决问题

答案 1 :(得分:0)

您可以尝试这样的事情:

<script type='text/javascript'>
    function formSubmit() {
        window.open("about:blank","newWindow");
    }
</script>
<form name='form1'  action='/newform.php' method='post' onSubmit='formSubmit()' target='newWindow'>
  <input type='hidden' name='test' value=''>
  <input type='image' src='../data/images/myimages.gif' width='100px' height='30px' alt=''>
</form>

基本上,这将在第一次提交表单时打开新窗口,并且每个其他时间表单将提交到已打开的窗口。

请注意,window.open可能被弹出窗口阻止程序阻止,而且通常是。