精华内容
下载资源
问答
  • 大佬们,vb.net 写的Excel插件,怎么实现注册功能,没有注册码就不能使用,最好给个demo供小弟学习。感谢了。
  • 实现注册功能

    千次阅读 2019-04-27 22:55:54
    实现注册功能 现在的网站如:淘宝、京东、唯品会等大都都具有用户注册功能、并且方便、简洁、易懂 那么这一个网站的注册是怎么实现的呢 我们要把构建页面的工具打开、并新建一个项目 命名规则在遵守命名规则的...

    实现注册功能

    现在的网站如:淘宝、京东、唯品会等大都都具有用户注册功能、并且方便、简洁、易懂

    那么这一个网站的注册是怎么实现的呢

    我们要把构建页面的工具打开、并新建一个项目

    命名规则在遵守命名规则的情况下自己命名

    开始我们可以·先构建好登录页面、注册页面和首页

    页面的搭建可以运用bootstrap、layui等插件实现快速的搭建

    最后把搭建好的页面写上相应的代码把这个页面该实现什么什么功能写上

    如注册页面可以注册功能等等

    这个是最先开始的

    首先得有登录页面才能有注册页面对吧

    所以把登录面先构建好

    然后是首页的搭建最后才是注册页面的搭建

    方法已经写好的了

    输入我们注册时用到的账号和密码等信息

    然后点击注册弹出  提示框显示成功   可以加以判断

    如:张三 已经注册过一次了  或者  账号重复  提示框会显示

    圈画代码是给用户注册密码加密用的

    最后我们用新注册的账号进行验证登录

    成功了  跳转到首页

    展开全文
  • 基于springmvc mybatis框架 用的阿里大鱼短信接口 注册需要用到 手机号 密码 短信验证码 三个变量
  • 一、前言:目的:完成已有python图像处理工具的注册功能功能:用户运行程序后,通过文件自动检测认证状态,如果未经认证,就需要注册。注册过程是用户将程序运行后显示的机器码(C盘的卷序号)发回给管理员,管理员对...

    一、前言:

    目的:完成已有python图像处理工具的注册功能

    功能:用户运行程序后,通过文件自动检测认证状态,如果未经认证,就需要注册。注册过程是用户将程序运行后显示的机器码(C盘的卷序号)发回给管理员,管理员对机器码加密后生成加密文件或字符串返回给用户。每次启动程序,在有注册文件的情况下,程序就会通过DES和base64解码,并与此刻获取到的C盘卷序列号比对,如果一致则运行主程序。如果注册文件解码后与卷序号不一致,就要提醒用户输入注册码,如果对新输入的解码后和重新获取的机器码一致,则通过认证,生成新的注册文件后进入主程序。

    库和组件:

    1、pyDes用于加密解密

    2、base64,用于pyDes加密解密后的二次加密解密

    3、win32api,用于获取C盘卷序列号

    4、pyinstaller,打包

    参考:

    1、pyDes库 实现python的des加密

    2、win32api.GetVolumeInformation

    3、pyinstaller打包文件说明

    二、实现

    #coding:utf8#register.py#功能说明:用户运行程序后,自动检测认证状态,如果未经认证,就需要注册。注册过程是用户将程序运行后显示的机器码(卷序号)发回给管理员,管理员通过加密后生成加密文件或字符串给回用户。#每次登录,在有注册文件或者注册码的情况下,软件就会通过DES和base64解码,如果解码后和重新获取的机器码一致,则通过认证,进入主程序。

    importbase64importwin32apifrom pyDes import *

    #from binascii import a2b_hex #如果需要用二进制编码保存注册码和注册文件可以使用binascii转换

    classregister:def __init__(self):

    self.Des_Key= "BHC#@*UM" #Key

    self.Des_IV = "\x22\x33\x35\x81\xBC\x38\x5A\xE7" #自定IV向量

    #获取C盘卷序列号

    #使用C盘卷序列号的优点是长度短,方便操作,比如1513085707,但是对C盘进行格式化或重装电脑等操作会影响C盘卷序列号。

    #win32api.GetVolumeInformation(Volume Name, Volume Serial Number, Maximum Component Length of a file name, Sys Flags, File System Name)

    #return('', 1513085707, 255, 65470719, 'NTFS'),volume serial number is 1513085707.

    defgetCVolumeSerialNumber(self):

    CVolumeSerialNumber=win32api.GetVolumeInformation("C:\\")[1]#print chardet.detect(str(CVolumeSerialNumber))

    #print CVolumeSerialNumber

    ifCVolumeSerialNumber:return str(CVolumeSerialNumber) #number is long type,has to be changed to str for comparing to content after.

    else:return0#使用DES加base64的形式加密

    #考虑过使用M2Crypto和rsa,但是都因为在windows环境中糟糕的安装配置过程而放弃

    defDesEncrypt(self,str):

    k= des(self.Des_Key, CBC, self.Des_IV, pad=None, padmode=PAD_PKCS5)

    EncryptStr=k.encrypt(str)#EncryptStr = binascii.unhexlify(k.encrypt(str))

    return base64.b64encode(EncryptStr) #转base64编码返回

    #des解码

    defDesDecrypt(self,str):

    k= des(self.Des_Key, CBC, self.Des_IV, pad=None, padmode=PAD_PKCS5)

    DecryptStr=k.decrypt(str)#DecryptStr = a2b_hex(k.decrypt(str))

    printDecryptStrreturnDecryptStr#获取注册码,验证成功后生成注册文件

    defregist(self):

    key= raw_input('please input your register code:')#由于输入类似“12”这种不符合base64规则的字符串会引起异常,所以需要增加输入判断

    #while key

    ifkey:

    content= self.getCVolumeSerialNumber() //number has been changed to str type after use str()#print chardet.detect(content)

    #print type(content)

    #print content

    #type(key_decrypted) is str

    key_decrypted=str(self.DesDecrypt(base64.b64decode(key)))#print chardet.detect(key_decrypted)

    #print key_decrypted

    #type(key_decrypted) is str

    if content!=0 and key_decrypted!=0:if content !=key_decrypted:print "wrong register code, please check and input your register code again:"self.regist()elif content==key_decrypted:print "register succeed."

    #读写文件要加判断

    with open('./register','w') as f:

    f.write(key)

    f.close()returnTrueelse:returnFalseelse:returnFalseelse:

    self.regist()returnFalsedefcheckAuthored(self):

    content=self.getCVolumeSerialNumber()

    checkAuthoredResult=0#读写文件要加判断

    try:

    f=open('./register','r')iff:

    key=f.read()ifkey:

    key_decrypted=self.DesDecrypt(base64.b64decode(key))ifkey_decrypted:if key_decrypted ==content:

    checkAuthoredResult= 1

    else:

    checkAuthoredResult= -1

    else:

    checkAuthoredResult= -2

    else:

    checkAuthoredResult= -3

    else:

    self.regist()exceptIOError:printIOErrorprintcheckAuthoredResultreturncheckAuthoredResultif __name__ == '__main__':

    reg=register()

    reg.regist()

    三、备注

    1、使用C盘卷序列号而不是硬盘号的原因是:位数短,方便操作。

    但是使用硬盘号才是更安全的做法,因为硬盘号不会因重装系统、格式化C盘或修改C盘序号而改变。

    #CVolumeSerialNumber: 1513085707

    #after encryption: ro5RVXZoP0KmnogYDeepUg==

    #the HardDiskNumber: 32535332584e4741343536393237204620202020

    #after encryption: MzI1MzUzMzI1ODRlNDc0MTM0MzUzNjM5MzIzNzIwNDYyMDIwMjAyMA==

    2、除了win32api,wmi也可以用来获取系统信息(比如硬盘号),获取完整硬盘号的过程如下:

    #虽然使用wmi可以获取磁盘序列号,可是磁盘序列号是3253533258**************3237204620202020,加密后太长,不方便操作,所以弃置

    importwmidefgetHardDiskNumber(self):

    c=wmi.WMI()for physical_disk inc.Win32_DiskDrive():return physical_disk.SerialNumber

    https://pypi.python.org/pypi/WMI/

    3、chardet可以用来检验字符串的编码类型,可以用在检测字符串相等上

    chardet.detect(str)

    4、还存在一些逻辑上的漏洞,比如读写文件时对文件是否存在的判断,读取方式的选择等

    5、register.py,供main函数或其他需要获取认证状态的函数调用。

    main函数中使用register类的过程是:

    创建logIn函数用于获取认证结果-》如果认证结果为假则重新调用register类的regist函数,提醒用户输入注册码,只有成功输入了注册码才能创建新的注册文件-》如果认证结果为真则直接启动主程序。

    6、管理员还应该有一个encryption.py,用于使用des+base64算法对用户发过来的C盘卷序列号进行加密,加密以后生成字符串或注册文件,再返还给用户,不再赘述。

    转载请注明出处:

    展开全文
  • 我现在在写一个书店,我想实现书店的登陆和注册功能,把注册的用户名密码保存到数据库,而且登陆的时候用户和管理员登陆到不同的界面这个要怎么实现
  • 我用一个简单的表格UserInfo (ID UserName PassWord) 来记录用户的注册信息,要记录一条用户的注册信息,一般是怎样进行的?
  • 为了个人信息的安全,很多网站都有短信发送的功能,究竟是怎么实现的呢?对于个人站长来说的话,通过使用SMS短信通API接口相对比较划算和简单。那怎么实现呢,步骤如下: 1. 从网上(http://sms.webchinese.cn/)...
  • 想要写一个登陆,注册功能,想用js写,下面是我想要完成的功能的截图 [img=https://img-bbs.csdn.net/upload/201306/19/1371646077_818689.jpg][/img] 点击注册出现以下js [img=...
  • 帐号注册成功! " ); fclose(fp); main(); }   登录账号密码: void Input_login() { users a,b;//定义结构体The_users别名 FILE * fp; fp = fopen( " users.txt " , " r " ); fread( ...

    创建储存用户账号密码的文件:

    void Create_File()
    {
        FILE *fp;
        if ((fp = fopen("users.txt","rb"))==NULL)                 /*如果此文件不存在*/
        {
            if ((fp = fopen("users.txt","wb+"))==NULL)
            {
                outtextxy(220, 200, "无法建立文件!");  
                
            }
        }
    }

     


    关于文件读写:

    r     只读    为输入打开一个文本文件(文件必须存在)
    w     只写    为输出打开一个文本文件(如没有文件,则新建)
    a     追加    向文本文件尾添加数据(如没有文件,则新建)
    rb    只读    为输入打开一个二进制文件
    wb    只写    为输出打开一个二进制文件
    ab    追加    向二进制文件尾添加数据
    r+    读写    为读写打开一个文本文件(文件必须已经存在)
    w+    读写    为读写建立一个新的文本文件
    a+    读写    为读写打开一个文本文件(读写指针定位在最后)
    rb+   读写    为读写打开一个二进制文件
    wb+   读写    为读写建立一个新的二进制文件
    ab+   读写    为读写打开一个二进制文件


    创建结构体:

    typedef struct The_users   //typedef 可以定义结构体别名
    {
        char id[11];
        char pwd[20]; 
    }users;

    该结构体用于存储用户账号密码。

     

    注册用户(账号密码)

         void registers()  //按结构体的大小,一次写入或者读入1个结构体大小
         {    
             users a,b;//结构体 The_users 重命名定义
             FILE *fp;
             fp = fopen("users.txt","r");
             
             fread(&b, sizeof(struct The_users), 1, fp); //读入一个结构体字符块 到b
             
             InputBox(a.id,11,"请输入账号");
             
             while (1)
             {    
                 if (strcmp(a.id, b.id)) /*如果两串不相等*/
                 {
                     if (!feof(fp))    /*如果未到文件尾*/                                
                         
                         
                     {
                         fread(&b, sizeof(struct The_users), 1, fp);
                     }
                     else
                         break;
                 }
                 else
    
                 {   
                     outtextxy(220, 200, "此用户名已存在!"); 
                     fclose(fp);
                     main();     
                 }
             }
             
             InputBox(a.pwd,10,"请输入密码");
             fp = fopen("users.txt","a");
             fwrite(&a, sizeof(struct The_users), 1, fp);
             outtextxy(220, 200, "帐号注册成功!");
             fclose(fp);
             main();
         }
    
     

     


    登录账号密码:

    void  Input_login()
    {
        users a,b;//定义结构体The_users别名
        
        FILE *fp;
        
        fp = fopen("users.txt","r");
        
        fread(&b, sizeof(struct The_users), 1, fp); //读入一个结构体字符块 写入b
        
        InputBox(a.id,11,"请输入账号");
        
        outtextxy(295,270,a.id);
        
                 while (1)
               {   
               if (strcmp(a.id, b.id)==0)         //如果有此用户名
               {
                   break;       
               }
               
               else 
               {
                   if (!feof(fp))  //如果文件没有读完                            
                
                   {
                       fread(&b, sizeof(struct The_users), 1, fp);
                   }
                   
                   else
                   {
                       outtextxy(220, 200, "此用户名不存在!");
                       fclose(fp);
                       main();
                       
                   }
               }
           }
           
           InputBox(a.pwd,20,"请输入密码");
           
    if (strcmp(a.pwd, b.pwd)==0)            /*如果密码匹配*/
               
           {
               
               fclose(fp);
     
              outtextxy(250, 200, "登录成功,欢迎使用!");
              
              }
           else  
           {       outtextxy(220, 200, "密码不正确!");
                   main();
           }
           
    }

     

    转载于:https://www.cnblogs.com/zhaocundang/p/4783276.html

    展开全文
  • C语言实现简单注册登陆功能

    万次阅读 多人点赞 2017-01-03 16:38:35
    之前在学习用C语言建立通讯录管理系统的时候有想过,怎么为每个用户单独设立通讯录,自然而然想到了最常见的注册与登陆功能,通过不同的账号达到单独设立通讯录的目的。这里将用户名密码和用户资料保存在一个文件中...

    之前在学习用C语言建立通讯录管理系统的时候有想过,怎么为每个用户单独设立通讯录,自然而然想到了最常见的注册与登陆功能,通过不同的账号达到单独设立通讯录的目的。肯定还存在许多问题,当给自己立个flag,未来慢慢磨。以下是实现过程:

    注意头文件:

    #include <stdio.h>
    #include <string.h>
    #include <conio.h>
    #include <stdlib.h>
    #define bool int        //这里用define定义了布尔类型
    #define true 1          //避免一些编译器如vs2010没有该头文件无法使用的情况发生
    #define false 0         //有些编译器如code:blocks可以直接使用头文件<include stdbool.h>
    FILE *fp;               //文件指针,不多说
    bool judge=true;

    先定义一个结构体Users,然后新建结构体pe用来存放用户名和密码。

    typedef struct
    {
        char user[20];
        char code[20];
    }Users;
    Users pe;  

    然后是编写注册模块。这里多增加了一个”阅读用户手册”,可删改。

    /*注册模块*/
    void zhuce()
    {
        char temp[20],txt[100],cha;        //定义两个数组,一个存放键盘输入的用户名和密码一个存放用户手册
        do
        {
            printf("\t\t\t\t用户注册");
            printf("\n\t\t1.直接注册 2.阅读用户手册");
            cha=getch();
            if(cha=='2')
            {
                if((fp=fopen("使用说明.txt","r"))==NULL)
                    {
                    printf("\n\t\t打开失败");
                    exit(0);
                    }
                    fread(txt,2,20,fp);
                    printf("\n\t\t%s",txt);
                    /*txt=fgets(txt,100,fp);
                    printf("%s",txt);
            }
            printf("\n\t\t按任意键继续");
            getch();
            system("cls");
            /*以上部分用于打开用户手册,可删改*/
            printf("\t\t\t\t用户注册");
            printf("\n\t\t用户名:");
            scanf("%s",pe.user);
            fp=fopen(pe.user,"r");
            /*判断用户名是否重复*/
            if(fp!=NULL) 
            {
               printf("\n\t该用户名已存在");
               fclose(fp);
               printf("\n\t继续注册?(Y/N)");
               if(getch()=='Y') return zhuce();
               else return denglu();
            }
            /*确认两次密码输入是否一致*/
            printf("\n\t\t密  码:");
            scanf("%s",pe.code);
            printf("\n\t\t确认密码:");
            scanf("%s",temp);
            if(strcmp(pe.code,temp)!=0)
            printf("\n\t\t两次密码不一致,请重新输入");
        }while(strcmp(pe.code,temp)!=0);
        /*用户名密码无误,写入文档储存用户信息*/
        fp=fopen(pe.user,"w");
        if(fp==NULL)
           {
              printf("\n\t注册失败\n");
              exit(0);
           }
        else 
        {
            system("cls");
            printf("\n\t注册成功");
            write();               //用户信息写入函数,底下给出
            judge = false;
            denglu();             //这里跳转到登陆模块
        }
    }
    /*写入用户信息*/
    void write()
    {
        if(fwrite(&pe,sizeof(User),1,fp)!=1)
        {
            printf("\n\t\t写入文件错误");
            exit(0);                     //写入错误则退出程序
        }
    }

    写完注册模块,接下来就是写登陆模块了,这里的关键就是读取之前存储好的用户信息以及用户的资料

    void denglu()
    {
        char u[20],c[20],temp[20];      //定义两个数组,存放键盘输入的用户名和密码
        printf("\n\t\t\t\t用户登录");
        printf("\n\t\t用户名:");
        scanf("%s",u);
        /*判断用户名是否存在*/
        fp=fopen(u,"r+");
        temp[0]='0';
        if(fp==NULL)
        {
            printf("\n\t\t用户不存在,请注册");
            printf("\n\t\t1.注册   2.重新登陆");
            temp[0]=getch();
            if(temp[0]=='1')
            {
                system("cls");
                zhuce();
            }
            else return denglu();
        }
        /*验证密码是否正确*/
        do
        {
            if(judge==true) fread(&pe,sizeof(Users),1,fp); //读取用户信息,即用户名和密码
            printf("\t\t密  码:");
            scanf("%s",c);
            if(strcmp(pe.code,c)!=0)                      //对比输入的密码和读取的密码
            {
                printf("\n\t\t密码错误(1.退出 2.重新输入)");
                temp[0]=getch();
                printf("\n");
                if(temp[0]=='1')
                {
                    fclose(fp);                           //关闭文件防止错误操作
                    return main();
                }
            }
        }while(temp[0]=='2');
        /*readfile();   
    该函数读取用户自己的资料,需要注意这里用户信息和其资料存储在一个文件中,读取是应适当使用rewind,ftell和fseek跳过一个User大小的空间读取的才是用户的资料*/
        getch();
        //这里可以设置跳转到操作界面
    }

    **到这里登陆模块也编写好了,只需要将它添加到已有代码稍微修改下就可以了O(∩_∩)O~**

    虽然这个思路很简单,但当初思考的时候还是费劲脑汁,毕竟刚接触C语言,很多东西还不能融会贯通,不能运用自如,甚至会在很简单的问题上纠结几个小时,最后发现的时候真的想抽自己几巴掌,但当最后完工了,真的实现了,好开心好开心!O(∩_∩)O~
    然而,实用性确实有限,只能供咱们这些新手小白消遣消遣,而且肯定存在许多漏洞,水平有限,又或者太懒了,真心不找了,这里立个flag,未来的学习之路,咱们慢慢磨!
    (*^__^*) 嘻嘻……

    展开全文
  • 小程序登陆注册功能实现

    千次阅读 2019-12-09 22:37:43
    通常小程序有为我们提供用户授权登陆的功能,但是这个只能获取用户的头像和昵称,我们该怎么样来实现小程序账号密码的注册和登陆呢,今天就来手把手的带大家学习小程序登陆注册功能的开发。 老规矩,先看效果图 ...
  • 表单中的按钮太丑?可以用超链接来代替 在实现网页设计中,登录... 下面我来说一下 1.用超链接去实现提交功能 2.怎么在一个表单中的按钮实现注册的跳转 用超链接进行表单的提交 <form action="doLogin.jsp" m...
  • 通常小程序有为我们提供用户授权登陆的功能,但是这个只能获取用户的头像和昵称,我们该怎么样来实现小程序账号密码的注册和登陆呢,今天就来手把手的带大家学习小程序登陆注册功能的开发。 老规矩,先看效果图 ...
  • 各位的登录注册功能一般是怎么实现的?包括记住密码功能,以及密码的加密机制。
  • 是把代码都放到一个html里面吗?类似QQ空间那种上传多图的怎么做?能不能给个源码参考一下
  • 最近在使用angular来做项目,功能要求实现一是点击按钮获取验证码,二是点击登录...之前用jquery来做项目很好做,使用angular怎么实现呢?其实实现代码也很简单的,下面通过实例代码给大家介绍下,需要的朋友参考下吧
  • 怎么用C语言实现一个简单的注册功能,通过键盘输入账号密码存到D盘中,同时还附加能够修改密码的功能。
  • 我的商城只要是有用户注册注册成功后,系统就会自动给注册用户...邮件APP中怎么可以实现邮件内容中的DISCOUNT CODE一键点击复制的功能呢?会有 Gmail邮箱,Outlook 邮箱,Yahoo 邮箱等一些国外比较主流的邮箱App ...
  • 本篇文章小编给大家分享一下js实现密码强度验证功能代码,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。思路:1.密码通常是由数字,大写字母,小写字母以及特殊字符组成2.密码全部是纯...
  • 嘿,你是否在某些网站注册账户,通过注册输入的邮箱,会收到...那这个功能大概是怎么实现的呢?今天我就带你们来分析分析。 此功能是基于java开发的,用的springboot所完成的。 链接激活账户项目结构图如下: img ...
  • 就像软件安装那样,第一步填写一部分内容,第二步填写一部分内容
  • 最近才学linux下的gtk操作,也看了一点操作sqlite3 数据库操作的视频,于是我就想初步实现数据库+gtk 的注册登录功能实现,不过这简单的功能也是花了我一天加一晚的时间,实现过程中遇到的很多困难。 靠网上诸多大...
  • 短信验证注册 短信验证码发送操作逻辑: ​ 1>点击获取验证码按钮发送短信...主要思考问题:项目中的key怎么管理 —>定义一个常量类进行统一管理 //controller类 @GetMapping("/sendVerifyCode") public Object se
  • 通常小程序有为我们提供用户授权登陆的功能,但是这个只能获取用户的头像和昵称,我们该怎么样来实现小程序账号密码的注册和登陆呢,今天就来手把手的带大家学习小程序登陆注册功能的开发。老规矩,先看效果图通过上...
  • 开发工具eclipse 数据库mysql 框架spring springmvc mybatis 现在是不是都用http 一般的业务不用webservice cxf了
  • Java语言怎么实现SWT GUI的注册用户登录用户忘记密码这三个功能呢,代码的编写,没有悬赏了,抱歉
  • 开发一个应用,开始界面是账号登陆界面。实现功能 手机A能登陆已经注册的账号 手机B也能登陆 。。。就是不同的手机都可以根据注册的账号进行的登陆。 求开发思路
  • 需要进邮箱点链接完成注册功能怎么实现的? 是在注册的函数那里。验证完数据后。 在那代码下面用send_mail函数发送一个链接邮件到信箱? 然后点那链接就可以了? 具体的代码是怎么实现? 或者有这样的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 864
精华内容 345
关键字:

怎么实现注册功能