2012-04-18 101 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