python登录注册接口_Python 登陆接口小程序V2

这个Python小程序实现了登录接口,包括登录、注册和删除用户功能。在登录过程中,添加了登录时间记录,并在用户连续失败尝试后引入了5分钟内错误次数限制。如果超过3次错误,用户需要等待30分钟后才能再次尝试登录。
摘要由CSDN通过智能技术生成

Python 登陆接口小程序V2

添加登陆时间,失败登陆时间#!/usr/bin/python

#_*_coding:utf-8 _*_

__author__ = 'gaogd'

import MySQLdb as mysql

import datetime

class Authon(object):

def __init__(self):

self.db = mysql.connect(user="root", passwd="xxxx@2015", db="logintest", host="192.168.10.12")  # 数据库连接信息

self.db.autocommit(True)

self.cur = self.db.cursor()

self.cur.execute('set names utf8')

def strtodatetime(self, datestr, format):

return datetime.datetime.strptime(datestr, format)

def Login(self):

#addtime = datetime.datetime.now().__format__("%Y-%m-%d %H:%M:%S")

addtime = datetime.datetime.now()

username = raw_input(u'请输入你的用户名:')

err_count = 0

Flag = True

while Flag:

password = raw_input(u'请输入密码:')

if username.strip() == '':

print  u'用户名不能为空!'

## select err_time  from loginuser where user='xiaoming';

get_err_time_sql = "select err_time  from loginuser where user='%s';" % username

self.cur.execute(get_err_time_sql)

get_err_time = self.cur.fetchall()

#print '------',get_err_time[0][0]

if  get_err_time[0][0] == None :

pass

else:

print 'get_err_time::' ,get_err_time[0][0] ,'=======',addtime

err_time = get_err_time[0][0]

diff_time = (addtime - err_time).seconds

print 'diff_time::' ,diff_time

if not diff_time >= 300 :

Flag = False

if Flag:

# sql = select user,passwd from loginuser where user='gao3'and passwd='gao3';

select_user_passwd_sql = "select user,passwd from loginuser where user='%s'and passwd='%s';" % (username,password)

self.cur.execute(select_user_passwd_sql)

select_user_passwd = self.cur.fetchall()

if len(select_user_passwd) == 0:

print u'用户名或密码不正确!!'

err_count += 1

if err_count == 3:

print u'错误输入密码超过三次,程序自动退出!!'

##sql = update loginuser set err_time='2016-09-02 15:40:01' where user='gao1' ;

update_err_sql =  "update loginuser set err_time='%s' where user='%s' " %(addtime,username)

self.cur.execute(update_err_sql)

Flag = False

else:

err_count = 0

##sql = update loginuser set login_time='2016-09-02 15:40:01' where user='gao1' ;

update_login_sql = "update loginuser set login_time='%s' where user='%s' " %(addtime,username)

self.cur.execute(update_login_sql)

print u'欢迎您来%s到Python家族!!' %  username

return True

else:

print u'%s在5分钟登陆错误超过3次,请三十分钟后登陆!!' % username

def Register(self):

username = raw_input(u'请输入你要申请的用户名:')

password_one = raw_input(u'请输入密码:')

password_two = raw_input(u'请再次输入密码:')

addtime = datetime.datetime.now()

if username.strip() == '':

print  u'用户名不能为空!'

if not username.isalnum():

print u'用户名不能包含特殊字符'

return False

if password_one.strip() == '':

print  u'密码不能为空!'

return False

if not password_one.strip() == password_two.strip():

print u'你两次输入的密码不一致'

return False

## sql = insert into loginuser(user,passwd,err_count,time) values('gaogd','gaogd','0','2016-09-02 14:40:22');

create_user_sql = "insert into loginuser(user,passwd,create_time) values('%s','%s','%s')" % (username,password_one,addtime)

try:

print create_user_sql

self.cur.execute(create_user_sql)

except Exception as e:

print e

print u'创建用户失败!!'

return False

print u'创建用户成功:',username

def Deleuser(self):

username = raw_input(u'请输入你要删除的用户名:')

password = raw_input(u'请输入密码:')

if username.strip() == '':

print  u'用户名不能为空!'

select_user_sql = "select user from loginuser;"

self.cur.execute(select_user_sql)

select_user = self.cur.fetchall()

Flag = False

for n in range(len(select_user)):

if  username == select_user[n][0]:

Flag = True

if  Flag :

#select passwd from loginuser where user='gao';v

select_passwd_sql = "select passwd from loginuser where user='%s';" % username

self.cur.execute(select_passwd_sql)

select_passwd = self.cur.fetchall()

if password.strip() == select_passwd[0][0].strip():

##删除用户

##DELETE FROM loginuser  WHERE user='gao1';

select_deluser_sql = "DELETE FROM loginuser  WHERE user='%s';" % username

self.cur.execute(select_deluser_sql)

print u'已经成功删除%s用户' % username

else:

print u'用户名或密码不正确!!'

def SelectFunction():

content=u'''

1.登陆Python家族

2.注册用户

3.删除用户

'''

print content

num = raw_input(u'请输入您的选择:')

if num.strip() == '1':

authon.Login()

return True

if num.strip() == '2':

authon.Register()

return True

if num.strip() == '3':

authon.Deleuser()

return True

print u'您的输入有误!!请输入您需要的功能对应的序号'

if __name__ == "__main__":

#pass

authon = Authon()

#authon.Register()

#authon.Login()

#authon.Deleuser()

SelectFunction()

"""

可以用版本1的数据进行修改:

alter table loginuser add login_time datetime  Null;

alter table loginuser change time create_time datetime not Null;

ALTER TABLE loginuser drop err_count;

alter table loginuser add err_time datetime Null;

数据数据库以及对应的表

create database logintest ;

use logintest;

mysql> show create table loginuser \G;

*************************** 1. row ***************************

Table: loginuser

Create Table: CREATE TABLE `loginuser` (

`user` varchar(64) NOT NULL,

`passwd` varchar(128) DEFAULT NULL,

`create_time` datetime NOT NULL,

`login_time` datetime DEFAULT NULL,

`err_time` datetime DEFAULT NULL,

PRIMARY KEY (`user`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

mysql> desc loginuser;

+-------------+--------------+------+-----+---------+-------+

| Field       | Type         | Null | Key | Default | Extra |

+-------------+--------------+------+-----+---------+-------+

| user        | varchar(64)  | NO   | PRI | NULL    |       |

| passwd      | varchar(128) | YES  |     | NULL    |       |

| create_time | datetime     | NO   |     | NULL    |       |

| login_time  | datetime     | YES  |     | NULL    |       |

| err_time    | datetime     | YES  |     | NULL    |       |

+-------------+--------------+------+-----+---------+-------+

5 rows in set (0.01 sec)

mysql>

注册用户

登陆用户

删除用户

"""

'''

datetime 时间转换:

字符串转换为时间

get_err_time='2016-09-02 22:51:44'

err_time = datetime.datetime.strptime(str(get_err_time), '%Y-%m-%d %H:%M:%S')

http://blog.sina.com.cn/s/blog_684ae1750101kkid.html

'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值