…">
当前位置:首页 > PHP

php实现登录上传图片

2026-01-29 07:17:20PHP

PHP实现登录与图片上传功能

登录功能实现

创建登录表单HTML文件(login.html):

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

处理登录的PHP文件(login.php):

<?php
session_start();
$valid_username = "admin";
$valid_password = "123456";

if ($_POST['username'] == $valid_username && $_POST['password'] == $valid_password) {
    $_SESSION['logged_in'] = true;
    header("Location: upload.php");
} else {
    echo "用户名或密码错误";
}
?>

图片上传功能实现

创建上传表单HTML文件(upload.php):

php实现登录上传图片

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

处理上传的PHP文件(upload_handler.php):

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

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

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

// 检查文件大小
if ($_FILES["image"]["size"] > 500000) {
    die("文件太大");
}

// 允许特定格式
$allowed_types = ["jpg", "png", "jpeg", "gif"];
if (!in_array($imageFileType, $allowed_types)) {
    die("只允许JPG, JPEG, PNG和GIF格式");
}

// 上传文件
if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
    echo "文件". htmlspecialchars(basename($_FILES["image"]["name"])). "上传成功";
} else {
    echo "上传失败";
}
?>

安全注意事项

创建uploads目录并设置权限:

php实现登录上传图片

mkdir uploads
chmod 755 uploads

在upload_handler.php中添加更多安全检查:

// 防止目录遍历攻击
if (strpos($_FILES["image"]["name"], '../') !== false) {
    die("非法文件名");
}

// 生成唯一文件名防止覆盖
$new_filename = uniqid() . '.' . $imageFileType;
$target_file = $target_dir . $new_filename;

数据库集成(可选)

如果需要将上传记录存入数据库:

// 连接数据库
$conn = new mysqli("localhost", "username", "password", "database");

// 存储上传记录
$stmt = $conn->prepare("INSERT INTO uploads (filename, upload_time) VALUES (?, NOW())");
$stmt->bind_param("s", $new_filename);
$stmt->execute();
$stmt->close();
$conn->close();

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

相关文章

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT AU…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…

无限分类实现 php

无限分类实现 php

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、部门架构等。以下是几种常见的实现方式: 邻接列表模式(Adjacency List) 邻接列表是最简单的实现方式,通过在每个记录…

php session实现购物车

php session实现购物车

PHP Session 实现购物车 初始化 Session 确保在使用 Session 前调用 session_start() 函数。通常放在 PHP 文件的最顶部。 <?php sessio…

php 实现路由

php 实现路由

PHP 实现路由的方法 在 PHP 中实现路由功能可以通过多种方式完成,以下是几种常见的实现方法: 使用原生 PHP 实现简单路由 通过解析 URL 并匹配对应的处理逻辑,可以实现基本的路由功能。以…

php array实现

php array实现

PHP 数组实现 PHP 数组是一种灵活的数据结构,可以存储多个值。以下是几种常见的实现方式: 索引数组 索引数组使用数字作为键名,默认从0开始递增。 $fruits = array("Apple…