首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >限制除一种文件格式外所有要上载的文件格式

限制除一种文件格式外所有要上载的文件格式
EN

Stack Overflow用户
提问于 2014-06-19 10:38:36
回答 1查看 45关注 0票数 0

我正在学习MySQL和PHP,在我的第一部作品中,我已经开始在一个评审小组中工作。您可以简单地将您的产品评论上传到数据库,并在稍后直接从面板浏览它们,在本例中是一个本地网站。

问题是,我不知道如何控制上传时的每一种文件格式,除了.pdf!更清楚的是:我只想让我的上传表单接受上传的.pdf文件。目前,它没有限制任何东西,下面是我的代码:

代码语言:javascript
运行
复制
<?php
  if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0)
  {                                      
    $revName = $_POST['revname'];
    $revRating = $_POST['rating'];
    $revRecommend = $_POST['recommend'];
    $fileName = $_FILES['userfile']['name'];
    $tmpName = $_FILES['userfile']['tmp_name'];
    $fileSize = $_FILES['userfile']['size'];
    $fileType = $_FILES['userfile']['type'];

    $fp   = fopen($tmpName, 'r');
    $content = fread($fp, filesize($tmpName));
    $content = addslashes($content);
    fclose($fp);

    if(!get_magic_quotes_gpc())
    {
      $fileName = addslashes($fileName);
    }

    rename($tmpName,"C:\\xampp\\htdocs\\ReviewArchieve\\files\\reviews\\".$fileName);

    include 'include/config.php';
    include 'include/opendb.php';

    $query = "INSERT INTO files (revname, rating, recommend, name, size, type, content)".
    "VALUES ('$revName', '$revRating', '$revRecommend', '$fileName', '$fileSize', '$fileType', '$content')";

    mysql_query($query) or die('Error, query failed'.mysql_error());
    include 'include/closedb.php';

    echo "<br>File $fileName uploaded<br>";
  }
?>

成功了!

多亏了MIME的引用,我终于学到了一些新东西,并通过一点调查完成了我的任务!在我的情况下,不管我做了什么,在正确的答案中提供的代码部分根本不起作用,相反,我使用了以下方法:

我注意到我已经包含了文件类型。$fileType =$_FILES‘’userfile‘;

所以,现在我只需做一个,如果从它,像这样:

代码语言:javascript
运行
复制
if($fileType == 'application/pdf') {
   *** Code to be driven here, same as above on the original code ***
}
else {
   echo "Invalid file, upload interrupted!";
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-19 10:46:47

答案:

代码语言:javascript
运行
复制
....
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0)
{
    $tmpName = $_FILES['userfile']['tmp_name'];
    if (mime_content_type($tmpname) != 'application/pdf') { 
        die("uploaded file not valid");
    }                              
....

这里有很多问题--最大的问题是:

  1. SQL注入您必须净化您的用户输入,否则小鲍比表将访问您。考虑使用参数化查询
  2. 你应该检查文件的mimetype。虽然不推荐http://www.php.net//manual/en/function.mime-content-type.php,但它会计算出这个框。你应该使用文件信息。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24304575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档