tornado实现简单登陆注册功能
app.py
import tornado.web
import tornado.ioloop
import hashlib
import pymysql
mysql_settings = {
"host": "127.0.0.1",
"user": "",
"password": "",
"db": "webproject",
"charset": "utf8"
}
class Login(tornado.web.RequestHandler):
def get(self):
self.render('login.html')
def post(self):
username = self.get_argument('username')
password = self.get_argument('password')
username_md5 = hashlib.md5(username.encode('utf8')).hexdigest()
password_md5 = hashlib.md5(password.encode('utf8')).hexdigest()
db_connect = pymysql.connect(**mysql_settings)
cursor = db_connect.cursor()
select_sql = 'select * from users where username="{}"'.format(username_md5)
cursor.execute(select_sql)
db_connect.close()
result = cursor.fetchall()
if result is ():
self.write('用户不存在')
self.get()
else:
user_info = result[0]
if username_md5 == user_info[0] and password_md5 == user_info[1]:
self.write('登陆成功<br><br>用户: {}<br>密码: {}<br>用户md5: {}<br>密码md5: {}<br>登录地ip: {}'\
.format(username, password, username_md5, password_md5, self.request.remote_ip))
else:
self.write('用户名或密码错误')
self.get()
class Register(tornado.web.RequestHandler):
def get(self):
self.render('register.html')
def post(self):
username = self.get_argument('username')
password = self.get_argument('password')
if username.__len__() > 10 or username.__len__() <= 0 or password.__len__() <= 0:
self.write('注册失败,用户名长度:1~10,密码长度 > 0')
self.get()
else:
username_md5 = hashlib.md5(username.encode('utf8')).hexdigest()
password_md5 = hashlib.md5(password.encode('utf8')).hexdigest()
db_connect = pymysql.connect(**mysql_settings)
cursor = db_connect.cursor()
select_sql = 'select username from users where username="{}"'.format(username_md5)
cursor.execute(select_sql)
if (username_md5,) in cursor.fetchall():
db_connect.close()
self.write('用户已存在,请重新输入')
self.get()
else:
insert_sql = 'insert into users values("{}","{}")'.format(username_md5, password_md5)
cursor.execute(insert_sql)
db_connect.commit()
self.write('注册成功')
db_connect.close()
app = tornado.web.Application([
('/login', Login),
('/register', Register),
])
if __name__ == '__main__':
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post" action="/login">
用户名:<br><input name="username" type="text"><br>
密码:<br><input name="password" type="password"><br>
<input value="登录" type="submit">
</form>
</body>
</html>
register.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post" action="/register">
用户名:<br><input name="username" type="text"><br>
密码:<br><input name="password" type="password"><br>
<input value="注册" type="submit">
</form>
</body>
</html>