Добавил:
Здесь представлены мои работы, надеюсь они Вам помогут, всех благ! Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

4-5 логин+регистр

.docx
Скачиваний:
93
Добавлен:
31.05.2022
Размер:
160.43 Кб
Скачать

Ордена трудового Красного Знамени Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Московский технический университет связи и информатики Кафедра «Сети Связи и Системы Коммутации» Лабораторная работа № 4-5 «Создание системы регистрации и авторизации в веб-приложении»

Группа: БИН-2008 Выполнил: Ядринцев С. М. Проверил(а): Манохина В.И. Дата: 02.03.2022

Москва 2022

Цель работы: Создать систему регистрации и авторизации в веб-приложении. Пользователи: Работа системы авторизации: Исключения: Исходный код файла арр.ру:

from flask import Flask, render_template, request, redirect

import psycopg2

app = Flask(__name__)

conn = psycopg2.connect(database="service1_db",

user="postgres",

password="361011",

host="localhost",

port="5432",)

cursor=conn.cursor()

@app.route('/', methods=['GET'])

def index():

return redirect("/login/")

@app.route('/login/', methods=['POST', 'GET'])

def login():

if request.method == 'POST':

if request.form.get("login"):

username = request.form.get('username')

password = request.form.get('password')

if (not username) or (not password):

return render_template('nofile.html')

try:

cursor.execute("SELECT full_name FROM service.users WHERE login=%s AND password=%s", (str(username), str(password)))

records = list(cursor.fetchall())

return render_template('account.html', full_name=records[0][0])

except:

return render_template('notexist.html')

# return render_template('account.html', full_name=records[0][0])

elif request.form.get("registration"):

return redirect("/registration/")

return render_template('login.html')

@app.route('/registration/', methods=['POST', 'GET'])

def registration():

if request.method == 'POST':

name = request.form.get('name')

login = request.form.get('login')

password = request.form.get('password')

if (not name):

return render_template('login2.html')

elif not name.replace(" ", "").isalpha():

return render_template('numberinname.html')

elif (not login) or (not password):

return render_template('nofile.html')

if login:

cursor.execute('SELECT * FROM service.users')

rows = cursor.fetchall()

for row in rows:

if login == row[2]:

return render_template('login2.html')

cursor.execute('INSERT INTO service.users (full_name, login, password) VALUES (%s, %s, %s);',

(str(name), str(login), str(password)))

conn.commit()

return redirect("/login/")

return render_template('registration.html')

Исходный код account.html:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Title</title>

<form action="" method="post">

{% if full_name %}

<p>Hello, {{full_name}}! </p>

{% endif %}

</p>

</form>

</head>

<body>

</body>

</html>

Код файла login: <!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Login</title>

</head>

<body>

<form action="" method="post">

<p>

<label for="username">Логин</label>

<input type="text" name="username">

</p>

<p>

<label for="password">Пароль</label>

<input type="password" name="password">

</p>

<p>

<input type="submit" value="Войти" name="login">

<input type="submit" value="Регистрация" name="registration">

</p>

</form>

</body>

</html> Код файла login2:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Error</title>

<form action="" method="post">

<p> user with same login already exists </p>

</form>

</head>

</html>

Код файла noteexist: <!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Error</title>

<form action="" method="post">

<p> account does not exist or entered wrong password </p>

</form>

</head>

</html> Код файла numberinname: <!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Error</title>

<form action="" method="post">

<p> name cannot contain numbers </p>

</form>

</head>

</html> Код файла registration: <!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Registration</title>

</head>

<body>

<form action="" method="post">

<p>

<label for="name">Полное имя:</label>

<input type="text" name="name">

</p>

<p>

<label for="login">Логин:</label>

<input type="text" name="login">

</p>

<p>

<label for="password">Пароль:</label>

<input type="password" name="password">

</p>

<p>

<input type="submit" value="Sign In">

</p>

</form>

</body>

</html> Вывод: В ходе данной лабораторной работе я создал систему авторизации и регистрации в веб-приложении, используя как .py, так и .html файлы, также я задействовал систему БД postgreSQL, чтобы логины и пароли пользователей могли где-то храниться.

Соседние файлы в предмете Введение в информационные технологии