当前位置:首页 > PHP

php实现用户个人主页

2026-02-14 06:07:17PHP

创建数据库表结构

设计一个用户表存储基本信息,例如users表包含id, username, email, password_hash, avatar, bio等字段。使用MySQL创建表:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL UNIQUE,
    password_hash VARCHAR(255) NOT NULL,
    avatar VARCHAR(255) DEFAULT 'default.jpg',
    bio TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

用户认证与会话管理

实现登录功能确保用户访问个人主页时已认证。使用PHP的session_start()管理用户状态:

session_start();
if (!isset($_SESSION['user_id'])) {
    header('Location: login.php');
    exit;
}

获取用户数据

从数据库查询当前用户信息并显示在个人主页:

$userId = $_SESSION['user_id'];
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$userId]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

构建个人主页模板

创建HTML模板展示用户信息,例如profile.php

<div class="profile-header">
    <img src="/avatars/<?= htmlspecialchars($user['avatar']) ?>" alt="Profile Image">
    <h1><?= htmlspecialchars($user['username']) ?></h1>
</div>
<div class="profile-bio">
    <p><?= nl2br(htmlspecialchars($user['bio'])) ?></p>
</div>

处理表单更新

允许用户编辑个人资料,创建表单和处理逻辑:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $bio = $_POST['bio'];
    $stmt = $pdo->prepare("UPDATE users SET bio = ? WHERE id = ?");
    $stmt->execute([$bio, $userId]);
    header('Location: profile.php');
    exit;
}

文件上传处理

实现头像上传功能,确保安全处理文件:

if (isset($_FILES['avatar'])) {
    $allowed = ['jpg', 'jpeg', 'png'];
    $ext = pathinfo($_FILES['avatar']['name'], PATHINFO_EXTENSION);

    if (in_array(strtolower($ext), $allowed)) {
        $newName = uniqid() . '.' . $ext;
        move_uploaded_file($_FILES['avatar']['tmp_name'], "avatars/$newName");

        $stmt = $pdo->prepare("UPDATE users SET avatar = ? WHERE id = ?");
        $stmt->execute([$newName, $userId]);
    }
}

安全防护措施

对所有用户输入使用htmlspecialchars()防止XSS攻击,预处理SQL语句防止注入:

$username = htmlspecialchars($_POST['username'], ENT_QUOTES, 'UTF-8');
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
$stmt->execute([$username]);

路由与访问控制

确保用户只能访问自己的个人主页,通过验证会话ID与请求ID匹配:

php实现用户个人主页

if ($_GET['id'] != $_SESSION['user_id']) {
    header('HTTP/1.0 403 Forbidden');
    exit;
}

分享给朋友:

相关文章

如何实现vue验证用户

如何实现vue验证用户

验证用户的基本流程 在Vue中验证用户通常涉及前端表单验证、后端API交互以及状态管理。以下是实现用户验证的常见方法。 前端表单验证 使用Vue的响应式特性和第三方库(如VeeValidate)对用…

php添加用户怎么实现

php添加用户怎么实现

创建用户表单 在HTML中设计一个用户注册表单,包含必要的字段如用户名、密码、邮箱等。表单的action属性指向处理用户添加的PHP脚本。 <form action="add_user.php…

php实现 用户

php实现 用户

PHP 用户系统实现 数据库设计 创建用户表存储用户信息,基本字段包括用户ID、用户名、密码(加密)、邮箱、注册时间等。使用MySQL示例: CREATE TABLE users ( id…

php实现@用户

php实现@用户

PHP 实现用户提及功能(@用户) 在 PHP 中实现类似社交媒体的用户提及功能(@用户),主要涉及字符串处理、数据库查询和前端交互。以下是关键实现步骤: 字符串匹配与提取 使用正则表达式匹配文本中…

php实现@用户

php实现@用户

实现@用户功能的方法 在PHP中实现@用户功能通常涉及前端和后端的协同工作,包括文本解析、用户匹配和数据库查询等步骤。以下是具体的实现方法: 前端实现 使用JavaScript监听用户输入,检测@符…

PHP用户实现聊天

PHP用户实现聊天

PHP实现聊天功能的方法 基于WebSocket的实时聊天 安装Ratchet库(PHP WebSocket库)并通过Composer引入: composer require cboden/ratc…