加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP文件上传判断file是否己挑选上传文件

发布时间:2023-06-13 12:39:01 所属栏目:PHP教程 来源:
导读:一个合格的程序员在实现数据入库中时我们都会有一些非常严密的过滤与数据规则了,像我们文件上传时在前段要判断用户是否选择上传文件同时在后台也可判断是否有上传的文件了,下面我们就一起来看看相关例子吧.如下html代

一个合格的程序员在实现数据入库中时我们都会有一些非常严密的过滤与数据规则了,像我们文件上传时在前段要判断用户是否选择上传文件同时在后台也可判断是否有上传的文件了,下面我们就一起来看看相关例子吧.

如下html代码如下:

<formaction="?"method="post"enctype='multipart/form-data'> 

文件上传:<inputtype="file"name="file"id="file"/> 

<inputtype="submit"id="send"value="提交"/> 

</form> 

我们最常用的在前端简单的进行判断,代码如下:

<script> 

varsend=document.getElementById("send"); 

send.onclick=function(){ 

varfile=document.getElementById("file").value; 

if(file.length<1){ 

alert('请选择图片'); 

returnfalse; 

</script> 

如果要做真正的安全我们需要在后台进入判断处理,代码如下:

<?php 

//判断pic文件框是否已经选择文件 

if(!emptyempty($_FILES['file']['tmp_name'])){ 

echo'已选择文件'; 

}else{ 

echo'请选择文件'; 

} //开源软件:Cuoxin.com 

//PS:$_FILES后面的['tmp_name']一定不要忘写,它表示是一个临时的意思 

?> 

安例分析

js判断是比较笼统了我们只是使用了file=document.getElementById("file").value;来判断file有没有值或不为空了,这样只要输入一个数字就可以直接提交了,所以我们需要进入如上传文件的用户名限制,代码如下:

functionCheckWorkFile() 

varobj=document.getElementById('fuMain'); 

if(obj.value=='') 

alert('请选择要上传的作业书文件'); 

returnfalse; 

varstuff=obj.value.match(/^(.*)(\.)(.{1,8})$/)[3]; 

if(stuff!='doc') 

alert('文件类型不正确,请选择.doc文件'); 

returnfalse; 

returntrue; 

对于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 

这样我们可以限制上传文件类型的同时也给程序做了一个安全处理了.

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!