python之CGI编程实现登录注册系统并存储于MySQL数据库

CGI编程:实现登录注册系统

功能:用MySQL存储,实现登录注册系统
环境:Python + MySQL5.5.27 + Apache2.4 +pymsql(连接MySQL第三方库)
编译环境:本人使用的为 anaconda + pycharm
步骤:
1.预先创建用于存储账号的数据库(功能:检验登录的用户名和密码、检验注册并注册信息写入数据库中)
2.编写登录和注册页面
3.编程处理登录的CGI程序,并编译
4.编写处理注册的CGI程序,并编译
5.微调,整合文件,实现程序的连贯性

实现的效果图:在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述

1.创建数据库在这里插入图片描述

2.编写登录和注册页面
登录页面:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body style="background:darkcyan">
<form action="/cgi-bin/login_111.py" method = "get">
<div>
    <div style="height: 50px"></div>
    <div style="width: 20px;float: left"></div>
    <div style="height: 550px;float: left" >
        <img src="background.jpg" style="width: 680px;height: 550px;">
    </div>
    <div style="width: 600px;height: 550px;float: right;background:beige;color: black">
        <div style="height: 130px"></div>
        <div >
            <div style="height: 70px;width: 500px;float: right">
                 <h2> 登录 </h2>
            </div>
            <div style="height: 10px"></div>
            <div style="height: 70px;width: 450px;float: right">
                 账号:<input type="text" name="user" ><br/>
                 密码:<input type="password" name="password"><br/>
            </div>
            <div style="height: 80px;width: 320px;float: right">
                <input type="submit" value="取消"> <input type="submit" value="确认">
            </div>
        </div>
    </div>
</div>
</body>
</html>

注册页面:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body style="background: darkcyan">
<form action="/cgi-bin/zhuce_111.py" method = "get">
    <div style="height: 120px"></div>
    <div align="center" style="width: 1200px;height: 60px">
        <h3>请填写以下信息:</h3>
    </div>
<div align="center" >
    <div style="height: 40px">
        账号:<input type="text" name="name0001">  <br/>
    </div>
    <div style="height: 40px">
        密码:<input type="password" name="password001"><br/>
        <br/>  </div>
    <div style="height: 40px">
        邮箱:<input type="text" name="emil"><br/>
        <br/>  </div>
    <div style="height: 40px">
        电话:<input type="text" name="iphone"><br/>
    </div>
    <div style="height: 40px">
        住址:<input type="text" name="adress"><br/>
    </div>
    <div style="height: 20px"> </div>
    <div align="right" style="width:350px;height: 80px ">
            <input type="submit" value="取消"><input type="submit" value="注册">
    </div>
</div>
</body>
</html>

3.编程处理登录的CGI程序,并编译

#! E:\anaconda\python.exe
#  coding:utf-8
import cgi

form =cgi.FieldStorage()
#登录时账号和密码
name1 = form.getvalue("user")
password1 = form.getvalue("password")
#连接MySQL数据库
import pymysql

msg1 = ""
msg2 = ""
#连接MySQL
connection = pymysql.connect(host ="127.0.0.1",port =3306,\
                             user = "shy",password = "123456",db = "logdb",charset="utf8mb4")
#查询信息
#----------------------------------------------------
sql = "select * from login_001;"
cursor = connection.cursor()
"""cursor.execute(sql)
namedict = {}
i = cursor.fetchall()
for  k in range(len(i)):
    (num,name,password) = i[k]
    namedict[name] = password
if name1 in namedict.keys():
    msg1 = "账号存在"
    if password1 in namedict.values():
        msg2 = "登录成功"
    else:
        msg2 = '密码错误'
else:
    msg1 = '账号不存在' """   #上面代码也能遍历校验用户登录
#此代码大大改善登录的响应时间
sql2 = "select * from login_001 where name = + '{}';".format(name1)
if cursor.execute(sql):
    i = cursor.fetchall()
    if password1 == i[0][2]:
        msg2 = "登录成功"
    else:
        msg2 = '密码错误'
else:
    msg1 = '账号不存在'
connection.commit()
cursor.close()		
#-------------------------------------
if  msg1 != "账号不存在":
    if msg2 == "登录成功":
        print("""Content-text:text/html;charset:utf-8\n\n
        <!DOCTYPE html>
        <html>
        <head lang="en">
            <title>home</title>
        </head>
        <body style="background: paleturquoise">
        <div style="height: 5px"></div>
        <h2 align="center">欢迎回来,{}</h2>
		<p align="center" style="width: 1000px">欢迎访问预测天气模型,请&nbsp;<a href="../test/loginsystem/porch.html">点击这里</a>&nbsp;访问:</p>
		<p align="center" style="width: 920px">机器学习各激活函数的可视化:</p>
		<div>
             <p style="text-align: center">
                 <img  style="width: 800px;height:400px;" src="../test/Figure_3.png">
             </p>
        </div>
        <div style="height: 30px"></div>
        </body>
        </html>""".format(name1))
    else:
        print("""Content-text:text/html;charset:utf-8\n\n
        <!DOCTYPE html>
        <html>
        <head lang="en">
            <title>home</title>
        </head>
        <body style="background: paleturquoise">
        <div style="height: 60px"></div>
        <h1 align="center">登录失败,{}</h1>
        <div style="height: 30px"></div>
        <p align="center" style="width: 1000px">请点击&nbsp;<a href="../test/loginsystem/注册页面.html">这里</a>&nbsp;注册</p>
        </body>
        </html>""".format(msg2))
else:
    print("""Content-text:text/html;charset:utf-8\n\n
    <!DOCTYPE html>
    <html>
    <head lang="en">
        <title>home</title>
    </head>
    <body style="background: paleturquoise">
    <div style="height: 60px"></div>
    <h1 align="center">登录失败,{}</h1>
    <div style="height: 30px"></div>
    <p align="center" style="width: 1000px">请点击&nbsp;<a href="../test/loginsystem/注册页面.html">这里</a>&nbsp;注册</p>
    </body>
    </html>""".format(msg1))


4.编写处理注册的CGI程序,并编译

#! E:\anaconda\python.exe
#  coding:utf-8
import cgi

form =cgi.FieldStorage()
#获取注册信息
name001 = form.getvalue("name0001")
password001 = form.getvalue("password001")
emil = form.getvalue("emil")
iphone = form.getvalue("iphone")
adress = form.getvalue("adress")
#连接MySQL数据库
import pymysql
#连接MySQL

msg1 = ""
msg2 = ""
connection = pymysql.connect(host ="127.0.0.1",port =3306,\
                             user = "shy",password = "123456",db = "logdb",charset="utf8mb4")
sql2 = "select * from login_001;"
sql3 = "select * from login_001 where name = + '{}';".format(name001)
cursor = connection.cursor()
data = ''
if cursor.execute(sql3):
    data  = "数据已存在"
else:
    i = cursor.execute(sql2)+1
    sql4 = "INSERT INTO logdb.login_001 (user_ID, NAME, paasword) VALUES('00{}','{}','{}');".format(i,name001,password001)
    cursor.execute(sql4)
    connection.commit()
    cursor.close()
if  data:
    print("""Content-text:text/html;charset:utf-8\n\n
    <!DOCTYPE html>
    <html>
    <head lang="en">
        <title>home</title>
    </head>
    <body style="background: paleturquoise">
    <div style="height: 5px"></div>
    <h1 align="center">账号已存在,请重新注册</h1>
    <div style="height: 30px"></div>
    </body>
    </html>""")
else:
    print("""Content-text:text/html;charset:utf-8\n\n
    <!DOCTYPE html>
    <html>
    <head lang="en">
        <title>home</title>
    </head>
    <body style="background: paleturquoise">
    <div style="height: 5px"></div>
    <h1 align="center">注册成功,欢迎!</h1>
	<p align="center" style="width: 1000px">欢迎访问预测天气模型,请&nbsp;<a href="../test/porch.html">点击这里</a>&nbsp;访问:</p>
	<p align="center" style="width: 920px">机器学习各激活函数的可视化:</p>
	<div>
        <p style="text-align: center">
            <img  style="width: 800px;height:400px;" src="../test/Figure_3.png">
        </p>
    </div>
    <div style="height: 30px"></div>
    </body>
    </html>""".format(name001))


5.微调,实现程序的连贯性
在这里插入图片描述

注:纸上得来终觉浅,绝知此事要躬行。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值