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 函数语法介绍一
Jun 14 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
Apr 08 PHP
浅析ThinkPHP中execute和query方法的区别
Jun 13 PHP
PHP里8个鲜为人知的安全函数分析
Dec 09 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
Dec 17 PHP
php显示指定目录下子目录的方法
Mar 20 PHP
php实现用于计算执行时间的类实例
Apr 18 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
Feb 28 PHP
PHP设计模式之适配器模式原理与用法分析
Apr 25 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
May 28 PHP
PDO::prepare讲解
Jan 29 PHP
一文看懂PHP进程管理器php-fpm
Jun 01 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页面间传递参数实例代码
2008/06/05 PHP
php URL跳转代码 减少外链
2011/06/25 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
php扩展开发入门demo示例
2019/09/23 PHP
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
详解JavaScript对W3C DOM模版的支持情况
2015/06/16 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
python实现图片批量剪切示例
2014/03/25 Python
Python Trie树实现字典排序
2014/03/28 Python
python计数排序和基数排序算法实例
2014/04/25 Python
python检测是文件还是目录的方法
2015/07/03 Python
pyqt5实现登录界面的模板
2020/05/30 Python
python 成功引入包但无法正常调用的解决
2020/03/09 Python
PyQt5 界面显示无响应的实现
2020/03/26 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
Python3爬虫中关于中文分词的详解
2020/07/29 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
高一自我鉴定
2013/12/17 职场文书
挂牌仪式主持词
2014/03/20 职场文书
高中政治教师教学反思
2016/02/23 职场文书