【问题标题】:Javascript Password Submit - FormJavascript 密码提交 - 表单
【发布时间】:2012-08-13 02:35:01
【问题描述】:

我正在尝试为表单设置密码。我基本上希望有人在密码字段中输入密码并点击提交,如果密码正确,它会将他们重定向到同一窗口中的 buybutton.php。如果密码不正确,则会弹出一个 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>

【问题讨论】:

  • 希望您不要依赖它来获得任何真正的安全性。
  • 仅供参考,HTML 无效:它是 &lt;head&gt;&lt;/head&gt; &lt;body&gt;&lt;/body&gt;。你不应该将&lt;head&gt; 嵌套在&lt;body&gt; 中。
  • 是的@j08691,这不一定是超级安全的事情,这只是我们正在进行的一个有趣的小促销活动,所以如果他们看到密码并不是什么大不了的事。哈哈,这样肯定没效果……

标签: javascript html forms passwords


【解决方案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。

但我不是专家,如果你想这样做,你应该提出另一个问题。

【讨论】:

  • 非常感谢。为此,如果有人查看源代码,这没什么大不了的。这是我们正在做的真正快速的促销活动,我们通过它为人们提供的只是一个小折扣。我会复习一下我的服务器端密码授权,因为我相信这将是我将来需要的东西。感谢您为我指明正确的方向。
【解决方案2】:
passwd = this.document.giftForm.pass.value; 

导致错误尝试

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

在 window.open ('buybutton.php','_self',false) 之后,你也错过了 ;

【讨论】:

    【解决方案3】:

    这应该可以工作

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

    【讨论】:

      【解决方案4】:

      Oriol 和 Rajeev 的回答是正确的。

      或者,您可以这样做:

      改变

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

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

      【讨论】:

      • 您的代码将无法工作,因为输入字段中没有“名称”属性
      • 我真的很抱歉,你的代码运行良好,但我可以把所有的责任都归咎于 oo jQuery,我们实际上忘记了核心 javascript
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      相关资源
      最近更新 更多