当前位置:首页 > PHP

php实现用户个人主页

2026-04-03 14:14:09PHP

PHP 实现用户个人主页

数据库设计与连接

创建用户表 users 包含基础字段:

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

建立数据库连接文件 config.php

<?php
$host = 'localhost';
$dbname = 'user_db';
$username = 'root';
$password = '';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    die("Connection failed: " . $e->getMessage());
}
?>

用户登录验证

创建登录验证逻辑 auth.php

session_start();
require 'config.php';

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

    $stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
    $stmt->execute([$email]);
    $user = $stmt->fetch();

    if ($user && password_verify($password, $user['password'])) {
        $_SESSION['user_id'] = $user['id'];
        header("Location: profile.php");
    }
}

个人主页显示

创建个人主页文件 profile.php

<?php
session_start();
require 'config.php';

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

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

<!DOCTYPE html>
<html>
<head>
    <title><?= htmlspecialchars($user['username']) ?>'s Profile</title>
</head>
<body>
    <div class="profile-header">
        <img src="<?= htmlspecialchars($user['avatar']) ?>" alt="Profile Picture">
        <h1><?= htmlspecialchars($user['username']) ?></h1>
    </div>

    <div class="profile-bio">
        <p><?= nl2br(htmlspecialchars($user['bio'])) ?></p>
    </div>
</body>
</html>

用户数据更新

php实现用户个人主页

创建资料更新页面 edit_profile.php

<?php
session_start();
require 'config.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $bio = $_POST['bio'];
    $userId = $_SESSION['user_id'];

    $stmt = $pdo->prepare("UPDATE users SET bio = ? WHERE id = ?");
    $stmt->execute([$bio, $userId]);
    header("Location: profile.php");
}
?>

文件上传处理

实现头像上传功能:

if (isset($_FILES['avatar'])) {
    $targetDir = "uploads/";
    $targetFile = $targetDir . basename($_FILES["avatar"]["name"]);
    $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));

    $check = getimagesize($_FILES["avatar"]["tmp_name"]);
    if ($check !== false) {
        move_uploaded_file($_FILES["avatar"]["tmp_name"], $targetFile);

        $stmt = $pdo->prepare("UPDATE users SET avatar = ? WHERE id = ?");
        $stmt->execute([$targetFile, $_SESSION['user_id']]);
    }
}

安全增强措施

添加输入验证和CSRF防护:

php实现用户个人主页

function sanitizeInput($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

// CSRF Token Generation
if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

完整功能整合

将所有组件整合到MVC结构中:

project/
├── config/
│   └── database.php
├── controllers/
│   ├── AuthController.php
│   └── ProfileController.php
├── models/
│   └── User.php
├── views/
│   ├── auth/
│   │   ├── login.php
│   │   └── register.php
│   └── profile/
│       ├── show.php
│       └── edit.php
└── public/
    ├── css/
    └── uploads/

性能优化建议

启用PHP缓存和数据库索引:

ALTER TABLE users ADD INDEX idx_email (email);

在PHP配置中启用OPcache:

zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60

分享给朋友:

相关文章

vue实现用户

vue实现用户

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

react中如何限制用户输入

react中如何限制用户输入

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

vue实现用户添加功能

vue实现用户添加功能

实现用户添加功能的基本步骤 在Vue中实现用户添加功能通常涉及表单处理、数据绑定、API调用等环节。以下是核心实现方法: 创建表单组件 使用Vue的v-model实现表单数据双向绑定: <t…

vue实现用户鉴权

vue实现用户鉴权

Vue 实现用户鉴权的方法 基于路由守卫的鉴权 在 router/index.js 中配置全局前置守卫,通过 meta 字段标记需要鉴权的路由: const router = new VueRout…

php实现@用户

php实现@用户

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

vue用户功能实现

vue用户功能实现

Vue用户功能实现方案 用户功能是Web应用的核心模块之一,通常包括注册、登录、个人信息管理等功能。以下是基于Vue.js的实现方案: 用户注册功能 创建注册表单组件,包含用户名、邮箱、密码等字段…