问一个附件上传的判断的问题 
下面的代码是不是提供了判断功能:即如果该附件不是必填字段,当前台没有选择附件,即留为空,则不会去判断上传文件的类型?
请问哪些代码是实现这些功能的?
因为不懂PHP,又想改一下,但我改的一个附件上传功能虽然设置了该字段不是必填字段,但当我前台上传留空时,还会提示:“您上传的文件扩展名有误”。
附源码:
function AddFeedback($add){
        global $empire,$dbtbpre,$level_r,$public_r;
        CheckCanPostUrl();//验证来源
        $bid=(int)getcvar('feedbackbid');
        if(empty($bid))
        {
                $bid=intval($add[bid]);
        }
        if(empty($bid))
        {
                printerror("EmptyFeedbackname","history.go(-1)",1);
    }
        //验证码
        $keyvname='checkfeedbackkey';
        if($public_r['fbkey_ok'])
        {
                ecmsCheckShowKey($keyvname,$add['key'],1);
        }
        //版面是否存在
        $br=$empire->fetch1("select bid,enter,mustenter,filef,groupid,checkboxf from {$dbtbpre}enewsfeedbackclass where bid='$bid';");
        if(empty($br['bid']))
        {
                printerror("EmptyFeedback","history.go(-1)",1);
        }
        //权限
        if($br['groupid'])
        {
                $user=islogin();
                if($level_r[$br[groupid]][level]>$level_r[$user[groupid]][level])
                {
                        printerror("HaveNotEnLevel","history.go(-1)",1);
                }
        }
        $pr=$empire->fetch1("select feedbacktfile,feedbackfilesize,feedbackfiletype from {$dbtbpre}enewspublic limit 1");
        //必填项
        $mustr=explode(",",$br['mustenter']);
        $count=count($mustr);
        for($i=1;$i<$count-1;$i++)
        {
                $mf=$mustr[$i];
                if(strstr($br['filef'],",".$mf.","))//附件
                {
                        if(!$pr['feedbacktfile'])
                        {
                                printerror("NotOpenFBFile","",1);
                        }
                        if(!$_FILES[$mf]['name'])
                        {
                                printerror("EmptyFeedbackname","",1);
                        }
                }
                else
                {
                        $chmustval=ReturnFBCheckboxAddF($add[$mf],$mf,$br['checkboxf']);
                        if(!trim($chmustval))
                        {
                                printerror("EmptyFeedbackname","",1);
                        }
                }
        }
        $saytime=date("Y-m-d H:i:s");
        //字段处理
        $dh="";
        $tranf="";
        $record="<!--record-->";
        $field="<!--field--->";
        $er=explode($record,$br['enter']);
        $count=count($er);
        for($i=0;$i<$count-1;$i++)
        {
                $er1=explode($field,$er[$i]);
                $f=$er1[1];
                //附件
                $add[$f]=str_replace('[!#@-','',$add[$f]);
                if(strstr($br['filef'],",".$f.","))
                {
                        if($_FILES[$f]['name'])
                        {
                                if(!$pr['feedbacktfile'])
                                {
                                        printerror("NotOpenFBFile","",1);
                                }
                                $filetype=GetFiletype($_FILES[$f]['name']);//取得文件类型
                                if(CheckSaveTranFiletype($filetype))
                                {
                                        printerror("NotQTranFiletype","",1);
                                }
                                if(!strstr($pr['feedbackfiletype'],"|".$filetype."|"))
                                {
                                        printerror("NotQTranFiletype","",1);
                                }
                                if($_FILES[$f]['size']>$pr['feedbackfilesize']*1024)//文件大小
                                {
                                        printerror("TooBigQTranFile","",1);
                                }
                                $tranf.=$dh.$f;
                                $dh=",";
                                $fval="[!#@-".$f."-@!]";
                        }
                        else
                        {
                                $fval="";
                        }
                }
                else
                {
                        $add[$f]=ReturnFBCheckboxAddF($add[$f],$f,$br['checkboxf']);
                        $fval=$add[$f];
                }
                $addf.=",`".$f."`";
                $addval.=",'".RepPostStr($fval)."'";
        }
        $type=0;
        $classid=0;
        $filename='';
        $filepath='';
        $userid=(int)getcvar('mluserid');
        $username=RepPostVar(getcvar('mlusername'));
        //上传附件
        if($tranf)
        {
                $dh="";
                $tranr=explode(",",$tranf);
                $count=count($tranr);
                for($i=0;$i<$count;$i++)
                {
                        $tf=$tranr[$i];
                        $tfr=DoTranFile($_FILES[$tf]['tmp_name'],$_FILES[$tf]['name'],$_FILES[$tf]['type'],$_FILES[$tf]['size'],$classid);
                        if($tfr['tran'])
                        {
                                $filepath=$tfr[filepath];
                                //写入数据库
                                $filetime=$saytime;
                                $filesize=(int)$_FILES[$tf]['size'];
                                $sql=$empire->query("insert into {$dbtbpre}enewsfile(filename,filesize,adduser,path,filetime,classid,no,type,id,cjid,fpath) values('$tfr[filename]','$filesize','[Member]".$username."','$tfr[filepath]','$filetime','$classid','[FB]".addslashes(RepPostStr($add[title]))."','$type',0,0,'$public_r[fpath]');");
                                $repfval=($tfr[filepath]?$tfr[filepath].'/':'').$tfr[filename];
                                $filename.=$dh.$tfr[filename];
                                $dh=",";
                        }
                        else
                        {
                                $repfval="";
                        }
                        $addval=str_replace("[!#@-".$tf."-@!]",$repfval,$addval);
                }
        }
        $ip=egetip();
        $sql=$empire->query("insert into {$dbtbpre}enewsfeedback(bid,saytime,ip,filepath,filename,userid,username".$addf.") values('$bid','$saytime','$ip','$filepath','$filename','$userid','$username'".$addval.");");
        ecmsEmptyShowKey($keyvname);//清空验证码
        if($sql)
        {
                $reurl=DoingReturnUrl("../tool/feedback/?bid=$bid",$add['ecmsfrom']);
                printerror("AddFeedbackSuccess",$reurl,1);
        }
        else
        {printerror("DbError","history.go(-1)",1);}
}//--------------发送错误报告
function AddError($add){
        global $empire,$class_r,$dbtbpre;
        CheckCanPostUrl();//验证来源
        $id=(int)$add['id'];
        $classid=(int)$add['classid'];
        if(!$classid||!$id||!trim($add[errortext]))
        {printerror("EmptyErrortext","history.go(-1)",1);}
        //返回标题链接
        if(empty($class_r[$classid][tbname]))
        {
                printerror("ErrorUrl","history.go(-1)",1);
    }
        $r=$empire->fetch1("select titleurl,groupid,classid,newspath,filename,id from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where id='$id' and classid='$classid' limit 1");
        if(empty($r[id]))
        {
                printerror("ErrorUrl","history.go(-1)",1);
    }
        $cid=(int)$add[cid];
        $titleurl=sys_ReturnBqTitleLink($r);
        $email=RepPostStr($add[email]);
        $ip=egetip();
        $errortext=RepPostStr($add[errortext]);
        $errortime=date("Y-m-d H:i:s");
        $sql=$empire->query("insert into {$dbtbpre}enewsdownerror(id,errortext,errorip,errortime,email,classid,cid) values($id,'$errortext','$ip','$errortime','$email',$classid,'$cid');");
        if($sql)
        {
                printerror("AddErrorSuccess",$titleurl,1);
        }
        else
        {
                printerror("DbError","history.go(-1)",1);
        }
}