我在项目中使用弹出框的功能。当用户访问该站点时,页面顶部会弹出一个弹出框,隐藏其余内容。在该弹出窗体中,用户必须提供下载密钥。如果用户有钥匙他可以前进,否则他看不到任何其他东西。当用户提供密钥时,他进入主页面。 现在的问题是,一旦用户在提供密钥后进入主页面,当他再次点击标题时,页面将被重新加载并再次弹出窗体。如果某个用户已经提供了下载密钥,我该如何防止它再次出现。我使用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>
有什么想法吗?
由于
答案 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}
}
?>