利用PHP实现智能文件类型检测的实现代码_php技巧
通常我们想严格限制文件类型的时候,可以简单地用$_FILES['myFile']['type'] 取得文件的 MIME类型然后来检测它是否是合法的类型。
或者我们可以取文件名的最后几个字符来获取文件后缀,不幸的是,这些方法并不足够,可以很容易地改变文件的扩展名绕过这个限制。此外,MIME类型信息是由浏览器发送的,而且,对于大多数浏览器,即使不是全部,是根据文件的扩展名的来给出MIME类型信息的!因此,MIME类型,就像扩展名一样,可以很容易地欺骗。
使用“魔术字节”
确定文件类型的最佳方法是通过检查文件的前几个字节 – 称为“魔字节”。魔术字节本质上是文件头中不同长度在2到40个字节之间的,或在文件末尾的签名。有上百个类型的文件,他们中相当多的文件类型有好几个文件签名与它们相关联。在这里你可以看到一个文件签名列表。
偷懒的办法是使用fileinfo扩展,PHP 5.3.0 默认是启用的(根据官方MANUAL),如果没有启用,你可以自己启用
如在windows下面:
extension=php_fileinfo.dll
linux下面:
extension=fileinfo.so
#如不能正常工作,再加上下面这条
#mime_magic.magicfile=/usr/share/file/magic
windows下面如不能正常工作:
可参考:http://www.php.net/manual/en/fileinfo.installation.php#82570
下载file-5.03-bin.zip ,解压出来,在其中的share目录有magic.mgc 、magic 两个文件。
然后添加一个名为MAGIC的系统环境变量指向magic 文件。如D:\software\PHP\extras\misc\magic
function getFileMimeType($file) {
$buffer = file_get_contents($file);
$finfo = new finfo(FILEINFO_MIME_TYPE);
return $finfo->buffer($buffer);
}
$mime_type = getFileMimeType($file);
switch($mime_type) {
case "image/jpeg":
// your actions go here...
}
处理图像上传
如果你打算只允许图像上传,那么你可以使用内置的getimagesize()函数,以确保用户实际上是上传一个有效的图像文件。如果该文件不是有效的图像文件,这个函数返回false。
// 假设file input 域的name 属性为myfile
$tempFile = $_FILES['myFile']['tmp_name']; // path of the temp file created by PHP during upload
$imginfo_array = getimagesize($tempFile); // returns a false if not a valid image file
if ($imginfo_array !== false) {
$mime_type = $imginfo_array['mime'];
switch($mime_type) {
case "image/jpeg":
// your actions go here...
}
}
else {
echo "This is not a valid image file";
}
手动读取和解释“魔法字节”
如果由于某种原因,你不能安装FileInfo扩展,那么你仍然可以手动确定,通过读取文件的前几个字节,并比较它们与已知的魔法与特定文件类型相关联的字节的文件类型。这个过程肯定少许的试验和错误,因为还有一种可能,有少数非法的魔法字节与合法文件格式关联了。
然而这不是不可能的,几年前,我被要求做一个只允许真正的 mp3 文件上传的脚本文件,并且,当时我们不能用 Fileinfo, 我们只能依靠这种手动检测的方式了.
我花了一段时间来解析一些mp3文件的非法魔法字节,但很快,我得到了一个稳定的上传脚本。
在本文结束前,我想给大家一个警告: 确保你永远没有调用一个 include() 来包含一个上传的文件,因为PHP代码很可能会巧妙地隐藏在图片里面,并且图片也可以成功的通过你的文件检测,当这样的脚本运行时,只可能给系统带来破坏。
译自:http://designshack.co.uk/articles/php-articles/smart-file-type-detection-using-php/

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kawalan Apl Pintar ialah alat yang sangat berguna dalam Windows 11 yang membantu melindungi PC anda daripada apl tidak dibenarkan yang boleh merosakkan data anda, seperti perisian tebusan atau perisian intip. Artikel ini menerangkan maksud Kawalan Aplikasi Pintar, cara ia berfungsi dan cara menghidupkan atau mematikannya dalam Windows 11. Apakah Kawalan Aplikasi Pintar dalam Windows 11? Kawalan Aplikasi Pintar (SAC) ialah ciri keselamatan baharu yang diperkenalkan dalam kemas kini Windows 1122H2. Ia berfungsi dengan Microsoft Defender atau perisian antivirus pihak ketiga untuk menyekat apl yang mungkin tidak diperlukan yang boleh memperlahankan peranti anda, memaparkan iklan yang tidak dijangka atau melakukan tindakan lain yang tidak dijangka. Aplikasi pintar

Dengan kebolehan tiruan AI yang begitu kuat, ia benar-benar mustahil untuk menghalangnya, sama sekali mustahil untuk menghalangnya. Adakah pembangunan AI mencapai tahap ini sekarang? Kaki hadapan anda membuat ciri-ciri wajah anda terbang, dan pada kaki belakang anda, ekspresi yang sama direproduksi Menatap, mengangkat kening, mencebik, tidak kira betapa berlebihan ekspresi itu, semuanya ditiru dengan sempurna. Tingkatkan kesukaran, angkat kening lebih tinggi, buka mata lebih luas, malah bentuk mulutnya bengkok, dan avatar watak maya dapat menghasilkan semula ekspresi dengan sempurna. Apabila anda melaraskan parameter di sebelah kiri, avatar maya di sebelah kanan juga akan menukar pergerakannya dengan sewajarnya untuk memberikan gambaran dekat mulut dan mata Tiruan itu tidak boleh dikatakan sama, tetapi ungkapan itu betul-betul sama (paling kanan). Penyelidikan ini datang dari institusi seperti Universiti Teknikal Munich, yang mencadangkan GaussianAvatars, yang

Majalah "ComputerWorld" pernah menulis artikel yang mengatakan bahawa "pengaturcaraan akan hilang menjelang 1960" kerana IBM membangunkan bahasa baharu FORTRAN, yang membolehkan jurutera menulis formula matematik yang mereka perlukan dan kemudian menyerahkannya kepada komputer, jadi pengaturcaraan tamat. Beberapa tahun kemudian, kami mendengar pepatah baru: mana-mana ahli perniagaan boleh menggunakan istilah perniagaan untuk menerangkan masalah mereka dan memberitahu komputer apa yang perlu dilakukan Menggunakan bahasa pengaturcaraan yang dipanggil COBOL ini, syarikat tidak lagi memerlukan pengaturcara. Kemudian, dikatakan bahawa IBM membangunkan bahasa pengaturcaraan baharu yang dipanggil RPG yang membolehkan pekerja mengisi borang dan menjana laporan, jadi kebanyakan keperluan pengaturcaraan syarikat dapat diselesaikan melaluinya.

Artikel ini dicetak semula dengan kebenaran daripada akaun awam Autonomous Driving Heart. Sila hubungi sumber untuk mencetak semula. Tajuk asal: MotionLM: Multi-Agent Motion Forecasting as Language Modelling Paper pautan: https://arxiv.org/pdf/2309.16534.pdf Gabungan pengarang: Waymo Conference: ICCV2023 Idea kertas: Untuk perancangan keselamatan kenderaan autonomi, ramalkan tingkah laku masa hadapan dengan pasti ejen jalan raya adalah penting. Kajian ini mewakili trajektori berterusan sebagai jujukan token gerakan diskret dan menganggap ramalan gerakan berbilang agen sebagai tugas pemodelan bahasa. Model yang kami cadangkan, MotionLM, mempunyai kelebihan berikut: Pertama

Kedudukan menduduki kedudukan yang tidak boleh diganti dalam pemanduan autonomi, dan terdapat perkembangan yang menjanjikan pada masa hadapan. Pada masa ini, kedudukan dalam pemanduan autonomi bergantung pada RTK dan peta berketepatan tinggi, yang menambahkan banyak kos dan kesukaran kepada pelaksanaan pemanduan autonomi. Bayangkan apabila manusia memandu, mereka tidak perlu mengetahui kedudukan ketepatan tinggi global mereka sendiri dan persekitaran sekeliling yang terperinci Ia sudah cukup untuk mempunyai laluan navigasi global dan sepadan dengan kedudukan kenderaan di laluan itu bidang SLAM. Apakah itu SLAMSLAM (Penyetempatan dan Pemetaan Serentak), juga dikenali sebagai CML (Pemetaan Serentak dan Pemetaan

Robot humanoid, yang berketinggian 1.65 meter, beratnya 55 kilogram dan mempunyai 44 darjah kebebasan dalam badannya, boleh berjalan dengan cepat, mengelak halangan dengan cepat, memanjat cerun naik dan turun secara berterusan, dan menahan hentaman dan gangguan Anda kini boleh membawanya pulang ! Robot humanoid universal Fourier Intelligence GR-1 telah memulakan pra-jualan Dewan Kuliah Robot Robot humanoid universal Fourier GR-1 Fourier Intelligence kini telah dibuka untuk pra-jualan. GR-1 mempunyai konfigurasi batang yang sangat bionik dan kawalan pergerakan antropomorfik Ia mempunyai 44 darjah kebebasan di seluruh badan Ia mempunyai keupayaan untuk berjalan, mengelakkan halangan, memanjat halangan, naik dan turun cerun, menentang gangguan, dan menyesuaikan diri. ke permukaan jalan yang berbeza Ia adalah sistem kecerdasan buatan umum. Halaman pra-jualan tapak web rasmi: www.fftai.cn/order#FourierGR-1# Fourier Intelligence perlu ditulis semula.

01 Apakah itu casis papan selaju? Apa yang dipanggil casis papan selaju menyepadukan bateri, sistem pemacu elektrik, suspensi, brek dan komponen lain pada casis terlebih dahulu untuk mencapai pemisahan dan penyahgandingan badan dan casis. Berdasarkan jenis platform ini, syarikat kereta boleh mengurangkan R&D awal dan kos ujian dengan ketara, sambil bertindak balas dengan pantas kepada permintaan pasaran untuk mencipta model yang berbeza. Lebih-lebih lagi dalam era pemanduan tanpa pemandu, susun atur kereta tidak lagi tertumpu kepada pemanduan, tetapi akan memfokuskan pada atribut ruang Casis jenis papan selaju boleh memberikan lebih banyak kemungkinan untuk pembangunan kabin atas. Seperti yang ditunjukkan dalam gambar di atas, sudah tentu apabila kita melihat casis papan selaju, kita tidak sepatutnya dibingkai oleh kesan pertama "Oh, ia adalah badan yang tidak menanggung beban" apabila kita muncul. Tiada kereta elektrik ketika itu, jadi tiada pek bateri bernilai ratusan kilogram, tiada sistem stereng demi wayar yang boleh menghapuskan tiang stereng, dan tiada sistem brek demi wayar.

01 Teknologi kawalan-dengan-wayar Teknologi kawalan-dengan-wayar kognitif (XbyWire) menukar tindakan pengendalian pemandu melalui penderia kepada isyarat elektrik untuk mencapai kawalan penghantaran, menggantikan sistem mekanikal tradisional atau sistem hidraulik, dan isyarat elektrik secara langsung mengawal penggerak untuk mencapai kawalan Tujuan dan prinsip asas ditunjukkan dalam Rajah 1. Teknologi ini berasal dari pesawat FlybyWire yang dilancarkan oleh National Aeronautics and Space Administration (NASA) pada tahun 1972. Antaranya, "X" adalah seperti nombor yang tidak diketahui dalam persamaan matematik, mewakili pelbagai komponen dan operasi berkaitan dalam kereta yang dikawal secara tradisional secara mekanikal atau hidraulik. Rajah 1 Prinsip asas teknologi kawalan talian
