0

我在我的项目中使用了弹出框的功能。当用户访问该站点时,页面顶部会出现一个弹出框,隐藏其余内容。在该弹出表单中,用户必须提供下载密钥。如果用户有钥匙,他可以继续前进,否则他看不到其他任何东西。当用户提供密钥时,他会转到主页。现在的问题是,一旦用户在提供密钥后进入主页,并且当他再次单击标题时,页面将重新加载,并且弹出表单再次出现。如果某些用户已经给出了下载密钥,我怎样才能防止它再次出现。我正在使用带有代码点火器的php。我的代码

<?php if($download_key != null && !isset($_POST['popup'])){?>
    <script type="text/javascript">
        $(document).ready(function(){  
                loadPopup();    
        });  
    </script>
<?php } ?>

downlaod 键是数据库列,popup 是在弹出框上提交表单时设置的隐藏输入。弹出框上出现的表格如下

<form name="form" method="post" onsubmit="return validateForm('<?php echo $download_key ?>')"> 
 <div style="width:530px;">
     <input style="display:none; height:25px;" id="downloadkey" name="downloadkey" type="text" />
     <input style="display:none;" type="submit" id="submit" name="submit" value="<?php echo $variable['QUESTION_BUTTON']['value']?>"/>
  </div>
</form>

有任何想法吗 ?

谢谢

4

2 回答 2

0

你应该session_start()在页面加载的开头有一个

编辑:改变了一点

session_start();

//check if key has already been seen:

if(isset($_SESSION['download_key']) && $_SESSION['download_key'] != null ...

// then if not check if the key is submitted

else if ( isset($_POST['popup']) ... // and other checks

   // set session variable
   $_SESSION['download_key'] = $key;

else

   // load the ask for key page
于 2012-04-18T10:35:54.353 回答
0

设置一个会话变量,并检查它是否存在,因为它将在后续的页面加载中,然后跳过弹出窗口等。

<?php 
    session_start();
    if ($download_key != null && !isset($_POST['popup'])) {
       if ($_SESSION['key_ok']!=true) {  //you should check if it's set first with isset()
          echo '<script type="text/javascript">';
          echo '$(document).ready(function(){';
          echo 'loadPopup();';
          echo '});';
          echo '</script>';
       }
       if (key_is_correct) {$_SESSION['key_ok']=true}
    } 
?>
于 2012-04-18T10:37:49.227 回答