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
PHP+MySQL 手工注入语句大全 推荐
Oct 30 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
Oct 13 PHP
php 模拟post_验证页面的返回状态(实例讲解)
Oct 28 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
Feb 13 PHP
php生成短网址示例
May 05 PHP
PHP.ini安全配置检测工具pcc简单介绍
Jul 02 PHP
php进行ip地址掩码运算处理的方法
Jul 11 PHP
Yii实现的多级联动下拉菜单
Jul 13 PHP
php实现微信原生支付(扫码支付)功能
May 30 PHP
Laravel框架路由管理简单示例
May 07 PHP
Laravel Reponse响应客户端示例详解
Sep 03 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 采集书并合成txt格式的实现代码
2009/03/01 PHP
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
php中执行系统命令的方法
2015/03/21 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
2012/02/16 Javascript
jquery在Chrome下获取图片的长宽问题解决
2013/03/20 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
jquery zTree异步加载简单实例讲解
2016/02/25 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
微信小程序图表插件(wx-charts)实例代码
2017/01/17 Javascript
import与export在node.js中的使用详解
2017/09/28 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
2018/08/27 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
Python中apply函数的用法实例教程
2014/07/31 Python
Python实现一个Git日志统计分析的小工具
2017/12/14 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
Django实现列表页商品数据返回教程
2020/04/03 Python
改变 Python 中线程执行顺序的方法
2020/09/24 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
阿里云:Aliyun.com
2017/02/15 全球购物
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
SQL面试题
2013/12/09 面试题
五年级科学教学反思
2014/02/05 职场文书
布达拉宫的导游词
2015/02/02 职场文书
给校长的建议书作文300字
2015/09/14 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server