Php 是在服务器端检查文件吗?
我有一份申请http://helios.hud.ac.uk/u0867587/Files/Files.php 如果打开应用程序,请单击添加问题按钮。这将添加一个表行。现在,在文件输入中选择一个无效的文件,例如.txt文件。现在单击“提交详细信息”按钮,它将在警报中说明问题1的不受支持的文件类型。现在返回文件输入并将文件更改为有效格式.png、.jpg、.jpeg或.gif,然后在完成此操作后,再次单击提交详细信息按钮,此时会出现一个确认框,说明消息以及是否要继续 现在,这一切都可以在客户端正常工作,但我想要的是,当用户单击SubmitDetails按钮时,我希望它检查服务器端和客户端的文件格式是否正确,以确保安全 我不知道的是,如果下面的代码在服务器端和客户端检查文件,因为如果在上角提交后选择了错误的文件,则不会从回显中显示任何消息 下面是php代码:Php 是在服务器端检查文件吗?,php,jquery,Php,Jquery,我有一份申请http://helios.hud.ac.uk/u0867587/Files/Files.php 如果打开应用程序,请单击添加问题按钮。这将添加一个表行。现在,在文件输入中选择一个无效的文件,例如.txt文件。现在单击“提交详细信息”按钮,它将在警报中说明问题1的不受支持的文件类型。现在返回文件输入并将文件更改为有效格式.png、.jpg、.jpeg或.gif,然后在完成此操作后,再次单击提交详细信息按钮,此时会出现一个确认框,说明消息以及是否要继续 现在,这一切都可以在客户端正常工
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
}