javascript实现锁定网页,JS模仿手机端九宫格登录
分类:新闻中心

您可能感兴趣的文章:

  • JS模仿手机端九宫格登录功能实现代码
  • javascript+canvas制作九宫格小程序
  • js+html5实现手机九宫格密码解锁功能
$("#gesturepwd").GesturePasswd({
backgroundColor: "#252736", //背景色
color: "#FFFFFF", //主要的控件颜色
roundRadii: 25, //大圆点的半径
pointRadii: 6, //大圆点被选中时显示的圆心的半径
space: 30, //大圆点之间的间隙
width: 240, //整个组件的宽度
height: 240, //整个组件的高度
lineColor: "#00aec7", //用户划出线条的颜色
zindex: 100 //整个组件的css z-index属性
}); 

有什办法可以设置密码锁定电脑,只有自己可以解锁?

曾经看过一部印象深刻的电影,里面有一个情报部门人员在使用电脑时需要指纹识别后才有电脑的使用权,那时便感觉挺稀奇的,在以后才知道这是由于事先在电脑中存放了该用户的指纹,当用户将手掌放在指纹识别设备上,所扫描的指纹将通过专门的软件与事先存放在电脑指纹数据库中的指纹进行比较,当指纹达到一致时用户才能拥有电脑的使用权。这类技术现在已应用在IBM、富士通等品牌的笔记本电脑上,来保护数据的安全。而对于普通台式机却显得有些“小题大做”了,不过利用小小的摄像头来为电脑把“大门”却是既廉价又实用的方法,实现的过程也很容易。 如果你有摄像头,那么配合一款名为“Alparysoft VideoLock for Webcam”(下载地址: www.alparysoft.com/file.php?id=47)的软件即可让你的摄像头牢牢的为你看住“大门”了。从此也不必为别人窃取了密码而担心,因为你本人就是系统用户的“密码”。1.设置解锁帐户和密码 当下载并安装好该软件后,我们将摄像头连接到电脑上并运行桌面上所创建的“Alparysoft Video Lock”快捷图标,这时将打开“VideLock:The Tip Of The Day”使用技巧提示窗口,如果你希望在使用中掌握,那么直接点击“Close”按钮,之后将打开“Enter Your Name and Password”窗口。这里要在“User Name”和“Password”处分别设置软件使用者的用户名和密码小提示:设置这个密码的作用是为防止摄像头因意外故障而不能识别你时,则可以通过强制方法为电脑进行解锁,在下文中我们也将会详细介绍如何解锁。 如果摄像头已连接好,那么最后点击“OK”按钮即可打开软件的操作界面。如果出现没有检测到摄像头的提示,那么将不能正常打开软件操作界面窗口,可以重新将摄像头接口与电脑连接,如果不行就调换一个USB接口。另外重新安装或升级摄像头的驱动也可以解决一些摄像头的兼容性问题。2.设置摄像头侦测精度 在软件的操作界面中点击“Training”后,在当前的视频窗口我们就会看到一个黄色的方框开始校准自己的脸部,为了让软件在识别过程中获得较高的安全系数,我们还需要设置一下摄像头的侦测精度,具体方法可在右侧窗口“Calibrate”栏下调整识别的精度。这里我们会看到“0”、“1”和“2”三个刻度,其中如果将滑块移到“0”处则表示最高的识别精度,虽然安全但不容易被识别;移至“2”处表示最低的识别精度,虽然容易识别但安全系数最低,移到“1”处表示识别精度和安全系数均为中,因此想获得较合理的精度范围,我们可以将小滑块移到“1”刻度偏左处如果视频画面效果不好,例如出现视频窗口花屏、显示速度缓慢、以及视频画面为黑白或光线不足等问题,也将会严重影响到以后侦测的效果。所以这里我们针对不同的问题给出一些解决方法:(1)如果视频画面显示为花屏,这可能是由于安装摄像头的驱动程序与显卡驱动程序不兼容而造成的,这时需要升级显卡或摄像头的驱动程序。另外也有可能是摄像头与其它正在使用的设备(例如数码相机)产生了冲突,这时就需要停用容易引起冲突的设备。(2) 如果视频刷新速度缓慢,则可能是由于电脑性能偏低造成的,需要对系统进行适当优化,如果打开了太多程序或感染了病毒也可能导致系统性能降低,......余下全文>>  

   

    

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>javascript实现系统屏幕保护效果(锁定网页)</title>
</head>

<body>
<div id="dvContent">内容<br />内容<br />内容<br />内容<br />内容<br />内容</div>
<div id="dvPassword" style="display:none">输入密码:<input type="password" id="txtPwd" /><input type="button" value="确定" onclick="check()"/></div>
<script>
  if (document.cookie.indexOf('lock=1') != -1) ShowContent(false);
  var delay = 10 * 1000,timer;//10s后锁定,修改delay为你需要的时间,单位毫秒
  function startTimer() {
    clearTimeout(timer);
    timer = setTimeout(TimerHandler, delay);
  }
  function TimerHandler() {
    document.cookie = 'lock=1';
    document.onmousemove = null;//锁定后移除鼠标移动事件
    ShowContent(false);
  }
  function ShowContent(show) {
    document.getElementById('dvContent').style.display = show ? 'block' : 'none';
    document.getElementById('dvPassword').style.display = show ? 'none' : 'block';
  }
  function check() {
    if (document.getElementById('txtPwd').value == '123') {
      document.cookie = 'lock=0';
      ShowContent(true);
      startTimer()//重新计时
      document.onmousemove = startTimer; //重新绑定鼠标移动事件
    }
    else alert('密码不正确!!');
  }
  window.onload = function () {
    document.onmousemove = startTimer;
    startTimer();
  }
</script>
</body>
</html>

 话不多说直接上代码:

win7系统 屏保运行后 电脑自动锁定 输入密码解锁 原隐藏程序又出现了 高分高人

在桌面上右键,打开个性化,进入屏保设置。可以选择关闭屏保,也可以取消打勾“在恢复时显示登录屏幕”。如图:

图片 1  

功能描述:打开一个网站的网页,过5分钟不动作,就会锁定...

   

                                 欢迎来到登录界面,请按一下提示完成登录
                             如果发现账号锁定,请进行验证解锁,祝你冲浪愉快[0m

功能描述:打开一个网站的网页,过5分钟不动作,就会锁定页面,隐藏内容容器,显示一个容器用于输入密码,输入正确的密码来解锁。锁定后即使用户刷新页面,还是保留原来的状态。如已经锁定的,需要继续锁定,否则显示内容。
 
示例代码如下,通过document.onmouseover来实现多少分钟没有动作,使用计时器来实现。

最近没有项目做,闲来无事写了一个小demo,特此分享到脚本之家平台,供大家参考下,本文写的不好还请各位大侠见谅!

javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果),javascript解锁

功能描述:打开一个网站的网页,过5分钟不动作,就会锁定页面,隐藏内容容器,显示一个容器用于输入密码,输入正确的密码来解锁。锁定后即使用户刷新页面,还是保留原来的状态。如已经锁定的,需要继续锁定,否则显示内容。
 
示例代码如下,通过document.onmouseover来实现多少分钟没有动作,使用计时器来实现。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>javascript实现系统屏幕保护效果(锁定网页)</title>
</head>

<body>
<div id="dvContent">内容<br />内容<br />内容<br />内容<br />内容<br />内容</div>
<div id="dvPassword" style="display:none">输入密码:<input type="password" id="txtPwd" /><input type="button" value="确定" onclick="check()"/></div>
<script>
  if (document.cookie.indexOf('lock=1') != -1) ShowContent(false);
  var delay = 10 * 1000,timer;//10s后锁定,修改delay为你需要的时间,单位毫秒
  function startTimer() {
    clearTimeout(timer);
    timer = setTimeout(TimerHandler, delay);
  }
  function TimerHandler() {
    document.cookie = 'lock=1';
    document.onmousemove = null;//锁定后移除鼠标移动事件
    ShowContent(false);
  }
  function ShowContent(show) {
    document.getElementById('dvContent').style.display = show ? 'block' : 'none';
    document.getElementById('dvPassword').style.display = show ? 'none' : 'block';
  }
  function check() {
    if (document.getElementById('txtPwd').value == '123') {
      document.cookie = 'lock=0';
      ShowContent(true);
      startTimer()//重新计时
      document.onmousemove = startTimer; //重新绑定鼠标移动事件
    }
    else alert('密码不正确!!');
  }
  window.onload = function () {
    document.onmousemove = startTimer;
    startTimer();
  }
</script>
</body>
</html>

   

              【1】修改密码                                             【2】找回密码

 js部分:

【3】解锁               【q】退出

请选择您要选择的操作:3

您可能感兴趣的文章:

  • javascript+canvas制作九宫格小程序
  • javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
  • js+html5实现手机九宫格密码解锁功能

   

                                 欢迎来到登录界面,请按一下提示完成登录
                             如果发现账号锁定,请进行验证解锁,祝你冲浪愉快[0m

图片 2

                                 您好,欢迎来到京东二货市场

       【1】登录              【2】注册                

 第一个九宫格

   

    
请选择您要操作的功能:2
请输入用户名:耿长学
请输入您的手机号:15111252591
验证码: Uess
请输入验证码:uess
您的账户密码是: 123456

    q.退出

    知识总结:

    1、os模块的使用,os.path.exists(file),学的知识要经常用,要经常写代码,只有通过不断的写代码,才会尝试用学到的知识,想方法,解决问题;

    2、验证的先后顺序学习,其实先验证谁都是可以的,就看循环放在哪里,谁先进行循环,次序问题,这个要根据具体实际要求;

    3、随机验证码random.choice()使用,列表extend()使用,这些平时都不怎么常用,关键的时候会发挥很大的作用;

    4、json文件的读取和写入,这个模块后续我还会单独测试,要自己在写代码的过程中发现问题,然后去测试,我想测试是否可以load()不是dump()进去的文件,并熟练使用方法,之前我一直以为dumps(mess)直接可以写到文件中,原来还需要f.write()进行写入,真他妈的天真,当然通过自己代码积累,而不是不练习,自己知识在进步中。

作业:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 知识: 1.循环的使用; 2.c...

<div>
<center><br><br>
<div id="gesturepwd"></div> 
<div id="gesturepsa" style="display:none"></div>
</center>
</div> 

   

                                 欢迎来到登录界面,请按一下提示完成登录
                             如果发现账号锁定,请进行验证解锁,祝你冲浪愉快[0m

html部分:

   

    
请输入你的用户名:耿长学
对不起,您输入的用户名已经注册,请重新输入!
请输入你的用户名:alexsb
请输入您的密码:123456
请再次输入密码:123456
请输入你的手机号:151116969251
对不起,您输入的手机号码有误,请重新输入!!
请输入你的手机号:15111696938
验证码:TC2A
请输入验证码:txas
您输入的验证码有误,请重新输入!
验证码:7wff
请输入验证码:7wff
恭喜你,注册成功!

    上面,注册了的用户是不能重新注册的,手机号有验证,密码有验证,并且默认注册都是未锁定的,这个函数里面有默认,用户是看不到的。

    3.解锁

    (1)修改密码


 首先我们先画出两个九宫格,一个用于登录和首次设置滑动密码使用,另个用于再次设置滑动密码,用于与第一次输入的滑动密码进行对比,判断两次密码是否一致

   

    

 效果如下:

   

                         欢迎来到解锁页面,请按照下面提示进行解锁
                          您可以选择找回密码,或者修改密码

这里我们可以获取客户在九宫格滑动的密码,将之取出来(即 passwd),我们将之与隐藏元素pass中的密码对比,如果一样这进入下一步,即登录成功。因为是dome所有密码我直接放在页面的元素中,在实际开发中不建议这样,最好在后台进行对比,如果要这样请加密之后操作。如果用户为第一次设置的话,我们调用upup方法

   

    
请输入您的用户名:耿长学
对不起,您输入的密码已经锁定,请联系管理员解锁!!!

    2.注册   


///加载第二个
function getur() {
$("#gesturepsa").GesturePasswd({
backgroundColor: "#252736", //背景色
color: "#FFFFFF", //主要的控件颜色
roundRadii: 25, //大圆点的半径
pointRadii: 6, //大圆点被选中时显示的圆心的半径
space: 30, //大圆点之间的间隙
width: 240, //整个组件的宽度
height: 240, //整个组件的高度
lineColor: "#00aec7", //用户划出线条的颜色
zindex: 100 //整个组件的css z-index属性
});
} 

                                 您好,欢迎来到京东二货市场

       【1】登录              【2】注册                

在用同样的方式画出第二个九宫格

   

    
请选择您要操作的功能:2
请输入用户名:user
对不起,您输入的用户没有注册!!!
请选择您要选择的操作:3

  我们将第二次设置的密码与第一次对比,如果一样我们就通过ajax将密码传到后台,进行密码保存操作。如果两次输入不一样我们就通过递归在将自己在调用一次进行对比,直至通过,当然你也可以设置3次不同重新设置什么的。

   

    

///没有设置过手势密码用户
function upup() {
///第一次设置
$("#gesturepwd").on("hasPasswd", function (e, passwd) {
$("#pass").text(passwd)
alert("请再次输入!");
getur();
$("#gesturepwd").hide();
$("#gesturepsa").show();
});
///第二次设置
Recursive();
}

   

              【1】修改密码                                             【2】找回密码

  由于功能很简单就不进行详解,如果有不明白或者要参考源码的请留言,我会编写一个dome与大家分享。

day1作业--登录接口,day1作业--

作业:编写登陆接口

  • 输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后锁定

    知识:

    1.循环的使用;

  2.continue,break在循环中中断的作用;

  3.文件的写入,读取;

  4.各基础知识的穿插应用

    一、程序架构图

图片 3

    二、程序流程图如下:

图片 4 

    三、具体代码及思路如下:

    1.导入模块,及主程序页面

import os,json,random

def main_show():
    '''进入主页展示'''
    login_message = '''
-------------------------------------------------------------------------------------------------
                                 您好,欢迎来到京东二货市场
-------------------------------------------------------------------------------------------------
       【1】登录              【2】注册                 【3】解锁               【q】退出
-------------------------------------------------------------------------------------------------
'''
    print(login_message)

    设置程序进入样式,告诉用户进去是什么样子,平台的功能,而不是进去啥都没有。程序要使用到os,json,random标准库。

    2.存储用户文件的读写

def test_file(file):
    '''
    验证存储用户的文件是否存在,不存在生成
    :param file: 文件名
    :return: 无返回值
    '''
    if os.path.exists(file):          #判断用户文件是否存在,不存在生成一个用户文件
        pass
    else:
        with open(file,"w+") as f:
            users = {}
            json.dump(users,f)

def read_file(file):
    '''
    从用户文件中读取用户列表,以方便进行验证
    :param file: 文件名
    :return: 返回读取的用户列表
    '''
    with open(file,'r+') as fr:
        users = json.load(fr)

    return users

def write_file(users,file):
    '''
    把修改后的用户列表重新写入进去
    :param users: 用户名列表
    :param file:  文件名
    :return: 无返回值
    '''
    with open(file,'w+') as fw:
        json.dump(users,fw)

    第一段函数是判断用户文件是否存在,如果不存在则生成一个用户文件,如果存在了则不生成,为什么要这样呢?防止如果用户文件存在,我们会使用"w+"打开文件的时候把里面的文件信息清空;如果不存在的话,我们就生成用户文件,并且使用json模块把一个空的用户字典写入文件中,方便下面读取添加用户信息。

    第二段函数是读取文件信息,并且以字典形式返回用户字典,这样,我们就可以在字典中操作用户信息了,字典的功能我们都会;另外把读取的功能封装到一个函数中,在后面我们经常会用到,比如用户唯一性验证;修改用户列表的时候都要打开文件。

    第三段函数是重新写入文件中,以"w+"的模式,清空之前的用户列表,重新写入进去,当我们修改用户信息的时候,都需要重新写进去。

    上面判断用户文件是否存在的时候,我们用到了os.path.exists(),这个是用来判断文件是否存在的,存在返回True,否则False。

    3.随机验证码生成

def random_code(length):
    '''
    随机验证码生成模块
    :param length: 验证码的长度,自己定义多长的验证码,开发人员自己定制
    :return: 返回生成的随机验证码
    '''
    codes = []
    for i in range(length):
        num = random.randrange(length)
        if i == num:
            code = random.randint(0,9)
            codes.append(str(code))
        else:
            capital_codes = list(range(65,91))     #小写字符随机验证码数字
            capital_codes.extend(list(range(97,123)))  #大写数字随机验证码数字
            tem_code = random.choice(capital_codes)   #random.choice()随机跳跳出一个元素,因为随机,不知道跳出那个
            codes.append(chr(tem_code))
    rand_code = "".join(codes)
    return rand_code

    上面代码是用来生成随机验证码的,length是随机验证码的长度,我们可以自己定义长度,验证码是由数字,大写,小写字母组成,是随机生成的,我们知道,大写字符是从:65-90,小写字母是从:97-122,我们先把这两个范围的数放到一个列表中,然后使用random.choice()从列表中随机挑选一个数字,然后进行转码,转换成字母形式, 这里要注意的是列表功能extend(),这个功能没有生成新的列表,如list1.extend(list2),是把list2中的元素扩展到list1中,改变list1。

    在这里,我们也用到了字符串中的拼接str.join(),由于把列表元素拼接成一个新的字符串。

    4.登录函数

def log_in(users):
    '''
    登录模块
    :param user: 用户名
    :param pwd: 密码
    :param users: 用户列表{"alex":[123456,"unlocked","15111252591"}
    :return: 无返回值
    '''
    flag = True
    while flag:
        user = input("请输入您的用户名:")
        if user in users.keys():
            '''判断用户名是否存在,存在之后验证是否锁定,如果锁定告诉要联系管理员解锁'''
            if users[user][1] == 'locked':
                print("对不起,您输入的密码已经锁定,请联系管理员解锁!!!")
                break
            '''我们知道,我们登录网站都是先验证用户名存在不存在,如果存在了,就输入密码,但是不会先验证密码,而是输入验证码
            ,验证码输入之后,验证验证码是否正确,如果验证码正确才会验证密码'''
            pwd = input("请输入您的密码:")
            '''输入验证码,并且先验证验证码是否正确,验证码输入是没有限制的,一直到你输入对位置'''
            while True:
                random_num = random_code(6)    #调用随机验证码生成函数,生成一个6位数的随机验证码
                print("验证码:",random_num)
                verification_code = input("请输入验证码:").lower()
                if verification_code == random_num.lower():
                    break
                else:
                    print("验证码输入有误,请重新输入:")
                    continue
            '''验证码验证完毕之后,该验证密码,密码和验证码不一样,密码是有输入次数限制的,密码只能输入三次'''
            try_num = 0
            while try_num < 3:
                if pwd == users[user][0]:
                    print("登录成功,欢迎来到京东二手市场!")
                    flag = False
                    break
                else:
                    if try_num != 2:
                        print("您输入的密码有误,你还有%s次锁定用户!" %(2-try_num))
                        pwd = input("请输入您的密码:")
                    else:
                        print("您输入的次数过多,账户已经锁定,请联系管理员解锁!")
                        users[user][1] = "locked"
                        flag = False
                        break
                    try_num += 1
        else:
            print("对不起,您输入的用户名没有注册!!!")
            break
    return users

    此函数是登录功能的核心,用户信息是以字典形式存储的{username:[pwd,unlocked,telephone]},首先让用户输入用户名,并验证用户名是否注册,没有注册是不能登录的;验证成功之后验证用户是否锁定,锁定也是不能登录的(如,我们去取款机,如果锁定的话,肯定是没有后续操作的);输入密码,密码输入之后不会立马验证,每个网站基本上都不会先验证密码,而是让用户先输入验证码,先进行验证码的验证,验证码输入是没有次数限制的,验证码验证成功之后,进行密码验证,如果密码输入成功,则登录成功;否则会有三次机会,这个是按照银行系统来的,如果没有连续输入三次错误,则后续还能在输入三次,当然没有银行那样时间限制,银行是隔天才重新回复三次机会,当天只有三次机会。如果三次都错误,则锁定密码。锁定之后就只能解锁之后才登录了。

    里面的新尝试,循环里面嵌套pwd = input("请输入您的密码:"),以前总是一根筋,如何先输入密码,输入之后先验证验证码,后验证密码,现在在验证密码的时候,重新在循环里面添加让用户输入密码的语句即可。

    5.注册模块

def register(status="unlocked"):
    '''
    进行注册,注册完成之后写入文件内部,默认都是没有锁定的
    :return: 无返回值,只是注册之后重新写入文件库
    '''
    message = '''
    ---------------------------------------------------------------------------------------------
                               33[34;1m 欢迎来到注册平台,请按照下面提示进行注册33[0m
    ---------------------------------------------------------------------------------------------
    '''
    flag = True
    while flag:
        username = input("请输入你的用户名:")
        flag = uniqueness_verification(username)
    ''''我们知道,密码一般是需要输入两次的,两次一直才算成功'''
    while True:
        pwd1 = input("请输入您的密码:")
        pwd2 = input("请再次输入密码:")
        if pwd1 == pwd2:
            break
        else:
            print("两次输入的密码不一致,请重新输入:")
    while True:
        telephone_num = input("请输入你的手机号:")
        if len(telephone_num) == 11:
            break
        else:
            print("对不起,您输入的手机号码有误,请重新输入!!")
    '''都输入完成之后,要存入到文件中'''
    '''注册验证码都是最后输入的,输入只需要正确就可以,没有说验证要在密码验证前面'''
    while True:
        random_num = random_code(4)
        print("33[31m验证码:%s33[0m" %random_num)
        input_num = input("请输入验证码:")
        if random_num.lower() == input_num.lower():    #统一转化为小写,这样就不用在意用户输入什么直接可以验证
            break
        else:
            print("您输入的验证码有误,请重新输入!")
    filename = "users_file"
    users = read_file(filename)   #读取之前文件中用户,进行添加
    users[username] = [pwd1,status,telephone_num]   #新增注册
    print("恭喜你,注册成功!")
    '''注册成功之后,写入文件'''
    write_file(users, filename)   #注册完成之后,重新写入文件

     注册模块的主题,首先展示注册模块的样式,接着让用户输入用户名,并进行唯一性验证,验证是否用户名已经被使用;接着输入密码两次,两次密码要一致,接着输入手机号,手机号码限定长度是11位;然后输入验证码;注册成功之后,打开文件,并且把新注册用户添加进去,重新写入用户文件。

    6.唯一性约束

def uniqueness_verification(username):
    '''
    用户名唯一性验证,我们知道,用户名是不允许重复的,其实手机号也有唯一性约束,但是我们知道,手机号总是经常改变,
    :param username: 用户名
    :return: 无返回值
    '''
    flag = False
    filename = "users_file"
    users = read_file(filename)
    if username in users.keys():
        print("对不起,您输入的用户名已经注册,请重新输入!")
        return True
    else:
        return flag

    上面代码是实现用户名唯一性的验证,我们知道,注册的时候要求用户名是唯一的。

    7.解锁功能

def unlock(filename):
    '''
    管理员进行解锁,正常来说只有管理员才能够解锁,这样就只能在添加控制条件了,不过也没关系,就当联系尝试了
    不过应该超级管理员都是在一个文件单独存放的,只有联系超级管理员才能够解锁,需要一些验证,才能登录超级管理员
    这里因为也没有太好的办法来交互了,就用户自己解锁,通过手机号,这个还是很多网站常用的找回密码的方法,只要修改了密码
    就当重新解锁了,支付宝呀,等在线都是这样操作的
    :param filename: 文件名
    :return:
    '''
    '''打开文件,读取用户信息'''
    users = read_file(filename)
    message = '''33[36;1m
    --------------------------------------------------------------------------------------------------
              【1】修改密码                                             【2】找回密码
    --------------------------------------------------------------------------------------------------
    33[0m'''
    print(message)
    flag = True    #循环开启和关闭的标志
    while flag:

        function_num = input("请选择您要操作的功能:")
        if not function_num in ['1','2']:
            print("您输入的功能有误,请重新输入!")
            continue
        username = input("请输入用户名:")   #判断用户名是否存在
        if username in users.keys():
            ''''通过手机号进行修改密码'''
            while True:
                telephone_num = input("请输入您的手机号:")
                if telephone_num == users[username][2]:
                    '''验证码验证'''
                    while True:
                        rand_num = random_code(4)
                        print("验证码:",rand_num)
                        tem_random_code = input("请输入验证码:")
                        if rand_num.lower() == tem_random_code.lower():
                            break
                        else:
                            print("您输入的验证码有误,请重新输入!")
                    break
                else:
                    print("您输入的手机号有误,请重新输入!")
            while True:
                if function_num == '1':
                    pwd1 = input("请输入你要修改的密码:")
                    pwd2 = input("请再次输入您要修改的密码:")
                    if pwd1 == pwd2:
                        print("密码修改成功!")
                        users[username][0] = pwd1
                        users[username][1] = "unlocked"
                        flag = False
                        break
                    else:
                        print("对不起,您两次输入的密码不一致,请重新输入!")
                        continue
                elif function_num == "2":
                    print("33[30m您的账户密码是:33[0m",users[username][0])
                    users[username][1] = 'unlocked'
                    flag = False
                    break
        else:
            print("对不起,您输入的用户没有注册!!!")
            break
    return users    #解锁成功之后,返回新的用户名表,并重写写入到文件中

    上面代码实现解锁功能,解锁里面有两种情况,一种是找回密码,一种是修改密码;找回密码我们是通过手机号来找回的,让用户输入注册手机号,并输入验证码,通过后台把原密码发送至用户手机;修改密码也是通过手机号,当然,用户登录成功之后,可以直接修改用户密码,这里没有实现;密码修改之后,要重新写入用户文件。修改用户文件信息都要通过读和写两步。

    验证码的验证:rand_num.lower() == tem_random_code.lower(),我们通过把验证码和用户名统一转化为大写或者小写,实现让用户无论输入什么,都统一进行转换比较,提升用户的体验度。

    8.各主菜单展示模块

 

def login_show():
    '''登录展示提醒'''
    show_message = '''
    -----------------------------------------------------------------------------------------------
                               33[34m  欢迎来到登录界面,请按一下提示完成登录
                             如果发现账号锁定,请进行验证解锁,祝你冲浪愉快[0m
    -----------------------------------------------------------------------------------------------
    '''
    print(show_message)

def register_show():
    '''
    注册展示页面,进行提醒
    :return:
    '''
    show_message = '''
    ----------------------------------------------------------------------------------------------------
                                  33[32;1m   欢迎来到注册页面,请按照以下提示完成注册 33[0m
    ----------------------------------------------------------------------------------------------------
    '''
    print(show_message)

def unlock_show():
    '''解锁页面展示'''
    show_message = '''33[33;1m
    ----------------------------------------------------------------------------------------------------
                         欢迎来到解锁页面,请按照下面提示进行解锁
                          您可以选择找回密码,或者修改密码
    ----------------------------------------------------------------------------------------------------
    33[0m'''
    print(show_message)

 

    上面的代码,主要是为了好看,让界面看起来顺眼,一目了然,让用户知道自己在哪里,在干什么。

    9.程序主体

if __name__ == "__main__":
    main_show()
    flag = True
    while flag:
        choice_num = input("请选择您要选择的操作:")
        if choice_num == '1':
            login_show()
            '''判断用户文件是否存在'''
            filename = 'users_file'
            test_file(filename)
            users = read_file(filename)
            users_message = log_in(users)
            write_file(users_message,filename)
        elif choice_num == '2':
            register_show()
            register()
        elif choice_num == '3':
            unlock_show()
            '''修改密码,解除锁定,我们知道,现在网络平台都是通过手机号自己解锁的,不过要通过验证码充值密码'''
            filename = 'users_file'
            users = unlock(filename)
            write_file(users,filename)
        elif choice_num == 'q':
            break
        else:
            print("对不起,找不到您输入编号的功能,请重新输入")
            continue

    上面代码就是把上面所有的函数串联到一起,主体其实很简单,就判断用户选择的是什么功能,具体操作都在之前的代码块里面,只需要调用传入参数即可。

    所有上面函数组合一起:

import os,json,random

def main_show():
    '''进入主页展示'''
    login_message = '''
-------------------------------------------------------------------------------------------------
                                 您好,欢迎来到京东二货市场
-------------------------------------------------------------------------------------------------
       【1】登录              【2】注册                 【3】解锁               【q】退出
-------------------------------------------------------------------------------------------------
'''
    print(login_message)

def test_file(file):
    '''
    验证存储用户的文件是否存在,不存在生成
    :param file: 文件名
    :return: 无返回值
    '''
    if os.path.exists(file):
        pass
    else:
        with open(file,"w+") as f:
            users = {}
            json.dump(users,f)

def read_file(file):
    '''
    从用户文件中读取用户列表,以方便进行验证
    :param file: 文件名
    :return: 返回读取的用户列表
    '''
    with open(file,'r+') as fr:
        users = json.load(fr)

    return users

def write_file(users,file):
    '''
    把修改后的用户列表重新写入进去
    :param users: 用户名列表
    :param file:  文件名
    :return: 无返回值
    '''
    with open(file,'w+') as fw:
        json.dump(users,fw)

def random_code(length):
    '''
    随机验证码生成模块
    :param length: 验证码的长度,自己定义多长的验证码,开发人员自己定制
    :return: 返回生成的随机验证码
    '''
    codes = []
    for i in range(length):
        num = random.randrange(length)
        if i == num:
            code = random.randint(0,9)
            codes.append(str(code))
        else:
            capital_codes = list(range(65,91))     #小写字符随机验证码数字
            capital_codes.extend(list(range(97,123)))  #大写数字随机验证码数字
            tem_code = random.choice(capital_codes)   #random.choice()随机跳跳出一个元素,因为随机,不知道跳出那个
            codes.append(chr(tem_code))
    rand_code = "".join(codes)
    return rand_code

def log_in(users):
    '''
    登录模块
    :param user: 用户名
    :param pwd: 密码
    :param users: 用户列表{"alex":[123456,"unlocked","15111252591"}
    :return: 无返回值
    '''
    flag = True
    while flag:
        user = input("请输入您的用户名:")
        if user in users.keys():
            '''判断用户名是否存在,存在之后验证是否锁定,如果锁定告诉要联系管理员解锁'''
            if users[user][1] == 'locked':
                print("对不起,您输入的密码已经锁定,请联系管理员解锁!!!")
                break
            '''我们知道,我们登录网站都是先验证用户名存在不存在,如果存在了,就输入密码,但是不会先验证密码,而是输入验证码
            ,验证码输入之后,验证验证码是否正确,如果验证码正确才会验证密码'''
            pwd = input("请输入您的密码:")
            '''输入验证码,并且先验证验证码是否正确,验证码输入是没有限制的,一直到你输入对位置'''
            while True:
                random_num = random_code(6)    #调用随机验证码生成函数,生成一个6位数的随机验证码
                print("验证码:",random_num)
                verification_code = input("请输入验证码:").lower()
                if verification_code == random_num.lower():
                    break
                else:
                    print("验证码输入有误,请重新输入:")
                    continue
            '''验证码验证完毕之后,该验证密码,密码和验证码不一样,密码是有输入次数限制的,密码只能输入三次'''
            try_num = 0
            while try_num < 3:
                if pwd == users[user][0]:
                    print("登录成功,欢迎来到京东二手市场!")
                    flag = False
                    break
                else:
                    if try_num != 2:
                        print("您输入的密码有误,你还有%s次锁定用户!" %(2-try_num))
                        pwd = input("请输入您的密码:")
                    else:
                        print("您输入的次数过多,账户已经锁定,请联系管理员解锁!")
                        users[user][1] = "locked"
                        flag = False
                        break
                    try_num += 1
        else:
            print("对不起,您输入的用户名没有注册!!!")
            break
    return users

def register(status="unlocked"):
    '''
    进行注册,注册完成之后写入文件内部,默认都是没有锁定的
    :return: 无返回值,只是注册之后重新写入文件库
    '''
    message = '''
    ---------------------------------------------------------------------------------------------
                               33[34;1m 欢迎来到注册平台,请按照下面提示进行注册33[0m
    ---------------------------------------------------------------------------------------------
    '''
    flag = True
    while flag:
        username = input("请输入你的用户名:")
        flag = uniqueness_verification(username)
    ''''我们知道,密码一般是需要输入两次的,两次一直才算成功'''
    while True:
        pwd1 = input("请输入您的密码:")
        pwd2 = input("请再次输入密码:")
        if pwd1 == pwd2:
            break
        else:
            print("两次输入的密码不一致,请重新输入:")
    while True:
        telephone_num = input("请输入你的手机号:")
        if len(telephone_num) == 11:
            break
        else:
            print("对不起,您输入的手机号码有误,请重新输入!!")
    '''都输入完成之后,要存入到文件中'''
    '''注册验证码都是最后输入的,输入只需要正确就可以,没有说验证要在密码验证前面'''
    while True:
        random_num = random_code(4)
        print("33[31m验证码:%s33[0m" %random_num)
        input_num = input("请输入验证码:")
        if random_num.lower() == input_num.lower():    #统一转化为小写,这样就不用在意用户输入什么直接可以验证
            break
        else:
            print("您输入的验证码有误,请重新输入!")
    filename = "users_file"
    users = read_file(filename)   #读取之前文件中用户,进行添加
    users[username] = [pwd1,status,telephone_num]   #新增注册
    print("恭喜你,注册成功!")
    '''注册成功之后,写入文件'''
    write_file(users, filename)   #注册完成之后,重新写入文件

def uniqueness_verification(username):
    '''
    用户名唯一性验证,我们知道,用户名是不允许重复的,其实手机号也有唯一性约束,但是我们知道,手机号总是经常改变,
    :param username: 用户名
    :return: 无返回值
    '''
    flag = False
    filename = "users_file"
    users = read_file(filename)
    if username in users.keys():
        print("对不起,您输入的用户名已经注册,请重新输入!")
        return True
    else:
        return flag

def unlock(filename):
    '''
    管理员进行解锁,正常来说只有管理员才能够解锁,这样就只能在添加控制条件了,不过也没关系,就当联系尝试了
    不过应该超级管理员都是在一个文件单独存放的,只有联系超级管理员才能够解锁,需要一些验证,才能登录超级管理员
    这里因为也没有太好的办法来交互了,就用户自己解锁,通过手机号,这个还是很多网站常用的找回密码的方法,只要修改了密码
    就当重新解锁了,支付宝呀,等在线都是这样操作的
    :param filename: 文件名
    :return:
    '''
    '''打开文件,读取用户信息'''
    users = read_file(filename)
    message = '''33[36;1m
    --------------------------------------------------------------------------------------------------
              【1】修改密码                                             【2】找回密码
    --------------------------------------------------------------------------------------------------
    33[0m'''
    print(message)
    flag = True    #循环开启和关闭的标志
    while flag:

        function_num = input("请选择您要操作的功能:")
        if not function_num in ['1','2']:
            print("您输入的功能有误,请重新输入!")
            continue
        username = input("请输入用户名:")   #判断用户名是否存在
        if username in users.keys():
            ''''通过手机号进行修改密码'''
            while True:
                telephone_num = input("请输入您的手机号:")
                if telephone_num == users[username][2]:
                    '''验证码验证'''
                    while True:
                        rand_num = random_code(4)
                        print("验证码:",rand_num)
                        tem_random_code = input("请输入验证码:")
                        if rand_num.lower() == tem_random_code.lower():
                            break
                        else:
                            print("您输入的验证码有误,请重新输入!")
                    break
                else:
                    print("您输入的手机号有误,请重新输入!")
            while True:
                if function_num == '1':
                    pwd1 = input("请输入你要修改的密码:")
                    pwd2 = input("请再次输入您要修改的密码:")
                    if pwd1 == pwd2:
                        print("密码修改成功!")
                        users[username][0] = pwd1
                        users[username][1] = "unlocked"
                        flag = False
                        break
                    else:
                        print("对不起,您两次输入的密码不一致,请重新输入!")
                        continue
                elif function_num == "2":
                    print("33[30m您的账户密码是:33[0m",users[username][0])
                    users[username][1] = 'unlocked'
                    flag = False
                    break
        else:
            print("对不起,您输入的用户没有注册!!!")
            break
    return users    #解锁成功之后,返回新的用户名表,并重写写入到文件中

def login_show():
    '''登录展示提醒'''
    show_message = '''
    -----------------------------------------------------------------------------------------------
                               33[34m  欢迎来到登录界面,请按一下提示完成登录
                             如果发现账号锁定,请进行验证解锁,祝你冲浪愉快[0m
    -----------------------------------------------------------------------------------------------
    '''
    print(show_message)

def register_show():
    '''
    注册展示页面,进行提醒
    :return:
    '''
    show_message = '''
    ----------------------------------------------------------------------------------------------------
                                  33[32;1m   欢迎来到注册页面,请按照以下提示完成注册 33[0m
    ----------------------------------------------------------------------------------------------------
    '''
    print(show_message)

def unlock_show():
    '''解锁页面展示'''
    show_message = '''33[33;1m
    ----------------------------------------------------------------------------------------------------
                         欢迎来到解锁页面,请按照下面提示进行解锁
                          您可以选择找回密码,或者修改密码
    ----------------------------------------------------------------------------------------------------
    33[0m'''
    print(show_message)


if __name__ == "__main__":
    main_show()
    flag = True
    while flag:
        choice_num = input("请选择您要选择的操作:")
        if choice_num == '1':
            login_show()
            '''判断用户文件是否存在'''
            filename = 'users_file'
            test_file(filename)
            users = read_file(filename)
            users_message = log_in(users)
            write_file(users_message,filename)
        elif choice_num == '2':
            register_show()
            register()
        elif choice_num == '3':
            unlock_show()
            '''修改密码,解除锁定,我们知道,现在网络平台都是通过手机号自己解锁的,不过要通过验证码充值密码'''
            filename = 'users_file'
            users = unlock(filename)
            write_file(users,filename)
        elif choice_num == 'q':
            break
        else:
            print("对不起,找不到您输入编号的功能,请重新输入")
            continue

    四、代码功能展示:

 

     1.主页面


///设置过手势密码的用户
function add() {
$("#gesturepwd").on("hasPasswd", function (e, passwd) {
var result;
if (passwd == $("#pass").text()) {
result = true;
}
else {
result = false;
}
if (result == true) {
$("#gesturepwd").trigger("passwdRight");
setTimeout(function () {
//密码验证正确后的其他操作,打开新的页面等。。。
//alert("密码正确!")
$("#gesturepwd").hide();
$("#Indexs").show();;
}, 500); //延迟半秒以照顾视觉效果
}
else {
$("#gesturepwd").trigger("passwdWrong");
//密码验证错误后的其他操作。。。
}
});
} 

   

                         欢迎来到解锁页面,请按照下面提示进行解锁
                          您可以选择找回密码,或者修改密码

 功能及方法逻辑都注释在代码中。所以麻烦大家直接看代码。

   

    
请输入您的用户名:alexsb
对不起,您输入的用户名没有注册!!!
请选择您要选择的操作:1

这里我们获取到用户第一次滑动设置的密码将之赋给pass元素中。

【3】解锁               【q】退出

请选择您要选择的操作:3

用户登录时通过业务逻辑层查询数据库,看客户是否设置九宫格密码,如果设置则调用add()方法,未设置则调用upup()方法。

   

              【1】修改密码                                             【2】找回密码

<script>
$(function () {
var urlinfo = window.location.href;
var UserName = urlinfo.split("_")[1]; 
$.ajax({
type: "POST",
url: "../../Home/Details",
dataType: 'json',
anyc: false,
data: { UserName: UserName },
success: function (data) {
if (data.msg == "True") {
$("#pass").text(data.pass);
alert("请输入手势密码!")
add();
}
else {
alert("请设置手势密码!")
upup();
}
}
})
})
</script> 

【3】解锁               【q】退出

请选择您要选择的操作:2

当用户已经设置过时我们进行如下操作(调用add()方法):

                                 您好,欢迎来到京东二货市场

       【1】登录              【2】注册                

///递归(循环调用自己)
function Recursive() {
$("#gesturepsa").on("hasPasswd", function (e, passwd) {
var urlinfo = window.location.href;
var UserName = urlinfo.split("_")[1];
if (passwd == $("#pass").text()) {
$.ajax({
type: "POST",
url: "../../Home/GrtturePassword",
dataType: 'json',
anyc: false,
data: { GesturePassword: passwd, UserName: UserName },
success: function (data) {
alert(data);
$("#gesturepsa").hide();;
$("#Indexs").show();;
}
})
}
else {
$("#gesturepsa").trigger("passwdWrong");
alert("两次密码不一致,请重新输入!");
$("#gesturepsa").remove();
$("#gesturepwd").after("<div id='gesturepsa'></div>")
getur();
Recursive();
}
});
} 

   

                         欢迎来到解锁页面,请按照下面提示进行解锁
                          您可以选择找回密码,或者修改密码

然后调用Recursive方法

【3】解锁               【q】退出

请选择您要选择的操作:

    2.登录
请选择您要选择的操作:1

   

                                     欢迎来到注册页面,请按照以下提示完成注册

                                 您好,欢迎来到京东二货市场

       【1】登录              【2】注册                

   

    
请输入您的用户名:耿长学
请输入您的密码:456789
验证码: 3q4QZJ
请输入验证码:3q4qzs
验证码输入有误,请重新输入:
验证码: YlhBir
请输入验证码:ylhbir
您输入的密码有误,你还有2次锁定用户!
请输入您的密码:456789
您输入的密码有误,你还有1次锁定用户!
请输入您的密码:456789
您输入的次数过多,账户已经锁定,请联系管理员解锁!
请选择您要选择的操作:耿长学
对不起,找不到您输入编号的功能,请重新输入
请选择您要选择的操作:1

   

    
请选择您要操作的功能:1
请输入用户名:耿长学
请输入您的手机号:15111252591
验证码: oRxW
请输入验证码:orxw
请输入你要修改的密码:123456
请再次输入您要修改的密码:123456
密码修改成功!

    (2)找回密码


本文由美高梅网址发布于新闻中心,转载请注明出处:javascript实现锁定网页,JS模仿手机端九宫格登录

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文