页面加载时弹出框

时间:2012-04-18 10:27:53

标签: php javascript jquery codeigniter

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

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

downlaod键是数据库列,弹出窗口是在弹出框中提交表单时设置的隐藏输入。 弹出框中显示的表单为

<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>

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:0)

你应该在pageload的开头有一个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

答案 1 :(得分: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}
    } 
?>