首页 > 编程语言 >php判断文件真实后缀(防止修改后缀)

php判断文件真实后缀(防止修改后缀)

时间:2024-07-24 16:30:43浏览次数:11  
标签:文件 真实 后缀 修改 防止 php

<?php

// 判断文件真实类型
function get_file_type($fileName)
{
    $file = fopen($fileName, "rb");
    $bin = fread($file, 2); // 只读2字节
    fclose($file);
    $strInfo = @unpack("C2chars", $bin); // 将字节转换为字节二进制的数组
    $typeCode = (int)($strInfo['chars1'] . $strInfo['chars2']);
    $fileType = '';
    switch ($typeCode) {
        case 7790:
            $fileType = 'exe';
            break;
        case 7784:
            $fileType = 'midi';
            break;
        case 8297:
            $fileType = 'rar';
            break;
        case 8075:
            $fileType = 'zip';
            break;
        case 255216:
            $fileType = 'jpg';
            break;
        case 7173:
            $fileType = 'gif';
            break;
        case 6677:
            $fileType = 'bmp';
            break;
        case 13780:
            $fileType = 'png';
            break;
        default:
            $fileType = 'unknown: ' . $typeCode;
    }
    //Fix
    if ($strInfo['chars1'] == '-1' && $strInfo['chars2'] == '-40') return 'jpg';
    if ($strInfo['chars1'] == '-119' && $strInfo['chars2'] == '80') return 'png';
    return $fileType;
}

 

标签:文件,真实,后缀,修改,防止,php
From: https://www.cnblogs.com/mldyfre/p/18321176

相关文章

  • 在.NET MVC 中使用 Quartz.NET 创建可以修改时间的定时任务,并结合 Autofac 进行依赖注
    net4.6.1  nuget包Quartz  3.0Autofac  5.0Autofac.Mvc5 5.0  步骤1:创建Quartz任务首先,创建一个实现 IJob 接口的任务类。这个类将定义你希望定时执行的操作。publicclassMyJob:IJob{publicTaskExecute(IJobExecutionContextcontext)......
  • PHP中static的使用
    本文由ChatMoney团队出品PHP,作为一种面向对象的编程语言,为开发者提供了丰富的特性和功能,助力构建高效的应用程序。其中,static关键字在类和方法中的应用尤为重要,它提供了一种独特的变量和方法访问机制。本文将深入探讨static关键字的使用方法,并通过具体代码示例来指导实践。一......
  • 如何在不修改DBAPI游标的情况下捕获SQLAlchemy中的所有SQL查询结果?
    我正在尝试实现一个系统,该系统捕获SQLAlchemy中的所有查询结果以用于日志记录和分析目的。然而,在尝试直接修改DBAPI游标时,我遇到了挑战,因为它的属性通常是只读的。因此需要:捕获SELECTSQL查询的所有结果,并使用不同的结果获取方法(fetchone、fetchmany、fetchall、ite......
  • SA & SAM 后缀数组 & 后缀自动机
    终于来到大名鼎鼎的后缀结构了,后缀结果可以解决许多子串问题。后缀结果是字符串经常考察的点,需要重点学习。SA后缀排序,是指这个对字符串\(s\)的每一个后缀字符串进行排序,通过处理每个后缀的前缀来解决子串问题。\(SA\):排名为\(i\)对应原字符串下标,\(rk\):下标为\(i\)的后缀排名。......
  • 织梦dedecms自定义表单选项必填怎么修改?
    我们先在plus/diy.php文件中的的第40行下加上一下代码//增加必填字段判断if($required!=&#39;&#39;){if(preg_match(&#39;/,/&#39;,$required)){$requireds=explode(&#39;,&#39;,$required);foreach($requiredsas$field){if($$field==&#39;&#39;){......
  • 【YashanDB知识库】yac修改参数后关闭数据库hang住
    【标题】yac修改参数后关闭数据库hang住【问题分类】性能优化【关键词】YashanDB,yac,shutdownhang【问题描述】修改yac参数后执行shutdownimmediate,数据库hang住。【问题原因分析】Shutdown操作时,线程在获取gInstance->trigger->sema信号量时卡住。该信号量应由mai......
  • 使用PHP实现悲观锁的最佳实践。里面包含源码
    在数据库编程中,确保数据的一致性和完整性是非常重要的。当多个用户或线程同时访问和修改同一条数据记录时,可能会出现并发问题,比如读写冲突、数据丢失等。为了解决这些问题,我们可以使用并发控制机制,其中一种常见的方法就是悲观锁。什么是悲观锁?悲观锁是一种并发控制策......
  • C#知识|账号管理系统:修改登录密码界面的UI设计
    哈喽,你好啊!我是雷工!本节记录添加修改登录密码界面的过程,以下为练习笔记。01 效果演示演示跳转打开修改登录密码子窗体效果:02添加窗体在UI层添加一个Windows窗体,命名为:FrmModifyPwd.cs;03设置窗体属性按照下表的内容设置窗体的相关属性:设置属性属性值备......
  • laravel11: php时间不正确
    一,问题表现服务器时间正确,php时间正确laravel时间不正确未使用laravel框架使用laravel框架:可以看到,使用laravel框架时,时间早8个小时二,解决:  1,配置timezone,编辑php.ini  配置timezone,PRC和Asia/Shanghai均可;date.timezone=Asia/Shanghaidate.timezone=......
  • 使用 ExifTool 修改照片拍摄日期的详细教程
    ExifTool是一款强大且免费的命令行工具,用于读取、写入和编辑数字图像、音频和视频文件的元数据,包括照片的拍摄日期。如果你需要修改照片的拍摄日期,ExifTool是一个非常有效的解决方案。下面是简鹿办公为您准备的详细步骤说明,帮助你使用ExifTool来修改照片的拍摄日期。准备......