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
基于mysql的论坛(5)
Oct 09 PHP
实用函数7
Nov 08 PHP
PHP执行linux系统命令的常用函数使用说明
Apr 27 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
Jul 18 PHP
深入PHP中的HashTable结构详解
Jun 13 PHP
php 类自动载入的方法
Jun 03 PHP
纯php生成随机密码
Oct 30 PHP
PHP编写RESTful接口
Feb 23 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
Apr 18 PHP
PHP中时间加减函数strtotime用法分析
Apr 26 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
Oct 08 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 date函数参数详解
2006/11/27 PHP
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
javascript offsetX与layerX区别
2010/03/12 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
如何在JS中实现相互转换XML和JSON
2016/07/19 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
2017/04/26 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
回调函数的意义以及python实现实例
2017/06/20 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
2013/04/22 HTML / CSS
来自世界各地的优质葡萄酒:VineShop24
2018/07/09 全球购物
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
用Java语言将一个键盘输入的数字转化成中文输出
2013/01/25 面试题
学前教育专业毕业生自荐信
2013/10/03 职场文书
大学生旷课检讨书
2014/01/22 职场文书
大学四年个人自我小结
2014/03/05 职场文书
作文批改评语大全
2014/04/23 职场文书
体育比赛口号
2014/06/09 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
tree shaking对打包体积优化及作用
2022/07/07 Java/Android