当前位置:首页 > 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 中验证用户凭据(示例使用硬编码验证,实际应查询数据库):

// 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 文件:

// 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

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

php实现登录上传图片

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

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

相关文章

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form action=…

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…

php 实现类

php 实现类

PHP 类的基本实现 在 PHP 中,类通过 class 关键字定义,后跟类名和一对花括号。类名通常遵循大驼峰命名法(如 ClassName)。以下是基本语法: class ClassName {…

php 实现单点登录

php 实现单点登录

PHP 实现单点登录的方法 单点登录(SSO)允许用户通过一次登录访问多个相互信任的系统。以下是基于 PHP 的实现方案: 基于共享 Session 的方案 在同一个主域名下的子域名间可以通过共享…

php 实现表单验证

php 实现表单验证

表单验证基础方法 使用内置函数和条件判断进行基础验证,例如检查空值、长度限制等: $name = $_POST['name'] ?? ''; $email = $_POST['email'] ??…

jquery上传图片

jquery上传图片

jQuery 上传图片的实现方法 使用 jQuery 实现图片上传可以通过多种方式完成,以下是几种常见的方法: 使用 FormData 和 AJAX 创建一个包含图片文件的表单数据对象,通过 AJA…