如何设置最大文件上传大小并只允许PHP上传某些文件类型?
我制作了一个PHP上传文件脚本。现在,我不希望人们上传庞大的文件,我也不希望他们上传PHP文件。以下是我当前的PHP脚本:如何设置最大文件上传大小并只允许PHP上传某些文件类型?,php,file-upload,max,Php,File Upload,Max,我制作了一个PHP上传文件脚本。现在,我不希望人们上传庞大的文件,我也不希望他们上传PHP文件。以下是我当前的PHP脚本: <?php // Where the file is going to be placed $target_path = "files/"; /* Add the original filename to our target path. Result is "uploads/filename.extension" */ $length = 10;
<?php
// Where the file is going to be placed
$target_path = "files/";
/* Add the original filename to our target path.
Result is "uploads/filename.extension" */
$length = 10;
$characters = '123456789abcdefghijklmnopqrstuvwxyz';
$string="";
for($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(0, strlen($characters))];
}
$pos = strrpos(basename( $_FILES['uploadedfile']['name']), ".");
$ext = str_split(basename( $_FILES['uploadedfile']['name']), $pos);
$target_path = $target_path.$string.$ext[1];
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "<h2>Your file has been uploaded!</h2><br /><p>Your file has been uploaded successfully. <a href='".$target_path."'>Click here</a> to see the file you uploaded.
<br /><br /><br />
<h2>A link to your file</h2><br />The full link to your file is:
<br /><br />
<code>http://www.americaspoeticsoul.com/extras/upload/".$target_path."</code></p>";
} else{
echo "<span class='error'>There was an error uploading the file, please try again.</span>";
}
?>
如何设置最大文件上载大小并仅允许某些文件类型,例如仅JPEG、GIF、PNG和HTML文件
提前感谢,Nathan您可以使用
$\u FILES['uploadedfile'][“size”]
检查文件大小。客户机提供的文件类型在…[“type”]
中提供
但是对于您的代码,您可能希望根据白名单来探测$ext
变量(仅查找要禁止的扩展可能不是一个好主意):
在这一点上,考虑一个现成的助手类/脚本对于所有的上传检查都是可取的。您的代码已经很难阅读。
请不要以连词开头 第一,内容: 简而言之,你不能限制人们上传的文件类型 一个较长的答案是,你可以检查人们上传的文件类型,如果不符合你的要求,就放弃它。请注意,检查用户提供的mimetype或文件扩展名不会提供太多保护。对这个问题进行了很好的讨论 其次是尺寸: 请参见上的示例#1 请注意,并非所有浏览器都尊重MAX_FILE_SIZE输入标记。文件大小还将受到该页面上列出的php.ini指令以及Web服务器上配置的请求、发布大小和超时的限制顺便说一句,您生成文件名的方法相当冗长。使用uniqid()可能会更快,代码更少。使用md5_file()也有同样的好处,可以防止重复。我从未尝试过这种方法,但是如果我在将扩展名重命名为
.jpg
后上载任意文件,谢谢,mario。我看看这是否管用。我是PHP新手,所以在将上面提供的内容输入我的代码时可能会遇到一些问题:/@Kumar我不知道任意文件可以使用.jpg
扩展名?@Kumar这确实是一个问题。但至少服务器上的.jpg扩展名不会触发CGI执行或PHP解释器对上传的文件进行调用。应通过上载文件夹中的.htaccess
设置NTL相应的选项。(另外,一个更复杂的上传脚本会检查魔法字节,并至少验证一些文件类型。)@nathan想一想,我只是下定决心要破坏这个系统,我把一个随机文件重命名为picture.jpg
,然后上传,$\u文件['uploadedfile']['type']
根据扩展名或文件内容识别它吗?别担心,孩子,这只是一个连词。别这样Picky@symcbean这不是英语课,这是一个开发者论坛,这意味着我不应该被纠正我的问题。谢谢你的回答,但我很确定PHP有一种方法可以限制文件的类型。关于大小,用户可以使用Chrome中的开发者工具更改MAZ_FILE_size
input标签,如果我使用该标签,他们可以将max FILE upload更改为他们想要的大小。我宁愿使用PHP,因为它会更安全。我会查看你发布的链接。
if (in_array($ext, array("jpeg","gif","png","txt","html"))) {
if (move_uploaded_file(...