Перейдите на другую веб-страницу с помощью скрипта Python CGI - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь изучить html-формы и python с помощью модуля cgi, а также пытаюсь использовать это для добавления данных в базу данных mysql.У меня установлены и запущены apache, mysql, mysql connector и passlib.

Итак, я делаю простую форму входа в систему и передаю данные в скрипт python, который выполняет простой поиск имени пользователя в БД.Если пользователь не найден, я хочу, чтобы он был перенесен на другую страницу, например на страницу регистрации, и если он будет найден для перехода на страницу, которая будет (IRL) страницей пользователей на веб-сайте.

Я делаю все это локально, а не живо или не будет.

Код Python (на основе форм и учебника по питону в pythonschool):

#! /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 (пароль), но я не уверен, как использовать его против хешированного пароля в БД, поэтому любой совет по этому вопросу будет полезен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...