关于文件上传安全性的问题 只要不是php、html文件,服务器不会解释执行。不要担心 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $_FILES['PostFile']['type']或$ImageFile_type如:<form name="form1" method="post" action=<?php echo basename(__FILE__);?> enctype="multipart/form-data"> <p><input type="file" name="PostFile" size="50"></p> <p><input type="submit" value=" 上 传 " name="Submit"></p></form>echo $_FILES['PostFile']['type'];echo $PostFile_type; 这是我写的一段文件上传,但是有一点问题。首先是图片大小不认。上传时老是报图片太大。然后是htm类型的页面也可以上传。很ft.救命呀! $maxsize="1024*100"; for($i=0; $i<count($pic); $i++) { set_time_limit(60); if(!empty($pic_name[$i])) { $type=$pic_type[$i]; if(($type="image/gif")||($type="image/jpeg")||($type="image/pjpeg")) { if($pic_size<($maxsize)) { $path = dirname($PATH_TRANSLATED)."/upload/".$pic_name[$i]; copy($pic[$i],$path); $path=$pic_name[$i]; $new_path="../admin/upload/$path"; echo "$pic_size"; } /*end if*/ else { echo "图片太大"; echo "<a href=\"javascript:history.go(-1)\" onMouseOver=\"self.status=document.referrer;return true\">点击此处返回</a><br/>"; } /*end else*/ } /*end if*/ else { echo "图片格式不符"; echo "<a href=\"javascript:history.go(-1)\" onMouseOver=\"self.status=document.referrer;return true\">点击此处返回</a>"; unlink($source); exit(); } /*end else*/ } /*end if*/ else { echo "没有图片"; } /*end else*/ } /*end for*/ $pic_size返回的是文件大小,不是图片大小只传图片用getimagesize() 取文件的大小也可以用filesize()吧.要限定文件的后缀可以通过正则表达式来匹配,如果我限定只能上传jpg,jpeg,gif,png格式的那么这个正则表达式应当是这样吧eregi("\.jpg|jpeg|gif|png",$pic); getimagesize()的用法是这样的吧$style=getimagesize($pic);switch ($style[2]){case 0;echo "图片格式未知";break;case 1;echo "这是一张gif图片";break;case 2;echo "这是一张jpg图片";break;case 3;echo "这是一张png图片";break;} 我反正是想偷懒,不想用太多的函数.但我还是不明白为什么我的$type=$pic_type[$i];不能得到文件类型.首先说明一下,我的register_global是on;不用考虑参数传递的写法.如果真的没有办法解决这个问题那我只好说:天下没有白偷的懒! 同意用$_FILES['PostFile']['type']进行验证,你只要限定几种类型文件可以上传就可以了...凡超出这几个范围,就禁止上传你的global虽然是on...不过php4.3以后要求越来越严禁了...你的习惯不好,,呵呵 ~ 呵呵,谢谢珠海的忠告。以后一定注意。不过我也试过有$_FILES['pic']['type']来取,但好像也不成功哟! MVC框架写的php网站部署问题 PHP连接数据库问题,大家看下。 请问为什么在firefox中 有些按钮会失效 求一条SQL语句 做个调查,有时间的帮忙填个表,谢谢各位了! 急,linux下的php如何支持zip??? 用ZEND加密下面的代码为什么会报错啊 在一定时间范围内查找sql server表,但结果却相差一年 能说说是什么原因吗 关于PHP中的变量的问题? 如何在两个页面之间进行数据的传送? 配置中session在什么地方打开?
或
$ImageFile_type如:
<form name="form1" method="post" action=<?php echo basename(__FILE__);?> enctype="multipart/form-data">
<p><input type="file" name="PostFile" size="50"></p>
<p><input type="submit" value=" 上 传 " name="Submit"></p>
</form>
echo $_FILES['PostFile']['type'];
echo $PostFile_type;
然后是htm类型的页面也可以上传。很ft.救命呀! $maxsize="1024*100";
for($i=0; $i<count($pic); $i++) {
set_time_limit(60);
if(!empty($pic_name[$i])) {
$type=$pic_type[$i];
if(($type="image/gif")||($type="image/jpeg")||($type="image/pjpeg"))
{
if($pic_size<($maxsize)) {
$path = dirname($PATH_TRANSLATED)."/upload/".$pic_name[$i];
copy($pic[$i],$path);
$path=$pic_name[$i];
$new_path="../admin/upload/$path";
echo "$pic_size";
}
/*end if*/
else {
echo "图片太大";
echo "<a href=\"javascript:history.go(-1)\" onMouseOver=\"self.status=document.referrer;return true\">点击此处返回</a><br/>";
}
/*end else*/
}
/*end if*/ else {
echo "图片格式不符";
echo "<a href=\"javascript:history.go(-1)\" onMouseOver=\"self.status=document.referrer;return true\">点击此处返回</a>"; unlink($source);
exit();
}
/*end else*/
}
/*end if*/
else {
echo "没有图片";
}
/*end else*/
}
/*end for*/
只传图片用getimagesize()
switch ($style[2])
{
case 0;
echo "图片格式未知";
break;case 1;
echo "这是一张gif图片";
break;case 2;
echo "这是一张jpg图片";
break;case 3;
echo "这是一张png图片";
break;
}
但我还是不明白为什么我的$type=$pic_type[$i];不能得到文件类型.首先说明一下,我的register_global是on;不用考虑参数传递的写法.如果真的没有办法解决这个问题那我只好说:天下没有白偷的懒!
$_FILES['PostFile']['type']
进行验证,
你只要限定几种类型文件可以上传就可以了...
凡超出这几个范围,就禁止上传你的global虽然是on...
不过php4.3以后要求越来越严禁了...
你的习惯不好,,
呵呵 ~