2012-08-16 63 views
0

我想設置一個表單的密碼。我基本上希望有人在密碼字段中輸入密碼並點擊提交,如果密碼正確,它會將它們重定向到同一個窗口中的buybutton.php。如果密碼不正確,會彈出一個JavaScript警告,提示'密碼錯誤'。我試着寫出Javascript,但點擊按鈕時沒有動作發生。我在下面的代碼中做了什麼錯誤?謝謝您的幫助!Javascript密碼提交 - 表格

<!DOCTYPE html> 
<body width="950" height="300" style="background-image:url('giftcard_bg.jpg');"> 
<head> 
<SCRIPT LANGUAGE="JavaScript"> 
    function goForit() { 
     var passwd; 
     passwd = this.document.giftForm.pass.value; 
     if(passwd=="samsamsam"){ 
     window.open ('buybutton.php','_self',false) 
     } 
     else{ 
     alert('Password wrong'); 
     } 
    } 
</SCRIPT> 
</head> 


<div style="position:absolute; top:150px; left:285px; text-align:center;"> 
    <form id="giftForm">   
     <input type="password" id="pass" placeholder="Enter Secret Code" style="font-size:150%;"/> 
     <br /> 
     <input type="button" onClick="goForit()" value="Submit" style="font-size:150%; margin-top:15px;" />     
    </form> 
</div> 

</body> 
</html> 
+7

希望你不依賴於任何真正的安全。 – j08691 2012-08-16 17:20:34

+2

僅供參考,HTML無效:它是''。你不應該在''內嵌入''。 – JJJ 2012-08-16 17:28:26

+0

是啊@ j08691,它不一定是一個超級安全的東西,它只是一個有趣的小促銷,我們正在運行,所以如果他們看到密碼並不是什麼大事。哈哈,這絕對不會對那個有效... – MillerMedia 2012-08-16 19:40:59

回答

1
passwd = this.document.giftForm.pass.value; 

導致錯誤嘗試

passwd = document.getElementById('pass').value; 

您也在window.open後缺少;('buybutton.php','_self',false)

+0

尾隨';'是一種很好的做法,但在JavaScript中是可選的。 – JJJ 2012-08-16 17:38:19

+0

我知道,它可以用任何方式,只是指出來。 – Zac 2012-08-16 17:39:17

+0

謝謝,作品完美。 – MillerMedia 2012-08-16 19:42:27

1

您應該使用的document.getElementById('pass').value代替this.document.giftForm.pass.value

function goForit() { 
    var passwd; 
    passwd = document.getElementById('pass').value; 
    if(passwd=="samsamsam"){ 
    window.open ('buybutton.php','_self',false) 
    } 
    else{ 
    alert('Password wrong'); 
    } 
} 

字的警告:

但要注意!每個人都可以看到源代碼並找到密碼!

取而代之,您應該將表單發送到服務器,並在服務器端檢查它是否正確。如果它是正確的,將用戶重定向到buybutton.php,但向他發送一個授權他進入該頁面的cookie。該頁面應該檢查他是否擁有該cookie。

但我不是專家,如果你想要你提出另一個問題。

+0

爲什麼是負面投票? – Oriol 2012-08-16 17:50:32

+0

非常感謝。爲此,如果有人查看源代碼,這不是什麼大問題。這是我們正在進行的一項真正的快速升級,只是我們通過它給予人們的一小筆折扣。我會刷新我的服務器端密碼授權,因爲我相信這將是我將來需要的東西。感謝您指點我正確的方向。 – MillerMedia 2012-08-16 19:43:45

0

這應該工作

function goForit() { 
     var passwd = document.getElementById("pass").value; 
     if(passwd=="samsamsam"){ 
     window.open ('buybutton.php','_self',false) 
     } 
     else{ 
     alert('Password wrong'); 
     } 
    } 
0

奧里奧爾和拉傑夫的答案是正確的。

或者,你可以這樣做:

變化

passwd = this.document.giftForm.pass.value; 

passwd = document.forms['giftForm'].pass.value; 
+0

您的代碼將無法使用輸入字段中沒有「名稱」屬性 – 2012-08-16 17:40:52

+0

在哪個瀏覽器中不起作用?你試過了嗎? – 2012-08-16 17:45:32

+0

這裏是我的jsfiddle鏈接http:// jsfiddle。淨/蘇__/3BckZ/ – 2012-08-16 17:48:52