phpstudy_php 经典安全文件上传代码

更新时间:2016-01-24    来源:php安全    手机版     字体:

【www.bbyears.com--php安全】

/**
 * 上传文件
 * to : uploadBoroughThumb|borough|picture
 * to : 函数名|目录分类|图片类型
 *
 */
require("path.inc.php");
$to = $_GET["to"];
$action = $_GET["action"];
if($action==""){
 $action = "form";
}
if($action=="doupload"){
 echo "";
 echo "";
 echo "上传成功";
 echo "";
 echo "";
 
 $store_info = explode("|",$to);
 $js_func = $store_info[0];

 /*  判断特殊字符 */
 if($store_info[1]){
  if(!ereg("^[A-Za-z]+$",$store_info[1])){
   exit;
  }
 }
 if($store_info[2]){
  if(!ereg("^[A-Za-z]+$",$store_info[2])){
   exit;
  }
 }

 $upload_conf = require($cfg["path"]["conf"]."upload.cfg.php");
 
 $this_config = (array)$upload_conf[$store_info[1]][$store_info[2]];
 if(empty($this_config)){
  exit;
 }
 $upload = new UploadFile();//实例化上传对象
 //设置可以上传文件的类型
 $upload->setAllowFileType($this_config["allowType"]);
 foreach ($_FILES as $a_file){
  if($a_file["error"]!=UPLOAD_ERR_NO_FILE) {
   try{
    $fileName = $upload->upload($a_file,$cfg["path"]["root"]."upfile/".$this_config["originalPath"], 1);
    $f_path["url"] = $this_config["originalPath"].$fileName;
    $f_path["name"] = $a_file["name"];
    $attach_file[] = $f_path;
    if(in_array(strtolower(FileSystem::fileExt($f_path["name"])),array("gif","jpeg","jpg","png")) && !$this_config["noResize"]){
     //先缩略到指定大小
     $image = new Image($cfg["path"]["root"]."upfile/".$this_config["originalPath"].$fileName);
     $image->resizeImage($this_config["width"],$this_config["height"],$this_config["resizeType"]);
     $image->save();
     //加水印
     if($this_config["watermark"]){
      $image = new Image($cfg["path"]["root"]."upfile/".$this_config["originalPath"].$fileName);
      $image->waterMark($this_config["watermarkPic"],$this_config["watermarkPos"]);
      $image->save();
     }
     //如果需要再生成缩略图
     if($this_config["thumb"]){
      $image = new Image($cfg["path"]["root"]."upfile/".$this_config["originalPath"].$fileName);
      $image->resizeImage($this_config["thumbWidth"],$this_config["thumbHeight"],$this_config["thumbResizeType"]);
      if($this_config["originalPath"]==$this_config["thumbDir"]){
       //防止存储目录相同时覆盖原有的图片,不存储缩略图直接设置 thumb 属性为空
       $image->save(2,$cfg["path"]["root"]."upfile/".$this_config["thumbDir"],"_thumb");
       $thumb_path = $this_config["thumbDir"].FileSystem::getBasicName($fileName, false)."_thumb".FileSystem::fileExt($fileName, true);
      }else{
       $image->save(1,$cfg["path"]["root"]."upfile/".$this_config["thumbDir"]);
       $thumb_path = $this_config["thumbDir"].$fileName;
      }
     }
    }
    //回传参数
    echo "<script>
     var parentForm;
     if(window.opener){
      parentForm = window.opener;
     }else{
      parentForm = window.parent;
     }
     parentForm.".$js_func."("".$f_path["url"]."","".$f_path["name"]."","".$thumb_path."");
    </script>";
    
   }catch(Exception $e){
    $page->back( $e->getMessage());
   }
  }else{
   echo "<script>
     alert("请先浏览文件后点击上传php教程");
     history.back();
   </script>";
   exit;
  }
  echo "<script>
   /*if(window.opener){
    window.close();
   }else{
    history.back();
   }*/
   history.back();
  </script>";
 }
 echo "";
 echo "";
}elseif($action=="form"){
 echo "";
 echo "";
 echo "上传文件";
 echo "";
 echo "";
 echo "";
 echo "";
 echo "

";
 echo "";
 echo "";
 echo "";
 echo "";
 echo "
";
 echo "  echo "";
 echo "";
}
?>

本文来源:http://www.bbyears.com/jiaocheng/21199.html

猜你感兴趣

热门标签

更多>>

本类排行