2012-04-18 107 views
0

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

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

立即下载关键是数据库列和弹出是当窗体上的弹出框提交时设置的隐藏输入。 弹出框上显示的窗体为

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

任何想法?

感谢

+0

oop这应该是一个答案。 – craniumonempty 2012-04-18 10:33:53

+1

只是为了检查 - 你说“当用户来到网站上隐藏其余内容的页面顶部弹出框apears” - 是一个java弹出?如果他们禁用java会发生什么 - 他们会看到你的整个页面,而不需要代码... – Laurence 2012-04-18 10:43:52

+0

是的这是一个JavaScript,如果他们禁用JavaScript他们不能看到任何东西bcz每一件事都基于javascript – 2012-04-18 10:47:20

回答

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

Didn#得到你的观点: ( – 2012-04-18 10:46:08

+0

)在第一个if块中,检查是否在会话中设置了download_key,如果是,则加载普通页面。如果您知道会话未设置或有效,则检查post是否设置为然后检查密钥是否有效,并设置会话变量并加载页面,如果你点击最后一个,他们没有有效的会话并且没有提交有效的密钥,因此加载一个页面询问下载密钥 – craniumonempty 2012-04-18 10:55:07

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

你的意思是当用户提交表格时,我在会话中设置了密钥? – 2012-04-18 10:42:03

+0

当你输入并接收到正确的密钥时,你需要某种标识符。你如何做到这一点取决于你,你可以使用coo kies,本地存储或其他任何东西浮在你的船上,但在会话中设置一个简单的变量就足够了,如果会话重新启动,密钥将不得不再次发送。具体如何以及在何处设置会话变量取决于您的代码,但是在发送表单之后需要设置它,并且您必须在显示或未显示弹出窗口之前检查它是否设置正确对于关键字,它显示在第一页的页面上。 – adeneo 2012-04-18 11:19:01