【发布时间】:2015-03-02 08:17:58
【问题描述】:
我在MySQL 数据库中有一个名为mediumblob 类型的照片的列,它可以是NULL。
这应该代表显示在 Web 应用程序右上角的员工的小照片。
新员工通过表单插入MySQL 数据库。
<form action="insert" method="post" enctype="multipart/form-data">
...
<label for="photo">Photo</label>
<input type="file" name="photo">
...
</form>
照片将按如下方式进行验证:
-
可以卸载(表格中不会提供照片)
如果提供了一些照片,否则
-
应该是图片类型
-
图片大小应该适合这个目的
-
图片的尺寸应该适合这个目的
到目前为止,这是我的验证代码的概要。 我已经创建了一些验证条件(1 和 2)。那些还好吗? 并且不知道如何创建条件3和4。
$file = $_FILES['photo']['tmp_name']
if (!isset($file))
{
$image = ""; // 1), empty string will be inserted into the database
}
else {
$image = addslashes(file_get_contents($_FILES['photo']['tmp_name']));
$image_size = getimagesize($_FILES['photo']['tmp_name']);
if ($image_size == FALSE) {
// 2) not an image file
// display the form again with error message
}
// checking 3)
// checking 4)
}
【问题讨论】:
-
我建议添加扩展检查以确保安全nullcandy.com/php-image-upload-security-how-not-to-do-it
-
如果我是你,我会使用 mime 类型。也看看斑马图像。这是一个优秀的非常简单的 php 库,这将使这变得轻而易举。 Zebra Image。它也是一个非常小的文件。它基本上利用了 PHP 的图像功能并对其进行了简化。
-
@Rafael mime-type 检查不安全...它是客户端控制的 [T]他的值完全在客户端的控制之下,而不是在 PHP 端检查。 - 我之前评论中的链接
-
@Rafael 查看我的第一条评论 ;)
-
@Mramaa 您的 cmets 具有误导性。在
$_FILES中发送的['type']是客户端计算出来的,可以进行操作,但是作者并没有这样做,仍然可以使用PHP的Fileinfo扩展来生成自己的MIME判断。
标签: php image validation file-upload