[PHP] 文件上传过程中基于白名单、黑名单、基于MIME的认证以及目录认证
2015-07-25 22:21
711 查看
1.基于黑名单
2.基于白名单
3.基于MIME
4.目录认证
前端:
<?php $BlackList = array('asp','php','jsp','php5','asa','aspx');//黑名单 if (isset($_POST["submit"])){ $name = $_FILES['file']['name']; //接收文件名 echo $name; $extension = substr(strrchr($name,"."),1);//得到扩展名 $boo = false; foreach ($BlackList as $key=>$value){ if ($value==$extension){//迭代判断是否有命中 $boo=true; break;//命中之后直接退出循环 } } if(!$boo){//如果没有命中,则开始文件上传操作 $size=$_FILES['file']['size'];//接收文件大小 $tmp=$_FILES['file']['tmp_name'];//临时路径 move_uploaded_file($tmp,$name);//移动临时文件到当前文件目录 echo "文件上传成功!<br/> path:".$name; }else { echo "文件不合法!!"; } } ?>
2.基于白名单
<?php $WhiteList = array('rar','jpg','png','bmp','gif','jpg','doc'); if (isset($_POST["submit"])){ $name = $_FILES['file']['name']; //接收文件名 $extension = substr(strrchr($name,"."),1);//得到扩展名 $boo = false; foreach ($WhiteList as $key=>$value){ if ($value==$extension){//迭代判断是否有命中 $boo=true; } } if($boo){//如果有命中,则开始文件上传操作 $size=$_FILES['file']['size'];//接收文件大小 $tmp=$_FILES['file']['tmp_name'];//临时路径 move_uploaded_file($tmp,$name);//移动临时文件到当前文件目录 echo "文件上传成功!<br/> path:".$name; }else { echo "文件不合法!!"; } } ?>
3.基于MIME
<? if ($_FILE['file']['type']=="image/jpeg"){//判断是否是JPG格式 $imageTempName=$_FILES['file']['tmp_name']; $imageName=$_FILES['file']['name']; $last = substr($imageName,strrpos($imageName,".")); if(!is_dir("uploadFile")) mkdir("uploadFile"); } $imageName=md5($imageName).$last; move_uploaded_file($imageTempName,"./uploadFile".$imageName);//指定文件上传到uploadFile目录 echo ("文件上传成功!! path=/uploadFile/$imageName"); } else{ echo ("文件类型错误,请重新上传..."); exit(); } ?>
4.目录认证
前端:
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"/><br/> <input type="file" name="Extension" value="up"/> <input type="submit" value="提交" name="submit" /> </form>后端:
<?php if($_FILES['file']['type']=="image/jpeg"){ //判断是否是JPG格式 $imageTempName=$_FILES['file']['tmp_name']; //接受文件路径 $imageName=$_FILES['file']['name']; //接收文件名称 $last=substr($imageName,strrpos($imageName,"."));//取得扩展名 if($last!=".jpg"){ exit("图片类型错误!"); } $Extension=$_POST["Extension"]; if(!is_dir($Extension)){ mkdir($Extension); } $imageName=md5($imageName).$last; move_uploaded_file($imageTempName,"./Extension/".$imageName); echo("文件上传成功!! path= /$Extension/$imageName"); } else{ echo("文件类型错误,请重新上传。。。"); exit(); } ?>
相关文章推荐
- 使用 PHP 框架 Yii 访问 MS SQL 的尝试
- Ubuntu下的PHP开发环境架设
- php报错:Warning: Phpinfo() Has Been Disabled For Security Reasons
- 【YII2学习笔记】20150725-2
- php函数strip_tags标签未闭合的情况
- 初学php做的有关php有关知识的了解
- php-fpm 启动不了 libiconv.so.2找不到
- PHP中的时间和日期
- mysql与php的链接
- phpCMS二次加密
- php实现QQ空间获取当前用户的用户名并生成图片
- yii 直接执行sql
- 使用纯php代码实现页面伪静态的方法
- 分类的评判标准:TP、TN、FP、FN
- 分类的评判标准:TP、TN、FP、FN
- PHP判断用户登录状态
- PHP验证登录状态和安全性
- PHP防注入攻击
- PHP生成图片验证码、点击切换实例
- 一个漂亮的PHP验证码