问一个附件上传的判断的问题
下面的代码是不是提供了判断功能:即如果该附件不是必填字段,当前台没有选择附件,即留为空,则不会去判断上传文件的类型?
请问哪些代码是实现这些功能的?
因为不懂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);
}
}
下面的代码是不是提供了判断功能:即如果该附件不是必填字段,当前台没有选择附件,即留为空,则不会去判断上传文件的类型?
请问哪些代码是实现这些功能的?
因为不懂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);
}
}
解决方案 »
- Warning: strlen() expects parameter 1 to be string,
- mysql 数据用EXCEL导入问题
- 求一个正则表达式
- web editor中【程序代码】编辑控件?
- 业余爱好者作动态网页用那个技术比较好?
- 发一个XML联动菜单的代码。网上下了很多都不能用。这个我自己写的。
- 无法连接数据库,问题请帮忙...
- 要显示当天中午12点到次日中午12点的记录,数据库和算法怎么样设置?
- 如何将两个表中的某些字段同时插入到另外一个表中?
- 請問在apache中php.ini文件是在哪下面(c:/windows or c:/php)
- 获取JS选择到的多个ID,传参数跳转到PHP页面
- 关于PHP COM类及表单的一些问题
{
printerror("EmptyFeedbackname","",1);
}再检查一下是否还有其他的判断语句即可