2014-09-20 105 views
0

我正在嘗試製作一個網頁,要求用戶在頁面加載前提供密碼提示。一旦輸入正確的密碼,頁面將繼續加載。如果輸入的密碼不正確,它會持續詢問用戶密碼,直到他們得到正確的密碼。該網頁目前不需要輸入密碼並直接進入該頁面。頁面加載之前檢查密碼

HTML:

<html> 
<head> 
<title>Password Page</title> 
<script type="text/javascript" src="password.js"></script> 
</head> 
<body onload="passwordCheck()"> 
<h1>How'd you know the password?</h1> 
</body> 
</html> 

的JavaScript:

// Password: ilikepie 
function passwordCheck(){ 
var password = prompt("Please enter the password."); 

if (password.value=="ilikepie"){ 
window.alert("Password correct!"); 
else{ 
while(password.value !="ilikepie"){ 
window.alert(password);} 
+3

我希望這只是一個練習,並不是爲了讓任何人遠離。 – Gary 2014-09-20 21:51:58

+0

那麼,你已經把你的JavaScript鉤到了'onload'上,所以它不會運行,直到頁面加載完成後纔會運行,因爲這就是你所要做的。我認爲還有更嚴重的問題。 – 2014-09-20 21:55:02

+1

語法錯誤也沒有幫助。我會建議通過縮進代碼塊來更好地佈置你的javascript。然後你可以更好地理解它實際上在做什麼。 – Rhumborl 2014-09-20 21:55:13

回答

2

設置一個登錄頁面和目標頁面。登錄頁面應提示輸入密碼,如果正確,則將window.location更改爲實際頁面。

function passwordCheck(){ 
    var password = prompt("Please enter the password."); 
    if (password==="ilikepie"){ 
     window.location="realpage.html"; 
    } else{ 
     while(password !=="ilikepie"){ 
      password = prompt("Please enter the password."); 
     } 
     window.location="realpage.html"; 
    } 
} 
window.onload=passwordCheck; 

你實際上可以擺脫第一次檢查,並使用while循環。這樣做,正如我們老師所說,留下來作爲一個練習。

注意關於這個不提供任何安全性的意見。至少有兩個原因,這是不安全的。首先是任何知道「查看源代碼」的人都可以看到密碼。第二個是,一旦知道realpage.html的URL,可以直接導航到它,繞過密碼挑戰。

我假設你是在做這個練習,現在你有一些沒有錯誤的執行,你會從中學習。最簡單的網絡有效密碼協議是HTTP Basic Access Authentication。當你從這個練習中學到了所有東西時,請閱讀基本訪問認證。