pychram做一个登陆注册页面用户信息保存在mysql数据库中
时间: 2024-06-08 07:12:14 浏览: 12
好的,这里给您提供一个简单的示例代码,帮助您实现基本的注册和登录功能,使用 Python Flask 框架和 MySQL 数据库:
1. 安装所需的 Python 库
```
pip install Flask flask-mysqldb
```
2. 创建一个名为 `app.py` 的文件,并在其中添加以下代码:
```python
from flask import Flask, render_template, request, redirect, session
from flask_mysqldb import MySQL
import bcrypt
app = Flask(__name__)
# 设置 session 密钥
app.secret_key = 'secret_key'
# MySQL 配置
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'password'
app.config['MYSQL_DB'] = 'users'
mysql = MySQL(app)
# 用户注册
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
name = request.form['name']
email = request.form['email']
password = request.form['password'].encode('utf-8')
hashed_password = bcrypt.hashpw(password, bcrypt.gensalt())
# 插入用户信息到数据库中
cur = mysql.connection.cursor()
cur.execute("INSERT INTO users(name, email, password) VALUES (%s, %s, %s)", (name, email, hashed_password))
mysql.connection.commit()
cur.close()
session['name'] = name
session['email'] = email
return redirect('/')
return render_template('register.html')
# 用户登录
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
email = request.form['email']
password = request.form['password'].encode('utf-8')
# 从数据库中获取用户信息
cur = mysql.connection.cursor()
cur.execute("SELECT * FROM users WHERE email = %s", [email])
user = cur.fetchone()
cur.close()
# 验证密码是否正确
if user and bcrypt.checkpw(password, user[3].encode('utf-8')):
session['name'] = user[1]
session['email'] = user[2]
return redirect('/')
else:
return render_template('login.html', error='Invalid email or password')
return render_template('login.html')
# 用户注销
@app.route('/logout')
def logout():
session.clear()
return redirect('/')
# 首页
@app.route('/')
def index():
if 'name' in session:
return render_template('index.html', name=session['name'], email=session['email'])
else:
return redirect('/login')
if __name__ == '__main__':
app.run(debug=True)
```
3. 在项目根目录下创建一个名为 `templates` 的文件夹,并在其中创建以下三个 HTML 模板文件:
- `register.html`,用于用户注册页面
```html
<!DOCTYPE html>
<html>
<head>
<title>Register</title>
</head>
<body>
<h2>Register</h2>
<form method="POST" action="/register">
<input type="text" name="name" placeholder="Name"><br><br>
<input type="email" name="email" placeholder="Email"><br><br>
<input type="password" name="password" placeholder="Password"><br><br>
<input type="submit" value="Register">
</form>
</body>
</html>
```
- `login.html`,用于用户登录页面
```html
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>
<h2>Login</h2>
{% if error %}
<p style="color: red;">{{ error }}</p>
{% endif %}
<form method="POST" action="/login">
<input type="email" name="email" placeholder="Email"><br><br>
<input type="password" name="password" placeholder="Password"><br><br>
<input type="submit" value="Login">
</form>
</body>
</html>
```
- `index.html`,用于用户登录后的首页
```html
<!DOCTYPE html>
<html>
<head>
<title>Homepage</title>
</head>
<body>
<h2>Welcome, {{ name }}!</h2>
<p>Your email is: {{ email }}</p>
<a href="/logout">Logout</a>
</body>
</html>
```
4. 在 MySQL 数据库中创建一个名为 `users` 的表,用于存储用户信息:
```sql
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`email` varchar(100) NOT NULL,
`password` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
现在您可以运行 `app.py`,在浏览器中访问 `http://localhost:5000/register` 进行用户注册,访问 `http://localhost:5000/login` 进行用户登录,访问 `http://localhost:5000/logout` 进行用户注销。登录后访问 `http://localhost:5000/` 可以看到用户的个人主页。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![tar](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)