Python编写案例:实现一个简单的网站登录系统
发布时间:2023-12-04 14:00:00
下面是一个使用Python编写的简单网站登录系统,在该系统中,用户可以注册新账户,登录并验证他们的凭据。我们使用Python中的sqlite3库来模拟一个数据库,并使用hashlib库来加密用户的密码。
import sqlite3
import hashlib
# 连接到数据库
conn = sqlite3.connect('users.db')
# 创建用户表
conn.execute('''CREATE TABLE IF NOT EXISTS users
(username TEXT PRIMARY KEY NOT NULL,
password TEXT NOT NULL);''')
# 注册新用户
def register(username, password):
# 检查用户名是否已经存在
cursor = conn.execute(f"SELECT username FROM users WHERE username='{username}'")
if cursor.fetchone():
print("该用户名已被注册!")
return False
# 对密码进行哈希加密
hashed_password = hashlib.sha256(password.encode()).hexdigest()
# 将新用户插入数据库
conn.execute(f"INSERT INTO users (username, password) VALUES ('{username}', '{hashed_password}')")
conn.commit()
print("注册成功!")
return True
# 用户登录
def login(username, password):
# 检查用户名是否存在
cursor = conn.execute(f"SELECT username, password FROM users WHERE username='{username}'")
row = cursor.fetchone()
if not row:
print("该用户名不存在!")
return False
# 检查密码是否匹配
hashed_password = hashlib.sha256(password.encode()).hexdigest()
if hashed_password != row[1]:
print("密码不正确!")
return False
print("登录成功!")
return True
# 注册新用户的例子
register("admin", "pass123")
# 尝试使用已注册的用户名再次注册
register("admin", "pass456")
# 用户登录的例子
login("admin", "pass123")
# 使用错误的密码尝试登录
login("admin", "pass456")
# 关闭数据库连接
conn.close()
上述代码中,我们首先连接到一个SQLite数据库。然后我们创建一个名为users的表,其中包含username和password列,用于存储用户的凭证。
然后我们定义了一个register函数,用于注册新用户。该函数首先检查用户名是否已经存在于数据库中,如果是,则返回失败。否则,我们将密码使用SHA256哈希算法进行加密,并将用户名和加密后的密码插入到users表中。
接下来我们定义了一个login函数,用于用户登录。该函数首先检查用户名是否存在于数据库中,如果不存在,则返回失败。然后,我们将提供的密码使用相同的哈希算法进行加密,并将其与数据库中存储的密码进行比较。如果它们匹配,则返回成功。
最后,我们使用一些示例数据来测试注册和登录功能。在示例中,我们首先尝试使用一个新的用户名注册新用户,并检查注册是否成功。然后,我们尝试再次使用相同的用户名注册新用户,并验证该操作失败。接下来我们尝试使用正确的用户名和密码登录,并验证登录成功。最后,我们尝试使用错误的密码登录,并验证登录失败。
在使用该代码之前,请确保你已经安装了sqlite3和hashlib库。此外,记得在实际的应用中,你需要改进代码来处理更多的异常情况,并确保在用户输入敏感信息时进行安全处理。
