温馨提示×

如何在Linux上用PHP实现用户认证

小樊
38
2025-10-26 17:36:19
栏目: 编程语言

在Linux上使用PHP实现用户认证,通常涉及以下几个步骤:

  1. 创建数据库和用户表: 使用MySQL或其他数据库系统来存储用户信息。

    CREATE DATABASE user_auth;
    USE user_auth;
    
    CREATE TABLE users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        username VARCHAR(50) NOT NULL UNIQUE,
        password VARCHAR(255) NOT NULL,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    
  2. 配置数据库连接: 在PHP中配置数据库连接。

    <?php
    $servername = "localhost";
    $username = "your_db_username";
    $password = "your_db_password";
    $dbname = "user_auth";
    
    // 创建连接
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // 检查连接
    if ($conn->connect_error) {
        die("连接失败: " . $conn->connect_error);
    }
    ?>
    
  3. 注册功能: 创建一个注册表单,并处理用户提交的注册信息。

    <?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $username = $_POST['username'];
        $password = password_hash($_POST['password'], PASSWORD_DEFAULT);
    
        $sql = "INSERT INTO users (username, password) VALUES (?, ?)";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("ss", $username, $password);
    
        if ($stmt->execute()) {
            echo "新用户注册成功";
        } else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }
    
        $stmt->close();
    }
    ?>
    
    <form action="register.php" method="post">
        用户名: <input type="text" name="username"><br>
        密码: <input type="password" name="password"><br>
        <input type="submit" value="注册">
    </form>
    
  4. 登录功能: 创建一个登录表单,并处理用户提交的登录信息。

    <?php
    session_start();
    
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $username = $_POST['username'];
        $password = $_POST['password'];
    
        $sql = "SELECT id, username, password FROM users WHERE username = ?";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("s", $username);
        $stmt->execute();
        $result = $stmt->get_result();
    
        if ($user = $result->fetch_assoc()) {
            if (password_verify($password, $user['password'])) {
                $_SESSION['loggedin'] = true;
                $_SESSION['id'] = $user['id'];
                $_SESSION['username'] = $user['username'];
                header("Location: welcome.php");
                exit;
            } else {
                echo "密码错误";
            }
        } else {
            echo "用户不存在";
        }
    
        $stmt->close();
    }
    ?>
    
    <form action="login.php" method="post">
        用户名: <input type="text" name="username"><br>
        密码: <input type="password" name="password"><br>
        <input type="submit" value="登录">
    </form>
    
  5. 欢迎页面: 创建一个欢迎页面,显示已登录用户的信息。

    <?php
    session_start();
    
    if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] !== true) {
        header("Location: login.php");
        exit;
    }
    
    $username = $_SESSION['username'];
    $id = $_SESSION['id'];
    ?>
    
    <h1>欢迎, <?php echo htmlspecialchars($username); ?>!</h1>
    <p>用户ID: <?php echo htmlspecialchars($id); ?></p>
    <a href="logout.php">登出</a>
    
  6. 登出功能: 创建一个登出脚本,清除会话信息。

    <?php
    session_start();
    session_unset();
    session_destroy();
    header("Location: login.php");
    exit;
    

通过以上步骤,你可以在Linux上使用PHP实现一个基本的用户认证系统。请确保在生产环境中使用HTTPS来保护用户的敏感信息。

0