2017-11-20 13 views
0

私は自分のサイトでパスワードを有効にするために以下のスニペットを書いていますが、ブラウザの別のタブに移動するとパスワードプロンプトが消えてしまいます。他のタブに移動するとjavascriptプロンプトウィンドウが消える

function passWord(title) { 

     var pwd = prompt(title); 

     switch (pwd) { 
     case '2017': true; 
      break; 

     case null: passWord('Access Denied - Password Incorrect, Please Try Again.'); 
      break; 

     default: passWord('Access Denied - Password Incorrect, Please Try Again.'); 
     } 
    } 

私はbodyタグでこの関数を呼び出しています。

<body onload="passWord('Please enter password here')"> 
+2

正しい方法はサーバーのパスワード保護されたデータをサーバーから安全に作成することです。クライアント側のJavaScriptはセキュリティではありません。 –

+0

ありがとう@CelebBlack。私はちょうど短時間の解決策を探していますが、あなたは絶対に正しいです。 –

答えて

0

あなたはこの方法で試すことができます。@Calebブラックのコメントとして

<style>#screen {display: none;}</style> 
<body onload="passWord();"> 
    <div id="welcome"> 
    <h1>Welcome Page</h1> 
    </div> 
    <div id="screen"> 
    <h1>Unique Page</h1> 
    </div> 
    <script> 
    function passWord() { 
     var welcome = document.getElementById("welcome");  
     var screen = document.getElementById("screen"); 
     var pwd = prompt("Enter your password", "TYPE HERE"); 
     switch(pwd) { 
     case "2017": 
      screen.style.display = "block"; 
      welcome.style.display = "none"; 
     break; 
     default: 
      screen.style.display = "none"; 
      welcome.style.display = "block"; 
     } 
    } 
    </script> 
</body> 

を - これは、セキュリティ上の問題であれば、このもののためのPHPを使用した方が良いでしょう。がんばろう!

+0

@AMeshuあなたの関数がプロンプトイベントの消失の問題をどのように解決するかは分かりません。少し詳しく教えていただけますか? –

+0

別のアプローチです:ユーザーが正しいパスワードを入力しない限り、コンテンツを非表示にします。 –

0

ユーザーが戻って自分のページに来るとき見にfocusイベントを使用することができます。

var didEnterPassword = false; 

window.addEventListener("focus", function(e){ 
    if(!didEnterPassword && prompt("hello again") == "my secret password"){ 
     didEnterPassword = true; 
    } 
}) 

は、彼らが起動したときに誰もがmy secret passwordを得ることができますので、これは信じられないほど安全ではないことにかかわらず、覚えておいてくださいあなたのコードを掘り下げる

関連する問題