PHP文件上传判断file是否己选择上传文件的方法


Posted in PHP onNovember 10, 2014

本文实例讲述了PHP文件上传判断file是否己选择上传文件的方法。分享给大家供大家参考。具体方法如下:

一个合格的程序员在实现数据入库中时我们都会有一些非常严密的过滤与数据规则,像我们文件上传时在前段要判断用户是否选择上传文件同时在后台也可判断是否有上传的文件,本文实例即对此做一较为深入的分析。

如下html代码所示:

<form action="?" method="post" enctype='multipart/form-data'>

文件上传:<input type="file" name="file" id="file"/>

<input type="submit" id="send" value="提交"/>

</form>

我们最常用的在前端简单的进行判断

<script>

var send=document.getElementById("send");

send.onclick=function(){

var file=document.getElementById("file").value;

if(file.length<1){

alert('请选择图片');

return false;

}

}

</script>

如果要做真正的安全我们需要在后台进入判断处理
<?php

//判断pic文件框是否已经选择文件

if(!empty($_FILES['file']['tmp_name'])){

echo'已选择文件';

}else{

echo'请选择文件';

}

//PS:$_FILES后面的['tmp_name']一定不要忘写,它表示是一个临时的意思

?>

安例分析

js判断是比较笼统了我们只是使用了file=document.getElementById("file").value;来判断file有没有值或不为空了,这样只要输入一个数字就可以直接提交了,所以我们需要进入如上传文件的用户名限制

function CheckWorkFile()

{

var obj=document.getElementById('fuMain');

if(obj.value=='')

{

alert('请选择要上传的作业书文件');

return false;

}

var stuff=obj.value.match(/^(.*)(\.)(.{1,8})$/)[3];

if(stuff!='doc')

{

alert('文件类型不正确,请选择.doc文件');

return false;

}

return true;

}

对于php处理我们也只使用了if(!empty($_FILES['file']['tmp_name'])){来判断不为空了,其实这样也是不合理的
如我们可以如此处理
function file_type($filename)

{

    $file = fopen($filename, "rb");

    $bin = fread($file, 2); //只读2字节

    fclose($file);

    $strInfo = @unpack("C2chars", $bin);

    $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);

    $fileType = '';

    switch ($typeCode)

    {

        case 7790:

            $fileType = 'exe';

            break;

        case 7784:

            $fileType = 'midi';

            break;

        case 8297:

            $fileType = 'rar';

            break;        

  case 8075:

            $fileType = 'zip';

            break;

        case 255216:

            $fileType = 'jpg';

            break;

        case 7173:

            $fileType = 'gif';

            break;

        case 6677:

            $fileType = 'bmp';

            break;

        case 13780:

            $fileType = 'png';

            break;

        default:

            $fileType = 'unknown: '.$typeCode;

    }

 //Fix

 if ($strInfo['chars1']=='-1' AND $strInfo['chars2']=='-40' ) return 'jpg';

 if ($strInfo['chars1']=='-119' AND $strInfo['chars2']=='80' ) return 'png';

    return $fileType;

}

echo file_type('start.php');   // 6063 or 6033

这样我们可以限制上传文件类型的同时也给程序做了一个安全处理

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
手把手教你使用DedeCms的采集的图文教程
Mar 11 PHP
php删除数组元素示例分享
Feb 17 PHP
两个php日期控制类实例
Dec 09 PHP
php+mysql结合Ajax实现点赞功能完整实例
Jan 30 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
Mar 19 PHP
php面向对象与面向过程两种方法给图片添加文字水印
Aug 26 PHP
初识PHP中的Swoole
Apr 05 PHP
PHP与jquery实时显示网站在线人数实例详解
Dec 02 PHP
Docker配置PHP开发环境教程
Dec 21 PHP
php之可变变量的实例详解
Sep 12 PHP
PHP Post获取不到非表单数据的问题解决办法
Feb 27 PHP
PHP 访问数据库配置通用方法(json)
May 20 PHP
php数组操作之键名比较与差集、交集赋值的方法
Nov 10 #PHP
php json转换成数组形式代码分享
Nov 10 #PHP
PHP冒泡算法详解(递归实现)
Nov 10 #PHP
PHP字符串word末字符实现大小写互换的方法
Nov 10 #PHP
PHP 快速排序算法详解
Nov 10 #PHP
PHP基于CURL进行POST数据上传实例
Nov 10 #PHP
ci检测是ajax还是页面post提交数据的方法
Nov 10 #PHP
You might like
PHP用GD库生成高质量的缩略图片
2011/03/09 PHP
php设计模式 Command(命令模式)
2011/06/26 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
twig里使用js变量的方法
2016/02/05 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
使用js实现按钮控制文本框加1减1应用于小时+分钟
2013/12/09 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
2014/05/19 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
vue动画效果实现方法示例
2019/03/18 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python实现决策树
2017/12/21 Python
python删除某个字符
2018/03/19 Python
Python多继承原理与用法示例
2018/08/23 Python
Python跳出多重循环的方法示例
2019/07/03 Python
python处理大日志文件
2019/07/23 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
python实现测试工具(二)——简单的ui测试工具
2020/10/19 Python
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
中文系学生自荐信范文
2013/11/13 职场文书
财务管理专业推荐信
2013/11/19 职场文书
葡萄牙语专业个人求职信
2013/12/10 职场文书
幼儿园六一儿童节主持节目串词
2014/03/21 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
党员年度个人总结
2015/02/14 职场文书
《认识年月日》教学反思
2016/02/19 职场文书