PHP文件上传判断file是否己选择上传文件的方法

2015-01-24信息快讯网

这篇文章主要介绍了PHP文件上传判断file是否己选择上传文件的方法,除了判断是否有上传的文件之外还对文件安全性进行了较为深入的分析,是非常实用的技巧,需要的朋友可以参考下

本文实例讲述了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导入excel文件到mysql数据库的方法
PHP上传文件时自动分配路径的方法
PHP中使用CURL获取页面title例子
PHP中使用SimpleXML检查XML文件结构实例
php静态文件返回304技巧分享
php使用fputcsv()函数csv文件读写数据的方法
php使用google地图应用实例
php连接oracle数据库及查询数据的方法
php提示Failed to write session data错误的解决方法
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
PHP中__FILE__、dirname与basename用法实例分析
PHP中mysql_field_type()函数用法
php中filter_input函数用法分析
php 使用file_get_contents读取大文件的方法
PHP中file_exists()判断中文文件名无效的解决方法
php中simplexml_load_file函数用法实例
php多个文件及图片上传实例详解
php数组操作之键名比较与差集、交集赋值的方法
php使用fgetcsv读取csv文件出现乱码的解决方法
php中file_get_contents与curl性能比较分析
php采用file_get_contents代替使用curl实例
PHP实现HTML生成PDF文件的方法
PHP使用feof()函数读文件的方法
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
php实现singleton()单例模式实例
PHP实现UTF-8文件BOM自动检测与移除实例
PHP动态编译出现Cannot find autoconf的解决方法
PHP读取CURL模拟登录时生成Cookie文件的方法
PHP处理Oracle的CLOB实例
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
PHP中file_get_contents高用法实例
©2014-2024 dbsqp.com