当前位置:首页 > PHP

php登陆注册功能实现

2026-02-27 17:05:02PHP

PHP 登录注册功能实现

数据库准备

创建一个名为 users 的表,包含以下字段:

  • id:自增主键
  • username:用户名,唯一
  • email:邮箱,唯一
  • password:密码(存储哈希值)
  • created_at:注册时间

SQL 示例:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

注册功能实现

创建一个 register.php 文件,处理用户注册逻辑。

<?php
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
    $email = $_POST['email'];
    $password = password_hash($_POST['password'], PASSWORD_DEFAULT);

    // 检查用户名或邮箱是否已存在
    $check = $conn->prepare("SELECT id FROM users WHERE username = ? OR email = ?");
    $check->bind_param("ss", $username, $email);
    $check->execute();
    $check->store_result();

    if ($check->num_rows > 0) {
        echo "用户名或邮箱已存在";
    } else {
        // 插入新用户
        $stmt = $conn->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
        $stmt->bind_param("sss", $username, $email, $password);

        if ($stmt->execute()) {
            echo "注册成功";
        } else {
            echo "注册失败";
        }
    }
}
?>

登录功能实现

创建一个 login.php 文件,处理用户登录逻辑。

<?php
session_start();
$conn = new mysqli('localhost', 'username', 'password', 'database');

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];

    $stmt = $conn->prepare("SELECT id, username, password FROM users WHERE username = ?");
    $stmt->bind_param("s", $username);
    $stmt->execute();
    $result = $stmt->get_result();

    if ($result->num_rows == 1) {
        $user = $result->fetch_assoc();

        if (password_verify($password, $user['password'])) {
            $_SESSION['user_id'] = $user['id'];
            $_SESSION['username'] = $user['username'];
            echo "登录成功";
        } else {
            echo "密码错误";
        }
    } else {
        echo "用户不存在";
    }
}
?>

登录状态检查

创建一个 check_login.php 文件,检查用户是否已登录。

<?php
session_start();

if (isset($_SESSION['user_id'])) {
    echo "已登录,用户ID: " . $_SESSION['user_id'];
} else {
    echo "未登录";
}
?>

注销功能

创建一个 logout.php 文件,处理用户注销逻辑。

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

安全注意事项

  1. 使用 password_hash()password_verify() 处理密码
  2. 使用预处理语句防止 SQL 注入
  3. 对用户输入进行验证和过滤
  4. 使用 HTTPS 加密传输数据
  5. 设置 CSRF 防护措施

前端表单示例

注册表单 (register_form.php):

<form action="register.php" method="post">
    <input type="text" name="username" placeholder="用户名" required>
    <input type="email" name="email" placeholder="邮箱" required>
    <input type="password" name="password" placeholder="密码" required>
    <button type="submit">注册</button>
</form>

登录表单 (login_form.php):

php登陆注册功能实现

<form action="login.php" method="post">
    <input type="text" name="username" placeholder="用户名" required>
    <input type="password" name="password" placeholder="密码" required>
    <button type="submit">登录</button>
</form>

标签: 功能php
分享给朋友:

相关文章

vue实现轨道功能

vue实现轨道功能

实现轨道功能的基本思路 轨道功能通常指在界面中创建可滑动的轨道,用户可以通过拖动或点击轨道上的元素进行交互。Vue.js结合其响应式特性和组件化开发方式,可以高效实现这一功能。 核心实现步骤 创建轨…

vue实现分页功能

vue实现分页功能

Vue 分页功能实现 在 Vue 中实现分页功能通常需要结合后端 API 或前端数据分页逻辑。以下是两种常见的实现方式: 前端分页实现 适用于数据量较小的情况,直接在 Vue 组件中处理分页逻辑。…

vue电影功能实现

vue电影功能实现

Vue 电影功能实现 数据获取与展示 使用 Axios 或 Fetch API 从电影 API(如 TMDb、豆瓣 API)获取数据。在 Vue 的 created 或 mounted 生命周期钩子中…

vue实现后台功能

vue实现后台功能

Vue 实现后台功能的方法 Vue.js 是一个流行的前端框架,适合构建后台管理系统。以下是实现后台功能的常见方法和步骤。 项目初始化 使用 Vue CLI 或 Vite 初始化项目: # Vue…

php实现即时通讯

php实现即时通讯

PHP 实现即时通讯的方案 即时通讯(IM)可以通过多种方式实现,PHP 作为服务器端语言,通常需要结合前端技术(如 WebSocket、AJAX)或第三方服务来实现实时通信。以下是几种常见的实现方式…

php 函数实现

php 函数实现

PHP 函数实现基础 PHP 函数的定义使用 function 关键字,后跟函数名和参数列表。函数名不区分大小写,但建议保持一致。 function functionName($param1, $p…