当前位置:首页 > PHP

php实现登录上传图片

2026-02-28 04:30:43PHP

PHP 登录与图片上传实现

用户登录验证

创建一个登录表单(login.php),包含用户名和密码输入字段。表单提交后,使用 PHP 验证用户凭据。

// login.php
<form action="authenticate.php" method="post">
    <input type="text" name="username" placeholder="Username">
    <input type="password" name="password" placeholder="Password">
    <button type="submit">Login</button>
</form>

在 authenticate.php 中处理登录逻辑:

// authenticate.php
session_start();
$username = $_POST['username'];
$password = $_POST['password'];

// 验证逻辑(示例中使用硬编码,实际应查询数据库)
if ($username === 'admin' && $password === 'password') {
    $_SESSION['logged_in'] = true;
    $_SESSION['username'] = $username;
    header('Location: upload.php');
} else {
    echo "Invalid credentials";
}

图片上传功能

创建上传表单(upload.php),确保用户已登录:

// upload.php
session_start();
if (!isset($_SESSION['logged_in']) || !$_SESSION['logged_in']) {
    header('Location: login.php');
    exit;
}
?>
<form action="process_upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="image" accept="image/*">
    <button type="submit">Upload</button>
</form>

处理上传的图片(process_upload.php):

// process_upload.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) {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}

// 检查文件大小(限制为5MB)
if ($_FILES["image"]["size"] > 5000000) {
    echo "File is too large.";
    $uploadOk = 0;
}

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

// 检查上传状态
if ($uploadOk == 0) {
    echo "File was not uploaded.";
} else {
    if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
        echo "The file " . htmlspecialchars(basename($_FILES["image"]["name"])) . " has been uploaded.";
    } else {
        echo "Error uploading file.";
    }
}

安全增强措施

创建上传目录并设置适当权限:

mkdir uploads
chmod 755 uploads

在服务器配置中限制上传文件大小(php.ini):

upload_max_filesize = 5M
post_max_size = 6M

考虑使用数据库存储上传记录:

// 连接数据库并存储记录
$pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
$stmt = $pdo->prepare("INSERT INTO uploads (username, filename, upload_date) VALUES (?, ?, NOW())");
$stmt->execute([$_SESSION['username'], basename($_FILES["image"]["name"])]);

错误处理与用户反馈

实现更友好的错误提示:

// 在 process_upload.php 中添加
if (!is_dir($target_dir)) {
    die("Upload directory does not exist");
}

if (!is_writable($target_dir)) {
    die("Upload directory is not writable");
}

添加文件重命名功能避免冲突:

php实现登录上传图片

$new_filename = uniqid() . '.' . $imageFileType;
$target_file = $target_dir . $new_filename;

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

相关文章

php实现搜索功能

php实现搜索功能

实现基础搜索功能 使用PHP和MySQL实现基础的搜索功能需要结合表单提交与数据库查询。创建一个HTML表单用于接收用户输入的搜索关键词,通过PHP处理表单数据并查询数据库。 // 搜索表单 (HT…

php实现分页

php实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (int…

php mvc实现

php mvc实现

PHP MVC 实现步骤 模型(Model)层 模型负责数据处理和业务逻辑,通常与数据库交互。创建一个基类模型,其他具体模型继承它。 class Model { protected $db;…

php 实现表单验证

php 实现表单验证

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

php实现登录功能

php实现登录功能

创建登录表单 在HTML中创建一个表单,包含用户名和密码输入框。表单的action属性指向处理登录的PHP文件,method设置为POST。 <form action="login.php"…

js实现上传图片预览

js实现上传图片预览

使用FileReader实现图片预览 通过FileReader对象读取用户选择的图片文件,并将其显示在页面上。这种方法适用于现代浏览器。 // HTML部分 <input type="file…