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 var_dump遍历对象属性的函数与应用代码
Jun 04 PHP
PHP XML操作的各种方法解析(比较详细)
Jun 17 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
Jul 08 PHP
PHP实现克鲁斯卡尔算法实例解析
Aug 22 PHP
PHP闭包函数详解
Feb 13 PHP
PHP7+Nginx的配置与安装教程详解
May 10 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
PHP获取路径和目录的方法总结【必看篇】
Mar 04 PHP
PHP实现批量删除(封装)
Apr 28 PHP
PHP字典树(Trie树)定义与实现方法示例
Oct 09 PHP
PHP中$GLOBALS与global的区别详解
Mar 21 PHP
PHP实现的多进程控制demo示例
Jul 22 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基本函数汇总
2015/07/09 PHP
Laravel find in set排序实例
2019/10/09 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
全面理解闭包机制
2016/07/11 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
2017/04/13 jQuery
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
Moment.js实现多个同时倒计时
2019/08/26 Javascript
js实现列表按字母排序
2020/08/11 Javascript
vue 获取url参数、get参数返回数组的操作
2020/11/12 Javascript
Python获取网页上图片下载地址的方法
2015/03/11 Python
Python语言的面相对象编程方式初步学习
2016/03/12 Python
python yield关键词案例测试
2019/10/15 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
HTML4和HTML5之间除了相似以外的10个主要不同
2012/12/13 HTML / CSS
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
斯凯奇美国官网:SKECHERS美国
2016/08/20 全球购物
洲际酒店集团美国官网:IHG美国
2017/11/16 全球购物
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
Roxy荷兰官方网站:冲浪、滑雪板、服装和配件
2019/10/22 全球购物
一份软件工程师的面试试题
2016/02/01 面试题
会计应届生的自荐信
2013/12/13 职场文书
实习生矿工检讨书
2014/10/13 职场文书
工作失误检讨书(经典集锦版)
2014/10/17 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书