当前位置:首页 > 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 实现删除用户功能 在 Vue 中实现删除用户功能通常涉及前端界面交互和后端 API 调用。以下是常见的实现方式: 前端部分 创建删除按钮并绑定点击事件: <button @clic…

vue用户功能实现

vue用户功能实现

Vue 用户功能实现方案 用户登录与认证 使用 Vue Router 和 Vuex 实现用户登录状态管理。前端发送登录请求到后端 API,获取 token 后存储在 localStorage 或 Vu…

vue实现机构用户

vue实现机构用户

Vue实现机构用户功能 在Vue中实现机构用户功能通常涉及前端页面展示、表单交互、数据绑定以及与后端API的通信。以下是实现机构用户功能的关键步骤: 1. 创建机构用户组件 新建一个Vue组件(如O…

vue实现用户删除

vue实现用户删除

Vue 实现用户删除功能 在 Vue 中实现用户删除功能通常涉及前端界面交互和后端 API 调用。以下是常见的实现方式: 删除按钮组件 <template> <button @…

react中如何限制用户输入

react中如何限制用户输入

限制用户输入的方法 在React中,可以通过多种方式限制用户输入,确保输入内容符合预期格式或范围。以下是几种常见的方法: 使用受控组件 通过value和onChange属性控制输入值,在事件处理函数…

css怎么制作个人主页

css怎么制作个人主页

制作个人主页的CSS方法 基础结构搭建 使用HTML创建基本框架,包含头部、主体内容和页脚。CSS负责样式设计,确保布局清晰。 <!DOCTYPE html> <html>…