使用python cgi脚本转移到另一个网页

时间:2019-02-07 22:48:05

标签: python forms url-redirection password-hash passlib

我正在尝试使用cgi模块学习html表单和python,并且还试图使用它来将数据添加到mysql数据库中。我已经安装并正在运行apache,mysql,mysql连接器和passlib。

所以我正在做一个简单的登录类型表单,它将数据传递给python脚本,该脚本在db中执行简单的用户名查找。如果找不到用户,我希望它转移到另一个页面,例如注册页面,并且如果发现它转移到(IRL)是网站上的用户页面的页面。

我在本地进行所有操作,并且非现场直播。

Python代码(基于pythonschool上的表单和python教程):

#! /usr/bin/python

import cgi
import cgitb
import mysql.connector as conn
import passlib
from passlib.hash import argon2

cgitb.enable()

def htmlTop():
    print """Content-type:text/html\n\n
                <DOCTYPE html>
                <html lang=en">
                    <head>
                        <meta charset= utf-8/>
                        <title>Template</title>
                    </head>
                    <body>"""

def htmlTail():
    print "</body>"
    print "</html>"

def getData():
    formdata = cgi.FieldStorage()
    username = formdata.getvalue("username")
    password = formdata.getvalue("password")

    return username, password

def connectDB():
    db = conn.connect(user='basic_user', password='twathead',  host='127.0.0.1', db="exampleDB")
    cursor = db.cursor()
    return db, cursor

def check_person(username, password):
    sql_str = "SELECT * FROM people WHERE username = '%s'" % (username)
    cursor.execute(sql_str)
    person = cursor.fetchone()

    if person is None:
        print "Name not found"

        # go to signup page here!

    else:       
        print "Name found"
        print person[0]

        # go to another page here, either html or another dynamically python-generated page

        conn.close()

if __name__=="__main__":
    try:
        username, password = getData()

        htmlTop()

        print "Hello %s" %(username)
        print "<br>"

        db, cursor = connectDB()
        check_person(username, password)

        htmlTail()

    except:
        cgi.print_exception()

我也在用argon2哈希密码,并且可以在数据库中看到哈希值。我知道有一个argon2.verigfy(password),但不确定如何针对数据库中的哈希密码使用它,因此对此的任何建议都将有所帮助。

0 个答案:

没有答案