欢迎访问宙启技术站
智能推送

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的表,其中包含usernamepassword列,用于存储用户的凭证。

然后我们定义了一个register函数,用于注册新用户。该函数首先检查用户名是否已经存在于数据库中,如果是,则返回失败。否则,我们将密码使用SHA256哈希算法进行加密,并将用户名和加密后的密码插入到users表中。

接下来我们定义了一个login函数,用于用户登录。该函数首先检查用户名是否存在于数据库中,如果不存在,则返回失败。然后,我们将提供的密码使用相同的哈希算法进行加密,并将其与数据库中存储的密码进行比较。如果它们匹配,则返回成功。

最后,我们使用一些示例数据来测试注册和登录功能。在示例中,我们首先尝试使用一个新的用户名注册新用户,并检查注册是否成功。然后,我们尝试再次使用相同的用户名注册新用户,并验证该操作失败。接下来我们尝试使用正确的用户名和密码登录,并验证登录成功。最后,我们尝试使用错误的密码登录,并验证登录失败。

在使用该代码之前,请确保你已经安装了sqlite3hashlib库。此外,记得在实际的应用中,你需要改进代码来处理更多的异常情况,并确保在用户输入敏感信息时进行安全处理。