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 相关文章推荐
PHPShop存在多个安全漏洞
Oct 09 PHP
php set_time_limit(0) 设置程序执行时间的函数
May 26 PHP
TMDPHP 模板引擎使用教程
Mar 13 PHP
PHP常用的文件操作函数经典收藏
Apr 02 PHP
PHP中通过trigger_error触发PHP错误示例
Jun 23 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
Sep 22 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
Oct 20 PHP
PHP基于SMTP协议实现邮件发送实例代码
Apr 27 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
PHP简单实现正则匹配省市区的方法
Apr 13 PHP
实例讲解PHP中使用命名空间
Jan 27 PHP
thinkPHP框架RBAC实现原理分析
Feb 01 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 tp验证表单与自动填充函数代码
2012/02/22 PHP
探讨GDFONTPATH能否被winxp下的php支持
2013/06/21 PHP
php url路由入门实例
2014/04/23 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
CI(Codeigniter)的Setting增强配置类实例
2016/01/06 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
PHP code 验证码生成类定义和简单使用示例
2020/05/27 PHP
贴一个在Mozilla中常用的Javascript代码
2007/01/09 Javascript
javascript 页面划词搜索JS
2009/09/28 Javascript
js和jquery批量绑定事件传参数一(新猪猪原创)
2010/06/23 Javascript
jquery 插件开发 extjs中的extend用法小结
2013/01/04 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
2013/09/26 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
深入理解js中this的用法
2016/05/28 Javascript
jQuery extend()详解及简单实例
2017/05/06 jQuery
Node.JS文件系统解析实例详解
2017/05/15 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
2020/05/27 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
Python中文分词库jieba,pkusegwg性能准确度比较
2020/02/11 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
高级运动鞋:GREATS
2019/07/19 全球购物
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
介绍一下Mysql的存储引擎
2015/02/12 面试题
环保公益广告语
2014/03/13 职场文书
合作协议书
2014/04/23 职场文书
机电专业求职信
2014/06/14 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
Python基础知识之变量的详解
2021/04/14 Python
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫