2012-04-18 18 views
0

私のプロジェクトでは、ポップアップボックスの機能を使用しています。ユーザーがサイトに来ると、残りのコンテンツを隠すページの上部にポップアップボックスが表示されます。そのポップアップフォームでは、ユーザはダウンロードキーを与えなければならない。ユーザーがキーを持っていれば、それ以外の場合は進むことができます。そうでなければ、何も見えません。ユーザーがキーを入力すると、メインページに移動します。 問題は、ユーザーがキーを提供した後にメインページに来ると、ヘッダーを再度クリックしてページが再度読み込まれ、ポップアップフォームが再び表示された場合です。一部のユーザーがすでにダウンロードキーを与えている場合、どうすればそれを再び防止することができますか?私はコードイグナイタで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> 

任意のアイデアとしてありますか?あなたはpageload

EDITの先頭にsession_start()を持っている必要があり

おかげ

+0

oopそれは答えになるはずだった。 – craniumonempty

+1

ちょうど確認する - あなたは "ポップアップボックスは、ページの上部にコンテンツの残りの部分を隠して表示されるサイトに来る"と言う - それはJavaのポップアップですか?彼らはJavaを無効にするとどうなりますか?コードを必要とせずにページ全体が表示されます... – Laurence

+0

はい、これはjavascriptを無効にするとjavascriptです。何も表示されませんbcz javascriptに基づくすべてのもの –

答えて

0

は:

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# ( –

+0

)最初のif-block内で、セッションにdownload_keyが設定されているかどうかを確認し、そうであれば通常のページを読み込みます。セッションが設定されていないことがわかっている場合、キーが有効かどうかチェックし、セッション変数を設定してページをロードします。最後のページをヒットした場合、有効なセッションがなく、有効なキーを送信していないので、ダウンロードキーを要求するページをロードします。 – craniumonempty

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

ユーザーがフォームを送信したときに、セッション中にキーを設定することを意味しますか? –

+0

正しいキーがすでに入力され受信されていれば、何らかの識別子が必要です。あなたのボートを浮かべていますが、セッション内に単純な変数を設定するだけで十分です。セッションが再開された場合は、キーを再度送信する必要があります。セッション変数を設定する方法と場所はコードによって異なりますが、フォームの送信後に設定する必要があります。ポップアップを表示する前に正しく設定されているかどうかを確認する必要がありますキーのために、それは最初のpageloadで示すように。 – adeneo

関連する問題