第一次自写函数 现在我要写一个函数,就是处理上传的。要验证文件夹是否存在,是否是允许的类型。这个要怎么写?还有说个思路。不要使用类。就用函数。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $_FILE数组中有你需要的值,取出来检查就可以了。 1.是否是允许的类型:使用$_FILES['name']['type']获取上文文件的类型进行判断2.验证文件夹是否存在使用:is_dir() function check($dir,$file){ if(!is_dir($dir)) { return false; } $ext_arr = array("jpg","gif");//允许的文件扩展名 $extend = pathinfo($file); $extend = strtolower($extend["extension"]); if(!in_array($extend,$ext_arr)) { return false; } return true;} 没有问题的吧,exe文件能用gif扩展名执行吗? 这个好像要检测MIME类型,否则你不允许文本执行,他把文本扩展名命名为.jpg,岂不是可以执行了?ps:linux下扩展名与是否可执行没有关系 liunx下上传的文件不可能有执行权限的吧至于windows下改了扩展名是不能执行的。 http://www.w3school.com.cn/php/php_file_upload.aspw3school上的例子 扩展名修改后,用$_FILES['name']['type']检测数出来的文件类型也随即发生了改变,所以判断类型和扩展名应该都是无所谓的。 我知道正常情况下判断文件类型是用type,我的问题是修改了扩展名后是否可执行 可以执行的吧,看看这个帖子http://topic.csdn.net/t/20060506/14/4732662.html http://www.cnblogs.com/chengmo/archive/2010/10/17/1853710.html这个是检测文件头的,这个貌似比较安全,不过如果这样用户就没有办法自己设置上传文件的类型了。 这个我说过了,linux下上传文件是没有执行权限的,我的问题是在windows下是否修改扩展名仍旧后可执行 ASP网马改成jpg的文件之后上传 windows下我母鸡啊。。不要问我啊。。我说的是LZ问的问题是是否是允许的类型,所以你在Linux下检测的应该是文件的类型,而不是扩展名,不是上传的文件有没有执行权限的问题,而是LZ要不要给这个文件可执行权限的问题啊 去掉扩展名,按你的方式就无法知道文件类型了!mime类型依然可以知道! array_pop(explode('.',$filename));//获取文件扩展名或 pathinfo()['extend']; win2008 r2 添加了Zend但是运行程序提示zend没有安装求助! function下面的foreach返回怎么只返回一条信息? 二级域名怎么绑定子目录?? 隐藏页面的真实url地址 如何保存页面中的图片? php怎么解密JScript.Encode的代码? 安装好wamp后,在www文件夹放入info.php文件,浏览器运行提示无法访问网页。 ajax异步处理时,想要停止后台处理该如何实现,求大神帮忙 phpMyadmin的错误返回问题 这个正则该怎么写?高手来帮帮忙 如何点击按钮,刷新文本框的时间 二维数组中相同记录相加的问题,
2.验证文件夹是否存在使用:is_dir()
{
if(!is_dir($dir))
{
return false;
}
$ext_arr = array("jpg","gif");//允许的文件扩展名
$extend = pathinfo($file);
$extend = strtolower($extend["extension"]);
if(!in_array($extend,$ext_arr))
{
return false;
}
return true;
}
ps:linux下扩展名与是否可执行没有关系
至于windows下改了扩展名是不能执行的。
扩展名修改后,用$_FILES['name']['type']检测数出来的文件类型也随即发生了改变,所以判断类型和扩展名应该都是无所谓的。
http://topic.csdn.net/t/20060506/14/4732662.html
这个我说过了,linux下上传文件是没有执行权限的,我的问题是在windows下是否修改扩展名仍旧后可执行
我说的是LZ问的问题是是否是允许的类型,所以你在Linux下检测的应该是文件的类型,而不是扩展名,不是上传的文件有没有执行权限的问题,而是LZ要不要给这个文件可执行权限的问题啊
去掉扩展名,按你的方式就无法知道文件类型了!
mime类型依然可以知道!
或 pathinfo()['extend'];