为Web登陆添加验证码功能

在这里插入图片描述
大家好,才是真的好。几天没见,很是想念。首先,我觉得应该换换文首的动图,但我居然没找到我新做的动图——可能我还没做吧。其次,上周新闻写得很多,这周我们就来点硬货。今天我们写写Web登陆页怎么加验证码功能。对,和标题是一样的,就算是点题。

嗯,没有分割线,但以下为严肃的技术内容。

在Domino中开启了会话验证,并创建了Domcfg.nsf数据库,Web验证登陆时便会出现以下表单界面:
在这里插入图片描述
在此基础上,我们加了一个验证码,效果如下:
在这里插入图片描述
如不输入验证码或验证码错误,当我们点击登陆按钮,则会出现相应的提示,比如“请您输入验证码”,如下图:
在这里插入图片描述是不是已经实现了验证码的功能?好,今天我们的内容就到此结束。

但,其实还没有,这只是我实现的功能,你们还没有实现。

关于怎么创建domcfg.nsf我们不说,直接看图
在这里插入图片描述
图很大,应该看得很清楚。另外的步骤是开启Domino中的Web会话验证,这个就真不截图了。

我们继续回来主线,打开domcfg.nsf数据库之后,找到表单$$LoginUserForm双击打开
在这里插入图片描述
在表格中多追加两行,然后添加

和 ,用来显示验证码和提示的文字信息;另外,把提交按钮改为标签,最后效果如下图所示:
在这里插入图片描述
别忘了,如果提交按钮没了,系统可能会自动生成一个按钮放到左下角,所以我们得注释掉这个按钮,办法是写上 ,然后选择"文本"菜单->“内置HTML”,效果如下图:
在这里插入图片描述
重头戏来了,我们在JS Header中要添加生成验证码的JS代码,如下图
在这里插入图片描述
详细代码如下:

//页面加载时,生成随机验证码
    //生成验证码的方法
    function createCode(length) {
        var code = "";
        var codeLength = parseInt(length); //验证码的长度
        var checkCode = document.getElementById("checkCodeChar");
        所有候选组成验证码的字符,当然也可以用中文的
        var codeChars = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
        'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'); 
        //循环组成验证码的字符串
        for (var i = 0; i < codeLength; i++)
        {
            //获取随机验证码下标
            var charNum = Math.floor(Math.random() * 62);
            //组合成指定字符验证码
            code += codeChars[charNum];
        }
        if (checkCode)
        {
            //为验证码区域添加样式名
            checkCode.className = "code";
            //将生成验证码赋值到显示区
            checkCode.innerHTML = code;
        }
    }
    //检查验证码是否正确
    function validateCode()
    {
        //获取显示生成的验证码
        var checkCode = document.getElementById("checkCode").innerHTML;
        //获取输入的验证码
        var inputCode = document.getElementById("inputCode").value;
        //console.log(checkCode);
        //console.log(inputCode);
        if (inputCode.length <= 0)
        {
            alert("请输入验证码!");
            return false
        }
        else if (inputCode.toUpperCase() != checkCode.toUpperCase())
        {
            alert("验证码输入有误!");
            createCode(4);
            return false
        }
        else
        {
           return true
        }       
};

//登陆时调用
function login()
{
var thisform=document.forms[0];

if(thisform.Username.value=="") {
thisform.Username.focus();
alert("请您输入用户名");
} else if(thisform.Password.value=="") {
thisform.Password.focus();
alert("请您输入密码");
}
else if(thisform.inputCode.value==""){
alert("请您输入验证码");
}else {
thisform.submit();
}
}

代码是够长的,不过只需要粘贴复制,所以特别简单。

还有一个步骤就能看到效果,便是在表单的onload事件中写上"createCode(4)";如果要创建6位验证码,就请写createCode(6),但如验证码太长,会被用户打——这样,表单加载时生成验证码;
在这里插入图片描述
还有把HTML Body Attributes事件中的代码清干净,不用问为什么,你试试就知道。听人劝,吃饱饭。
在这里插入图片描述
好了,摩拳擦掌,现在可以看看效果了。
在这里插入图片描述
嗯,不错,但有点丑,还得加点样式进去。把下列样式表加到表单上,内置为HTML,如下图:
在这里插入图片描述
CSS样式也贴给大家

<style>
    .code
    {
         font-family:Arial;
         font-style:italic;
         color:blue;
         font-size:30px;
         border:0;
         padding:2px 3px;
         letter-spacing:3px;
         font-weight:bolder;            
         float:left;           
         cursor:pointer;
         width:100px;
         height:30px;
         line-height:30px;
         text-align:center;
         vertical-align:middle;
         background-color:#D8B7E3;
     }
     span {
        text-decoration:none;
        font-size:12px;
        color:#288bc4;
        padding-left:10px;
    }

    span:hover {
        text-decoration:underline;
        cursor:pointer;
    }
</style>

好看一点的效果就出现了
在这里插入图片描述
这种简单的基于JavaScript的验证码方式是不是很容易实现?你也许可以做得更好,也许——还做不出来。

最后,还有一个彩蛋,那就是我共享了一篇Notes Domino为什么这么特别的PPT,有兴趣可下载https://pan.baidu.com/s/1DrFaxMAqa0Fh22cFBVZLxw

好了,今天我们就写到这里,下面真的没有内容了。但请继续保持关注。

更多精彩内容请关注微信公众号“协作者”

原文地址:https://mp.weixin.qq.com/s/krGDyi-7VU70c4yEXRZOTg

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对你的两个问题,我分别回答如下: 1. web项目添加验证码功能 为了增强网站的安全性,可以在网站的登录、注册、评论、留言等操作中添加验证码功能。一般来说,验证码是由一张图片和一个文本框组成的,用户需要在文本框中输入图片中显示的文字或数字,以证明自己是人而不是机器。以下是一些实现验证码的方法: - 使用第三方验证码服务,如Google reCAPTCHA、腾讯防水墙等。 - 使用开源的验证码库,如Kaptcha、JCaptcha等。 - 自己编写生成验证码的代码。 2. web项目确认密码操作和判断密码强度 在网站的注册、修改密码等操作中,一般都需要用户输入密码两次来确认密码是否正确。可以通过以下方式来实现: - 在前端页面中添加两个密码输入框,分别为“密码”和“确认密码”。 - 在后端代码中,判断这两个密码是否相同,如果相同则表示输入正确,否则提示用户重新输入。 除了确认密码外,还可以在密码输入框旁边添加一个密码强度提示,来告诉用户输入的密码强度如何。一般来说,密码强度可以根据以下因素来判断: - 长度:密码长度越长,强度越高。 - 复杂度:密码包含数字、字母、符号等多种字符类型,强度越高。 - 可预测性:密码不能是常用的、容易被猜测的字符串,如“123456”、“password”等,强度越高。 可以通过使用正则表达式来判断密码是否符合要求,并且根据不同的条件给出不同的提示信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值