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,ASP.JAVA,JAVA代码格式化工具整理
Jun 15 PHP
php5.3 注意事项说明
Jul 01 PHP
使用PHP实现蜘蛛访问日志统计
Jul 05 PHP
php数据库备份还原类分享
Mar 20 PHP
yii实现CheckBox复选框在同一行显示的方法
Dec 03 PHP
php中preg_match的isU代表什么意思
Oct 01 PHP
PHP执行linux命令常用函数汇总
Feb 02 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
Oct 03 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
Nov 05 PHP
浅谈Laravel核心解读之Console内核
Dec 02 PHP
php将xml转化对象的实例详解
Nov 17 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
Http 1.1 Etag 与 Last-Modified提高php效率
2008/01/10 PHP
php设计模式之单例模式使用示例
2014/01/20 PHP
PHP会话控制:Session与Cookie详解
2014/09/27 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
Yii2框架可逆加密简单实现方法
2017/08/25 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
用js遍历 table的脚本
2008/07/23 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
VueJS全面解析
2016/11/10 Javascript
jstree的简单实例
2016/12/01 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
2019/01/10 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
解决Antd 里面的select 选择框联动触发的问题
2020/10/24 Javascript
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
简单了解python装饰器原理及使用方法
2019/12/18 Python
Python模块_PyLibTiff读取tif文件的实例
2020/01/13 Python
tensorflow如何继续训练之前保存的模型实例
2020/01/21 Python
Django模型验证器介绍与源码分析
2020/09/08 Python
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
一些.net面试题
2014/10/06 面试题
什么是.net
2015/08/03 面试题
疾病防治方案
2014/05/31 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
小学英语听课心得体会
2016/01/14 职场文书
浅谈Python列表嵌套字典转化的问题
2021/04/07 Python