【问题标题】:Simple JavaScript captcha using random array [closed]使用随机数组的简单 JavaScript 验证码
【发布时间】:2012-01-24 13:21:52
【问题描述】:

我创建了一个简单的 Javascript Captcha,但目前这些值是随机生成的,但我只想从数组中获取值(想随机化这两个数组),请检查我的代码我想使用简单的 Javascript 来执行此操作,没有依赖也请修复函数 validate()。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<script type="text/javascript">

function myCaptcha() {
var leftnum =[5, 10, 15, 20];
var rightnum =[2, 4, 6, 8];

var leftnum = Math.floor(Math.random()*11);
var rightnum = Math.floor(Math.random()*11);


var tolnum = leftnum + rightnum ;

document.getElementById("sh").innerHTML = leftnum + " + " + rightnum;

}

function validate() {
    var captchanow = document.getElementById("captcha");

    if (captchanow != "") {
    alert("Please enter a captcha");    
        return false;
    }
    else if(captchanow == tolnum) {
        alert("wrong captcha entered"); 
        return false;
    }
    else {
        form.submit
    }
    return true;

}

</script>
</head>

<body onload="myCaptcha()">

<form action="" method="post" onsubmit="return false;">
  <p>Captcha :
  <input name="captcha" type="text" id="captcha" value="" />

  <label id="sh" value=""></label></p>
  <p>
    <input type="submit" name="button" id="button" value="Submit" onclick="validate()"/>
  </p>
</form>
</body>
</html>

【问题讨论】:

  • 这不是一个“请[sic]修复我的代码”网站。

标签: javascript


【解决方案1】:

我强烈建议您不要使用 JavaScript 验证码,因为 它会完全删除验证码的要点,这不是机器可读的。

相反,我建议您切换到 reCAPTCHA 之类的内容。

使用 JavaScript 验证码只会让您的用户感到不安,而垃圾邮件机器人可能会闭着眼睛解决这个问题 [象征性地]。

【讨论】:

  • 是的,这是 ryt 但我的问题没有解决,我想从我的数组变量中获取随机数。只需将其视为一个问题。
【解决方案2】:

首先,Javascript CAPTCHA 完全没有意义,因为您要停止的机器人不会在页面中运行 Javascript。

无论如何,这就是您从数组中挑选项目的方式:

var leftnums =[5, 10, 15, 20];
var rightnums =[2, 4, 6, 8];

var leftnum = leftnums[Math.floor(Math.random() * leftnums.length)];
var rightnum = rightnums[Math.floor(Math.random() * rightnums.length)];

要获取输入字段的值,请使用value 属性:

var captchanow = document.getElementById("captcha").value;

要检查两个数字是否不同,请使用!= 运算符,并将字符串解析为整数值:

else if(parseInt(captchanow,10) != tolnum) {

【讨论】:

  • 谢谢我没有找到这个“leftnums[Math.floor(Math.random() * leftnums.length)];”任何地方让我检查一下
  • 你不会在任何地方找到它,其中包含你自己的个人变量名。你可以从基本原则中推断出来。
  • @user1167075:很抱歉造成混乱; “这就是你的方式......”我并不是说你当前的代码包含它,我的意思是你可以使用代码来做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 2015-06-14
相关资源
最近更新 更多