php 文件上传 is_uploaded_file,PHP: is_uploaded_file - Manual

As of PHP 4.2.0, rather than automatically assuming a failed file uploaded is a file attack, you can use the error code associated with the file upload to check and see why the upload failed.  This error code is stored in the userfile array (ex: $HTTP_POST_FILES['userfile']['error']).

Here's an example of a switch:

if (is_uploaded_file($userfile)) {

//include code to copy tmp file to final location here...

}else{

switch($HTTP_POST_FILES['userfile']['error']){

case 0: //no error; possible file attack!

echo "There was a problem with your upload.";

break;

case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini

echo "The file you are trying to upload is too big.";

break;

case 2: //uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form

echo "The file you are trying to upload is too big.";

break;

case 3: //uploaded file was only partially uploaded

echo "The file you are trying upload was only partially uploaded.";

break;

case 4: //no file was uploaded

echo "You must select an image for upload.";

break;

default: //a default error, just in case!  :)

echo "There was a problem with your upload.";

break;

}

Additionally, by testing the 'name' element of the file upload array, you can filter out unwanted file types (.exe, .zip, .bat, etc).  Here's an example of a filter that can be added before testing to see if the file was uploaded:

//rejects all .exe, .com, .bat, .zip, .doc and .txt files

if(preg_match("/.exe$|.com$|.bat$|.zip$|.doc$|.txt$/i", $HTTP_POST_FILES['userfile']['name'])){

exit("You cannot upload this type of file.");

}

//if file is not rejected by the filter, continue normally

if (is_uploaded_file($userfile)) {

/*rest of code*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值