Php 限制上载到PDF和MS Word文件

Php 限制上载到PDF和MS Word文件,php,file-upload,Php,File Upload,我正在使用PHP制作一个文件上传程序,希望将其限制为PDF和Microsoft Word文件。但是,它目前允许从所有文件类型上传到数据库。如何将其限制为仅允许PDF和Microsoft Word文件 这是我的密码: <?php # Check if a file has been uploaded if (isset($_FILES['uploaded_file'])) # Make sure the file was sent without errors if ($_FIL

我正在使用PHP制作一个文件上传程序,希望将其限制为PDF和Microsoft Word文件。但是,它目前允许从所有文件类型上传到数据库。如何将其限制为仅允许PDF和Microsoft Word文件

这是我的密码:

<?php

# Check if a file has been uploaded
if (isset($_FILES['uploaded_file']))

# Make sure the file was sent without errors
    if ($_FILES['uploaded_file']['error'] == 0) {
        # Connect to the database
        $dbLink = mysql_connect("localhost", "root") or die(mysql_error());
        mysql_select_db("webproject", $dbLink) or die(mysql_error());

        /* if(mysql_connect()) {
          die("MySQL connection failed: ". mysql_error());
          } */

        # Gather all required data
        $filename = mysql_real_escape_string($_FILES['uploaded_file']['name']);
        $filemime = mysql_real_escape_string($_FILES['uploaded_file']['type'] == "application/pdf" || $_FILES["uploaded_file"]["type"] == "application/msword");
        $size = $_FILES['uploaded_file']['size'];
        $data = mysql_real_escape_string(file_get_contents($_FILES ['uploaded_file']['tmp_name']));
        $subjects = $_POST['subjects'];
        $name = $_POST['name'];
        $phone = $_POST['phone'];
        $email = $_POST['email'];

        # Create the SQL query
        $query = "
                INSERT INTO file(
                    Filename, Filemime, Filesize, Filedata, subjects, name, email, phone, Created
                )
                VALUES (
                    '{$filename}', '{$filemime}', {$size}, '{$data}', '{$subjects}','{$name}','{$email}','{$phone}', NOW()
                )";

        # Execute the query
        $result = mysql_query($query, $dbLink);

        # Check if it was successfull
        if ($result) {
            echo "Success! Your file was successfully added!";
        } else {
            echo "Error! Failed to insert the file";
            echo "<pre>" . mysql_error($dbLink) . "</pre>";
        }
    } else {
        echo "Error!
                    An error accured while the file was being uploaded.
                    Error code: " . $_FILES['uploaded_file']['error'];
    }

# Close the mysql connection
mysql_close($dbLink);


# Echo a link back to the mail page

echo "<p><a href='index.html'>Click here to go back home page!.</a></p>";
?>

我不确定您的代码实际上是如何工作的,但是如果您将位于顶部的第二个if替换为此,则程序将仅在类型为pdf或word时运行,其他文件将导致此错误:“错误!上载文件时出错。错误代码:”$_文件['uploaded_file']['error'];“发生


你的第一个if:if(isset($\u FILES['uploaded\u file'])没有大括号…这不是一个很好的做法。

我不确定你的代码实际上是如何工作的,但是如果你用这个替换顶部的第二个if,程序将仅在类型为pdf或word时运行,其他文件将导致此错误:“错误!上载文件时发生错误。错误代码:“.$\u文件['uploaded\u file']['Error'];”将发生


您的第一个if:if(isset($\u FILES['uploaded\u file'])没有大括号。。。这不是一个很好的做法。

以下是我有时使用的函数的摘录:

 if (!CheckFile($_FILES['uploaded_file'])){
     ?>
            <p>Sorry, your file was not of the correct type</p>
      <?php
     exit();
 }
使用
CheckFile($\u FILES['uploaded\u file'])调用它。
如果文档是pdf word或excel文件,它将返回true

编辑:

使用它的一种方法如下:

if(!CheckFile($\u FILES['uploaded\u file'])){
?>
抱歉,您的文件类型不正确


下面是我有时使用的函数的摘录:

 if (!CheckFile($_FILES['uploaded_file'])){
     ?>
            <p>Sorry, your file was not of the correct type</p>
      <?php
     exit();
 }
使用
CheckFile($\u FILES['uploaded\u file'])调用它。
如果文档是pdf word或excel文件,它将返回true

编辑:

使用它的一种方法如下:

if(!CheckFile($\u FILES['uploaded\u file'])){
?>
抱歉,您的文件类型不正确


这是服务器验证所必需的(一件好事)。但是,您还应该在HTML表单中的输入元素上包含
accept=“…”
属性,这将限制对话框的行为。客户端限制,如
accept
不会阻止有人决定破坏您的应用程序(这就是服务器端验证的目的),但它为普通用户提供了更好的用户体验。非常感谢。它现在可以工作了,我可以上传.PDF和.DOC文件,但不能上传.Docx文件。为什么?这是服务器验证所必需的(一件好事)。但是,您还应该包括
accept=“…”HTML表单中输入元素的
属性,该属性将限制对话框的行为。客户端限制,如
接受
不会阻止有人决定破坏您的应用程序(这就是服务器端验证的目的),但它为普通用户提供了更好的用户体验。非常感谢。它现在可以工作了。我可以上传.PDF和.DOC文件,但不能上传.Docx文件。为什么?我很困惑。我应该在哪里包括函数代码?抱歉,我是php新手。但我真的很感谢你的快速回复。再次感谢。
如果(!CheckFile($_文件['uploaded_文件']))
将计算为
true
如果文件无效,请注意
在继续处理文件之前进行检查,函数本身通常包含在文件的开头或结尾我正在尝试!但是非常感谢。非常感谢。我很困惑。我应该在哪里包含函数代码?对不起,我开始了但是我真的很感谢你的快速回复。再次非常感谢。
if(!CheckFile($\u FILES['uploaded\u file']))
将计算为
true
如果文件无效,请注意
在继续处理文件之前进行检查,函数本身通常包含在文件的开头或结尾!我正在尝试!但非常感谢。非常感谢。
 if (!CheckFile($_FILES['uploaded_file'])){
     ?>
            <p>Sorry, your file was not of the correct type</p>
      <?php
     exit();
 }