首页 > php代码 > php 经典安全文件上传代码

php 经典安全文件上传代码

<?php
/**
 * 上传文件
 * to : uploadBoroughThumb|borough|picture
 * to : 函数名|目录分类|图片类型
 *
 */
require ('path.inc.php');
$to = $_GET["to"];
$action = $_GET['action'];
if ($action == "") {
    $action = "form";
}
if ($action == "doupload") {
    echo '<html>';
    echo '<head>';
    echo '<title>上传成功</title>';
    echo "<meta http-equiv="content - type" content="text / html;
    charset = gb2312">";
    echo '</head>';
    $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 '</body>';
    echo '</html>';
} elseif ($action == "form") {
    echo '<html>';
    echo '<head>';
    echo '<title>上传文件</title>';
    echo "<meta http-equiv=\"content-type\" content=\"text/html;
    charset = gb2312\">";
    echo '</head>';
    echo "<body leftmargin=\"0\" topmargin=\"0\">";
    echo "<table cellpadding=\"2\" cellspacing=\"1\" border=\"0\" height=\"100%\" align=\"left\">";
    echo "<form action='upload.php?action=doupload&to=" . $to . "' method='post' enctype='multipart/form-data'>";
    echo "<tr ><td  valign='middle'>";
    echo "<input type='file' name='uploadfile'>";
    echo "<input name='submit' type='submit' value='上传'>";
    echo "</td></tr>";
    echo "</form>";
    echo "</table";
    echo "</body>";
    echo '</html>';
}


本文地址:http://www.phprm.com/code/72c1df05efbc7ad906d32b9a20df6ceb.html

转载随意,但请附上文章地址:-)

标签:none

发表留言