php过滤上传类型,只上传图片类型文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php过滤上传类型,只上传图片类型文件相关的知识,希望对你有一定的参考价值。
php源码
http://116.254.208.48/2.txt
怎样来过滤上传类型?
代码怎样改
没有判断文件类型 没有过滤类型 可以上传任何文件
我只要上传jpg、jpeg、gif、png的图片
$str = end(explode(".",$uploadfilename));获得上传文件的扩展名,然后再进行判断if($str=="jpg" or $str=="jpeg" or $str=="gif" or $str=="png")的时候才执行上传,否则返回错误提示信息,这样子来限制上传文件类型 参考技术A <?php
header('Content-Type:text/html; charset=utf-8');
require('inc/function.inc.php');
$path = pathinfo($_FILES['filename']['name']);
$uploadfilename = makeuploaddirname('/uploadfile') . makeuploadfilename() . '.' . $path['extension'];
$types=array("image/jpg","image/jpeg","image/gif","image/png");
if (in_array($_FILES['filename']['type'],$types))
if(move_uploaded_file($_FILES['filename']['tmp_name'], realpath("../") . $uploadfilename))
$picname = $_POST['picname'];
if( ('#special#' != $picname))
echo "<script language='javascript'>alert('文件上传成功!');window.parent.document.getElementById('$picname').value='", substr($uploadfilename,0), "';window.parent.closePopupDiv();</script>";
else
echo "<script language='javascript'>alert('文件上传成功!');obj=window.parent.opener;obj.insertRow(obj.document.getElementById('mytable'),'$uploadfilename');window.close();</script>";
else
echo '<script language="javascript">alert("文件上传失败!");</script>';
else
echo "不接受的格式";
?> 参考技术B 用swfupload吧,可以省很多事,支持多文件,支持进度条,支持缩略图。
文件上传图片
通过 PHP,可以把文件上传到服务器。里面加入一些图片的判断,如果不加判断文件的类型就可以上传任意格式的文件。
为了网站的安全,肯定不让上传php文件,如果有人进入你的后台,上传了一个php文件,你的网站源码,全部救变成他的了,直接打包看你的代码。所以一定要控制上传的目录与文件类型,一般只可以上传图片。
要实现文件上传图片我们需要写出两个php文件,第一个php文件我们需要写出一个文件上传的页面,
第二个php文件我们写出实现图片上传的功能
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>无标题文档</title> 6 </head> 7 8 <body> 9 10 <h1>文件上传</h1> 11 <form action="upload.php" method="post" enctype="multipart/form-data"> 12 <input type="file" name="file" /> 13 <input type="submit" value="上传" /> 14 </form> 15 </body> 16 </html>
1 <?php 2 var_dump($_FILES["file"]); 3 4 限制文件的类型 5 限制文件的大小 6 防止文件名重复 7 8 一.防止文件名重复 9 1.修改文件名 10 流水号,时间戳+随机数+用户名 11 12 2.建文件夹 13 upload/20170317/lch/shangchuan/11.jpg 14 15 3.保存文件 16 17 if($_FILES["file"]["error"]) 18 { 19 echo $_FILES["file"]["error"]; 20 } 21 else 22 { 23 没有出错 24 25 加限制条件 26 if(($_FILES["file"]["type"]=="image/png" || $_FILES["file"]["type"]=="image/jpeg") && $_FILES["file"]["size"]<1024000) 27 { 28 29 防止文件名重复 30 $filename = "./img/".time().$_FILES["file"]["name"]; 31 32 转码 33 $filename = iconv("UTF-8","gb2312",$filename); 34 35 36 if(file_exists($filename)) 37 { 38 echo "该文件已存在"; 39 } 40 else 41 { 42 保存文件 43 move_uploaded_file($_FILES["file"]["tmp_name"],$filename); 44 } 45 } 46 else 47 { 48 echo "文件类型不对"; 49 } 50 }
注释:对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。
保存被上传的文件
上面的例子在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本。
这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:
上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。
以上是关于php过滤上传类型,只上传图片类型文件的主要内容,如果未能解决你的问题,请参考以下文章