【发布时间】:2010-06-10 22:52:52
【问题描述】:
现在我有一个函数,它接收我上传的文件,检查扩展名,如果它匹配一组有效的扩展名,它就会被处理。这是一个联系人列表导入器。
我需要弄清楚的是如何确保文件(在本例中为 .csv)实际上是它所说的(例如,不是刚刚重命名为 .csv 的 excel 文件)。
我们的服务器运行 PHP 5.2.13
这是我目前拥有的验证功能
public static function validateExtension($file_name,$ext_array) {
$extension = strtolower(strrchr($file_name,"."));
$valid_extension="FALSE";
if (!$file_name) {
return false;
} else {
if (!$ext_array) {
return true;
} else {
foreach ($ext_array as $value) {
$first_char = substr($value,0,1);
if ($first_char <> ".") {
$extensions[] = ".".strtolower($value);
}
else {
$extensions[] = strtolower($value);
}
}
foreach ($extensions as $value) {
if ($value == $extension) {
$valid_extension = "TRUE";
}
}
if ($valid_extension==="TRUE") {
return true;
} else {
return false;
}
}
}
}
编辑:我现在正在尝试做
exec('file -ir '.$myFile)
当我在终端中运行此命令时,我会得到一个可用的响应。当我通过 php 运行相同的命令时,我得到了不同的东西。任何想法为什么?我已经用 exec、passthru、shell_exec 试过了。并且服务器没有运行安全模式。
【问题讨论】:
-
php excel 阅读器可能会帮助您确定上传的文件是否为 .xls 文件 (PHP-ExcelReader @ sourceforge.net/projects/phpexcelreader/files)
标签: php validation file-upload