2012-08-16 64 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