当前位置:首页 > 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匹配:

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

php实现用户个人主页

分享给朋友:

相关文章

vue实现用户

vue实现用户

Vue实现用户功能 Vue.js可以用于构建用户相关的功能,包括用户登录、注册、个人信息管理等。以下是常见的实现方法和步骤: 用户登录功能 在Vue中实现用户登录功能,通常需要创建一个登录表单…

如何实现vue验证用户

如何实现vue验证用户

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

vue实现bpmn选择用户

vue实现bpmn选择用户

在Vue中实现BPMN用户选择功能 要在Vue项目中实现BPMN用户选择功能,需要结合BPMN.js库和自定义用户选择组件。以下是具体实现方法: 安装BPMN.js和相关依赖 确保项目中已安装bpm…

react页面如何获取用户id

react页面如何获取用户id

获取用户ID的方法 在React应用中获取用户ID通常涉及前端与后端的交互,以下是几种常见实现方式: 通过登录认证获取 用户登录后,后端通常会返回包含用户ID的令牌(如JWT)或会话信息。前端可将这…

css怎么制作个人主页

css怎么制作个人主页

制作个人主页的CSS方法 布局设计 使用Flexbox或Grid布局实现响应式设计。Flexbox适合一维布局,Grid适合二维复杂布局。通过display: flex或display: grid定义…

php实现 用户

php实现 用户

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