当前位置:首页 > PHP

php实现登录上传图片

2026-02-14 05:25:16PHP

PHP 实现登录上传图片

用户登录功能实现

创建一个登录表单 login.php,包含用户名和密码输入字段。表单提交到 login_check.php 进行验证。

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

login_check.php 中验证用户凭据(示例使用硬编码验证,实际应查询数据库):

php实现登录上传图片

// login_check.php
session_start();
$valid_username = 'admin';
$valid_password = 'password123';

if ($_POST['username'] === $valid_username && $_POST['password'] === $valid_password) {
    $_SESSION['logged_in'] = true;
    $_SESSION['username'] = $_POST['username'];
    header('Location: upload.php');
} else {
    echo '登录失败';
}

图片上传功能实现

创建 upload.php 文件,检查用户是否已登录,并显示图片上传表单:

// upload.php
session_start();
if (!isset($_SESSION['logged_in']) || !$_SESSION['logged_in']) {
    header('Location: login.php');
    exit;
}
?>

<form action="upload_handler.php" method="post" enctype="multipart/form-data">
    <input type="file" name="image" accept="image/*">
    <button type="submit">上传图片</button>
</form>

处理上传的 upload_handler.php 文件:

php实现登录上传图片

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

$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["image"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

// 检查是否为真实图片
if (isset($_POST["submit"])) {
    $check = getimagesize($_FILES["image"]["tmp_name"]);
    if ($check !== false) {
        $uploadOk = 1;
    } else {
        echo "文件不是图片。";
        $uploadOk = 0;
    }
}

// 检查文件大小(限制为2MB)
if ($_FILES["image"]["size"] > 2000000) {
    echo "文件太大。";
    $uploadOk = 0;
}

// 允许特定文件格式
if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg") {
    echo "只允许 JPG, JPEG, PNG 文件。";
    $uploadOk = 0;
}

// 检查上传状态并移动文件
if ($uploadOk == 0) {
    echo "文件未上传。";
} else {
    if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
        echo "文件 " . htmlspecialchars(basename($_FILES["image"]["name"])) . " 上传成功。";
    } else {
        echo "上传文件时出错。";
    }
}

安全注意事项

确保 uploads/ 目录存在且有写入权限:

mkdir uploads
chmod 755 uploads

限制上传文件类型和大小,防止恶意文件上传。在生产环境中,应使用更严格的安全措施,如:

  • 数据库存储用户凭据并进行安全哈希处理
  • 文件重命名防止目录遍历攻击
  • 添加 CSRF 保护
  • 对上传文件进行病毒扫描

标签: 上传图片php
分享给朋友:

相关文章

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开: $fi…

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常用…

php购物车实现

php购物车实现

PHP购物车实现方法 使用PHP实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。用…

php实现推送

php实现推送

PHP 实现推送功能的方法 PHP 实现推送功能可以通过多种方式完成,包括 WebSocket、Server-Sent Events (SSE)、长轮询或第三方推送服务。以下是几种常见的方法: 使用…

php 实现下载

php 实现下载

PHP 实现文件下载的方法 使用 PHP 实现文件下载可以通过设置 HTTP 头信息,强制浏览器将文件作为附件下载而非直接打开。 基本下载实现 $file_path = 'path/to/your/…

php实现定时

php实现定时

PHP 实现定时任务的方法 PHP 本身是脚本语言,通常需要借助外部工具或框架实现定时任务。以下是几种常见方法: 使用 Cron 任务 Linux 系统自带的 Cron 是常用的定时任务工具。通过编…