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 相关文章推荐
smarty section简介与用法分析
Oct 03 PHP
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
Jun 21 PHP
PHP的范围解析操作符(::)的含义分析说明
Jul 03 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
Nov 01 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
Jan 06 PHP
PHP获取本周第一天和最后一天示例代码
Feb 24 PHP
php在apache环境下实现gzip配置方法
Apr 02 PHP
10款实用的PHP开源工具
Oct 23 PHP
微信支付开发交易通知实例
Jul 12 PHP
PHP文件操作详解
Dec 30 PHP
Laravel框架实现利用监听器进行sql语句记录功能
Jun 06 PHP
php常用日期时间函数实例小结
Jul 04 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
用 Composer构建自己的 PHP 框架之设计 MVC
2014/10/30 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
php自动加载代码实例详解
2021/02/26 PHP
浅谈Nodejs观察者模式
2015/10/13 NodeJs
Angular2学习笔记——详解路由器模型(Router)
2016/12/02 Javascript
jQuery插件zTree实现的多选树效果示例
2017/03/08 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
js实现简单页面全屏
2019/09/17 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
jQuery实现简单弹幕制作
2020/12/10 jQuery
[01:06]DOTA2小知识课堂 Ep.02 吹风竟可解梦境缠绕
2019/12/05 DOTA
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
python执行等待程序直到第二天零点的方法
2015/04/23 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
Python下简易的单例模式详解
2019/04/08 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
pandas参数设置的实用小技巧
2020/08/23 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
荷兰的时尚市场:To Be Dressed
2019/05/06 全球购物
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
面料业务员岗位职责
2013/12/26 职场文书
汽车专业人才自我鉴定范文
2013/12/29 职场文书
幼儿园家长会邀请函
2014/01/15 职场文书
教导处工作制度
2014/01/18 职场文书
优秀教师工作感言
2014/02/16 职场文书
节能环保口号
2014/06/12 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android