Php 是在服务器端检查文件吗?

Php 是在服务器端检查文件吗?,php,jquery,Php,Jquery,我有一份申请http://helios.hud.ac.uk/u0867587/Files/Files.php 如果打开应用程序,请单击添加问题按钮。这将添加一个表行。现在,在文件输入中选择一个无效的文件,例如.txt文件。现在单击“提交详细信息”按钮,它将在警报中说明问题1的不受支持的文件类型。现在返回文件输入并将文件更改为有效格式.png、.jpg、.jpeg或.gif,然后在完成此操作后,再次单击提交详细信息按钮,此时会出现一个确认框,说明消息以及是否要继续 现在,这一切都可以在客户端正常工

我有一份申请http://helios.hud.ac.uk/u0867587/Files/Files.php

如果打开应用程序,请单击添加问题按钮。这将添加一个表行。现在,在文件输入中选择一个无效的文件,例如.txt文件。现在单击“提交详细信息”按钮,它将在警报中说明问题1的不受支持的文件类型。现在返回文件输入并将文件更改为有效格式.png、.jpg、.jpeg或.gif,然后在完成此操作后,再次单击提交详细信息按钮,此时会出现一个确认框,说明消息以及是否要继续

现在,这一切都可以在客户端正常工作,但我想要的是,当用户单击SubmitDetails按钮时,我希望它检查服务器端和客户端的文件格式是否正确,以确保安全

我不知道的是,如果下面的代码在服务器端和客户端检查文件,因为如果在上角提交后选择了错误的文件,则不会从回显中显示任何消息

下面是php代码:

if(isset($_FILES["imageFile"])) 
{ 

$allowedImageTypes = array("image/pjpeg","image/jpeg","image/jpg","image/png","image/x-png","image/gif");
$file = $_FILES['imageFile'];
$fileType = $file['type'];
if (!in_array($fileType, $allowedImageTypes)) { 
    echo "Unsupported file type";
}
else
{
    // Process the file
}
}
?>
以下是关于如何在每行中添加文件输入和问题编号的代码:

var qnum = 1;

function insertQuestion(form) {   


    var $tbody = $('#qandatbl > tbody'); 
    var $tr = $("<tr class='optionAndAnswer' align='center'></tr>");
    var $qid = $("<td class='qid'>" + qnum + "</td>");
    var $image = $("<td class='image'></td>");


            var $imagefile = $('<input />')
        .attr({
            type: 'file',
            name: 'imageFile',
            class: 'imageFile'
        });

        $image.append($imagefile);

            var $imageclear = $('<input />')
        .attr({
            type: 'button',
            name: 'imageClear',
            class: 'imageClear',
            value: 'Clear File'
        });

        $image.append($imageclear);


    $tr.append($qid);
    $tr.append($image);   
    $tbody.append($tr); 

}
下表中添加了表行:

<form id="enter" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post" onsubmit="return validateForm(this);" >


<div id="details">
<table id="qandatbl" align="center">
<thead>
<tr>
    <th class="qid">Question No</th>
    <th class="image">Image</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>

</form> 
表单类型应为

<form enctype="multipart/form-data" action="uploader.php" method="POST">
<input type="file" name="userfile" />
文件的mime类型

    $_FILES['userfile']['type']
上载文件的大小(字节)

    $_FILES['userfile']['size']
服务器上存储上载文件的文件的临时文件名

$_FILES['userfile']['tmp_name']
所以


您好,您知道表单操作必须是uploader.php吗?我希望消息显示在同一个页面上,在我的编辑中,我还包括了如何在表中添加数据的代码。如果您编写一个单独的页面,它会更好,因为它可以防止刷新问题。那么有没有一种方法,我可以在单独的页面上编写php,但根本不导航到该页面?我不希望用户看到uploader.php文件,但我希望服务器在后台进行检查,看看它是否是正确的文件。我目前拥有的客户端警报将提醒用户文件类型是否正确。我只想做一个服务器端的检查,以及在安全侧上传页面将只包含任何功能,你想执行,它不会重定向到任何东西,不把任何HTML在其中。只有你想做的数据库事情。
$_FILES['userfile']['tmp_name']
$fileType = $_FILES['userfile']['type'];

if (!in_array($fileType, $allowedImageTypes)) { 
    echo "Unsupported file type";
}
else
{
    // Process the file
}