Php 限制上载到PDF和MS Word文件
我正在使用PHP制作一个文件上传程序,希望将其限制为PDF和Microsoft Word文件。但是,它目前允许从所有文件类型上传到数据库。如何将其限制为仅允许PDF和Microsoft 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
# 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();
}