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 相关文章推荐
十天学会php之第十天
Oct 09 PHP
第4章 数据处理-php字符串的处理-郑阿奇(续)
Jul 04 PHP
PHP调用Webservice实例代码
Jul 29 PHP
实现获取http内容的php函数分享
Feb 16 PHP
ThinkPHP中redirect用法分析
Dec 05 PHP
php在数组中查找指定值的方法
Mar 17 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
Apr 21 PHP
php使用Imagick生成图片的方法
Jul 31 PHP
PHP实现根据密码长度显示安全条
Jul 04 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
Jul 26 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
Sep 23 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
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
Prototype源码浅析 Enumerable部分(二)
2012/01/18 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
浅谈JS中的bind方法与函数柯里化
2016/08/10 Javascript
jQuery异步提交表单的两种方式
2016/09/13 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
2016/09/19 Javascript
jQuery获取this当前对象子元素对象的方法
2016/11/29 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
使用ES6语法重构React代码详解
2017/05/09 Javascript
node前端模板引擎Jade之标签的基本写法
2018/05/11 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
2019/08/27 jQuery
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
Django的URLconf中使用缺省视图参数的方法
2015/07/18 Python
python如何爬取个性签名
2018/06/19 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
python模拟实现斗地主发牌
2020/01/07 Python
Python生成器常见问题及解决方案
2020/03/21 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
英国著名的茶叶品牌:Whittard of Chelsea
2016/09/22 全球购物
本科毕业生求职自荐信
2014/02/03 职场文书
大学共青团员个人自我评价
2014/04/16 职场文书
成都人事代理协议书
2014/10/25 职场文书
2015年度企业工作总结
2015/05/21 职场文书
《槐乡的孩子》教学反思
2016/02/20 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript