php文件管理器 - CSDN
精华内容
参与话题
  • <html> <head> <title>文件管理</title> <meta charset='utf-8' /> </head> <body> <?php //定义要查看的目录...

     

    <html>
        <head>
            <title>文件管理</title>
            <meta charset='utf-8' />
        </head>
        <body>
            <?php
                //定义要查看的目录
                $dir="/";
                
                //先判断$_GET['a']是否已经传值 防止NOTICE错误
                if(isset($_GET['a'])){
                    //选择判断要执行的操作
                    switch($_GET['a']){
                        case 'creat':
                            //新建文件
                            $filename=$_POST["filename"];
                            $filename=rtrim($dir,"/")."/".$filename;
                            //写入文件 写入一个空字符串
                            file_put_contents($filename,"");
                            break;
                        case 'del':
                            //删除文件
                            unlink($_GET['filename']);
                            break;
                        case 'update':
                            //修改文件
                            file_put_contents($_POST['filename'],$_POST['content']);
                            echo "修改成功";
                            header("refresh:1;url=index.php");
                            break;
                    }
                }
                
            ?>
            <center>
                <h1>文件管理</h1>
                <form action='index.php?a=creat' method='post'>
                    文件:<input type='text' name='filename' />
                    <input type='submit' value='新建' />
                </form>
                <table border='1' width='900' cellpadding='5' cellspacing='0'>
                    <tr>
                        <th>文件名</th>
                        <th>类型</th>
                        <th>大小</th>
                        <th>创建时间</th>
                        <th>操作</th>
                    </tr>
                    <?php
                        //遍历目录
                        $dd=opendir($dir);
                        while(false !== ($f=readdir($dd))){
                            //过滤点
                            if($f == "." || $f == ".."){
                                continue;
                            }
                            //拼路径
                            $file=rtrim($dir,"/")."/".$f;
                            //防止中文乱码
                            $f2=iconv("gb2312","utf-8",$f);
                            echo "<tr>";
                                echo "<td>{$f2}</td>";
                                echo "<td>".filetype($file)."</td>";
                                echo "<td>".filesize($file)."</td>";
                                echo "<td>".filectime($file)."</td>";
                                echo "<td align='center'>
                                        <a href='index.php?a=edit&filename={$file}'>修改</a>|
                                        <a href='index.php?a=del&filename={$file}'>删除</a>
                                      </td>";
                            echo "</tr>";
                        
                        }
                    ?>
                </table>
                <?php
                    if(isset($_GET['a']) && $_GET['a']=='edit'){
                        echo "<hr/>";
                        echo "<form action='index.php?a=update' method='post'>";
                            echo "文件名:<input type='text' name='filename' readonly value='{$_GET['filename']}'  />";
                            echo "<br/><br/>";
                            echo "<textarea name='content' rows='5' cols='30'>".file_get_contents($_GET['filename'])."</textarea>";
                            echo "<br/><br/>";
                            echo "<input type='submit' value='保存修改' />";
                        echo "</form>";
                    }
                
                ?>
            </center>
        </body>
    </html>

     

     

    php简单文件管理器——php经典实例

     

    转载于:https://www.cnblogs.com/wordblog/p/6852451.html

    展开全文
  • php文件管理器

    2020-10-06 08:18:29
     项目开发过程中,网站一般部署到远程服务器,所以文件管理就不能和本机操作一样方便。通常文件管理是用ftp下载到本地,修改后再上传,或者远程登录到服务器进行修改。但是这些操作都依赖于复杂的第三方软件。如果...

    前言:

      项目开发过程中,网站一般部署到远程服务器,所以文件管理就不能和本机操作一样方便。通常文件管理是用ftp下载到本地,修改后再上传,或者远程登录到服务器进行修改。但是这些操作都依赖于复杂的第三方软件。如果只是想简单修改网站中一个页面中的文字,或查看文件代码,相对于繁琐的使用第三方软件进行操作的流程,如果有一个小程序能在线操作文件,那就能方便快速达到自己的需求了。所以,SuExplorer就是在这样的需求中被开发出来。
    秉承自己开发的小工具一贯的风格,首先是要尽可能绿色单文件,尽量不依赖其他文件,然后是容易部署。 这样才能方便在项目中提高生产力!
    简介:
      SuExplorer_PHP是一个用于在线管理文件的单文件绿色版PHP程序,和phpinfo.php一样可以方便放到项目中使用。 开发项目过程中,操作服务器上的文件是一个费时费力的流程,如果有一个通用管理程序,可以很简单而高效地管理服务器上的文件,那对项目的开发效率肯定有明显的提升,可以减少很多重复而单调的体力劳动。但是,管理服务器上的文件,首先要连接上服务器,然后用第三方工具进行操作,为了简单查看一下文件源码,却要安装一大堆不需要的依赖文件,而且还要开启和关闭第三方软件,效率有点低。于是决定自己抽出一点时间来开发一个自己用起来顺手的在线文件管理小工具,简单而高效,用起来还顺手~
    特性:
    1、单文件绿色版,无外部依赖,方便部署使用 2、支持登录验证 3、支持内置配置文件,使用更灵活 功能:

      1. 在线创建文件或目录
      2. 在线删除文件或目录
      3. 在线重命名文件或目录
      4. 在线编辑文本文件
      5. 在线上传文件
      6. 在线压缩
      7. 在线解压缩
        使用:
      8. SuExplorer_3_1文件复制到您的项目中任意目录(本文件为单文件绿色版,方便使用).
      9. 修改配置内容为适合您需要的规则.
      10. 运行本文件, 开始在线管理文件

      项目地址:https://gitee.com/sutroon/SuExplorer_PHP_3_0

    php单文件管理器:

    <?php
    session_start();
    /**
     * SuExplorer.php
     * 在线php/ini/conf/sh等脚本文件编辑器, 不依赖ftp和服务器帐号(单页绿色文件,方便部署)
     * @since 1.0 <2015-5-11> SoChishun <14507247@qq.com> Added.
     * @since 2.0 <2015-7-24> SoChishun 
     *      1.重命名为SuExplorer.php
     *      2.改进若干外观样式
     *      3.新增登录验证模块
     *      4.新增删除功能
     * @since 3.0 <2015-10-7> SoChishun
     *      1.新增在线压缩和解压功能
     *      2.新增chomd权限设置功能
     *      3.新增rename重命名功能
     *      4.新增新建文件和目录功能
     *      5.类SuFileEditor重构为SuExplorer,类方法改为静态方法
     *      6.新增主配置文件功能
     *      7.重构页面逻辑,改为脚本混合代码,便于阅读
     *      8.基于绝对路径操作改为基于网站根目录的相对路径操作
     *  @since 3.1 <2016-9-13> SoChishun
     *      1. 新增文件上传功能
     * @since 3.2 <2017-8-23> SoChishun
     *      1. 修正无法查看脚本文件的问题
     *      2. 对html输出增加htmlspecialchars过滤功能
     */
    // 程序版本号 [2015-10-7] Added.
    $version = '3.2';
    // session键名 [2015-10-7] Added.
    $sess_id = 'sess_suexplorer';
    
    // 权限规则 [2015-10-7] Added.
    $prules = array('delfile', 'deldir', 'savefile', 'newfile', 'mkdir', 'renamefile', 'renamedir', 'chomdfile', 'chomddir', 'zip', 'unzip');
    
    // 主配置 [2015-10-7] Added.
    $config = array(
        /* 用户配置 */
        'users' => array(
            'admin' => array('admin123', array('allow' => array(), 'forbit' => array())),
            'test' => array('testpwd', array('allow' => array(), 'forbit' => array())),
        ),
    );
    
    // 登录信息 [2015-10-7] Added.
    $login_data = isset($_SESSION[$sess_id]) ? $_SESSION[$sess_id] : false;
    
    $action = I('action');
    $view = I('view');
    $path = I('path', '/'); // urldecode($_GET['path']) $_SERVER['DOCUMENT_ROOT']
    $parent_path = path_getdir($path);
    switch ($action) {
        case 'login': // 用户登录
            if (!SuExplorer::user_login($config, $sess_id, $msg)) {
                redirect('?r=fail', 1, $msg);
            } else {
                redirect('?r=ok');
            }
            break;
        case 'logout': // 注销登录
            SuExplorer::user_logout($sess_id);
            redirect('?r=ok');
            break;
        case 'del': // 删除路径(文件或目录)
            if (!SuExplorer::act_delete_path($path, $msg)) {
                redirect('?path=' . $path, 1, $msg);
            } else {
                redirect('?path=' . path_getdir($path), 1, '恭喜,操作成功!');
            }
            break;
        case 'savefile': // 保存文件
        case 'save_newfile': // 新建文件
            if (!SuExplorer::act_save_file($msg)) {
                redirect('?path=' . $path, 1, $msg);
            } else {
                redirect('?path=' . $path, 1, '恭喜,操作成功!');
            }
            break;
        case 'save_newdir': // 新建目录
            if (!SuExplorer::act_save_newdir($msg)) {
                redirect('?path=' . $path, 1, $msg);
            } else {
                redirect('?path=' . $path, 1, '恭喜,操作成功!');
            }
            break;
        case 'upload_file': // 上传文件
            if (!SuExplorer::act_upload_file($msg)) {
                redirect('?path=' . $path, 1, $msg);
            } else {
                redirect('?path=' . $path, 1, '恭喜,文件上传成功!');
            }
            break;
        case 'rename_path': // 重命名路径(文件或目录)
            if (!SuExplorer::act_rename_path($msg)) {
                redirect('?path=' . $path, 1, $msg);
            } else {
                redirect('?path=' . pathinfo($path, PATHINFO_DIRNAME), 1, '恭喜,操作成功!');
            }
            break;
        case 'chmod_path': // 修改权限(文件或目录)
            if (!SuExplorer::act_chmod_path($msg)) {
                redirect('?path=' . $path, 1, $msg);
            } else {
                redirect('?path=' . $path, 1, '恭喜,操作成功!');
            }
            break;
        case 'zip': // 压缩
            if (!SuExplorer::act_zip($msg)) {
                redirect('?path=' . $path, 1, $msg);
            } else {
                redirect('?path=' . $path, 1, '恭喜,操作成功!');
            }
            break;
        case 'unzip': // 解压缩
            if (!SuExplorer::act_unzip($msg)) {
                redirect('?path=' . $path, 1, $msg);
            } else {
                redirect('?path=' . $path, 1, '恭喜,操作成功!');
            }
            break;
    }
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>SuExplorer-<?php echo $version ?></title>
            <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
            <style type="text/css">
                body {font-size:12px; color:#333;}
                a{text-decoration: none;}
                textarea{font-size:12px;line-height:18px; padding:5px;}
                th{font-weight: normal;}
                .userbar a:before{content: '['}
                .userbar a:after{content: ']'}
                .dir-contents{width:1050px; display:table;}
                .dir-contents a{ margin-right:20px;line-height:21px;text-decoration:none;float:left;}
                .blue{color:#0000DB}
                .lightblue{color:#1bd1a5}
                .purple{color:#9900ff}
                .green{color:#009900}
                .red{color:#F00}
                .grey {color:#999;}
                .nav { line-height: 18px;}
                .nav a { color:#333;}
                .nav a:before { content: ' » ' }
                .nav a:first-child:before {content: ''}
                .nav div { color:#CCC; border-bottom:solid 1px #CCC; margin-bottom:5px;}
            </style>
        </head>
        <body>
            <?php if ($login_data): ?>
                <!-- 用户信息栏 -->
                <div class="userbar">
                    欢迎您, <?php echo $login_data['user_name'] ?> <a href="?action=logout">注销</a>
                    <a href="?view=newfile&path=<?php echo $parent_path ?>">新建文件</a>
                    <a href="?view=upload&path=<?php echo $parent_path ?>">上传文件</a>
                    <a href="?view=newdir&path=<?php echo $parent_path ?>">新建目录</a>
                    <a href="?view=zip&path=<?php echo $parent_path ?>">打包目录</a>
                    <a href="?view=unzip&path=<?php echo $parent_path ?>">解压目录</a>
                </div>
                <!-- /用户信息栏 -->
                <!-- 路径栏 -->
                <div>
                    <form method="get" action="#" id="frm-path">
                        <input type="text" name="path" value="<?php echo $path ?>" style="width:50%;color:#333;padding:0px 2px;" required="required" />
                        <input type="hidden" id="action" name="action" value="" />
                        <input type="hidden" id="do" name="do" value="" />
                        <button type="submit">转到</button>
                        <button type="button" onclick="return del_cofirm('frm-path', '删除');">删除</button>
                        <button type="button" data-path="<?php echo $path ?>" onclick="go_url(this, 'rename')">重命名</button>
                        <button type="button" data-path="<?php echo $path ?>" onclick="go_url(this, 'chmod')">权限</button>
                    </form>
                </div>
                <!-- /路径栏 -->
                <div><?php SuExplorer::index($view, $path) ?></div>
                <!-- 脚本区 -->
                <script type="text/javascript">
                    /**
                     * 删除确认
                     * @param {type} form_id
                     * @param {type} act_name
                     * @returns {Boolean}
                     * @since 1.0 <2015-10-7> SoChishun Added.
                     */
                    function del_cofirm(form_id, act_name) {
                        if (!confirm('您确定要' + act_name + '吗?')) {
                            return false;
                        }
                        var i = 0;
                        function confirmx() {
                            i++;
                            return confirm(i + '.重要的操作要重复问三遍,您确定要' + act_name + '吗?');
                        }
                        while (i < 3) {
                            if (!confirmx()) {
                                return false;
                            }
                        }
                        document.getElementById("action").value = "del";
                        document.getElementById("do").value = "yes";
                        document.getElementById(form_id).submit();
                    }
                    /**
                     * 跳转到链接
                     * @param {HtmlButton} btn
                     * @since 1.0 <2015-10-9> SoChishun Added.
                     */
                    function go_url(btn, view) {
                        location.href = '?path=' + $(btn).data('path') + '&view=' + view;
                    }
                </script>
                <!-- /脚本区 -->
            <?php else: ?>
                <!-- 用户登录表单 -->
                <form method="post">
                    <table>
                        <tr><th>用户名:</th><td><input type="text" name="uname" placeholder="用户名" required="required" /></td></tr>
                        <tr><th>密&nbsp;码:</th><td><input type="password" name="upwd" placeholder="密码" required="required" /></td></tr>
                    </table>
                    <input type="hidden" name="action" value="login" />
                    <button type="submit">登录</button> <button type="reset">重置</button>
                </form>
                <!-- /用户登录表单 -->
            <?php endif; ?>
        </body>
    </html>
    <?php
    /* * ****************************************************************************************************
      函数 :)
     * **************************************************************************************************** */
    
    /**
     * 获取浏览器参数
     * @param string $name
     * @param mixed $defv
     * @return mixed
     * @since 1.0 <2015-8-13> SoChishun Added.
     */
    function I($name, $defv = '') {
        if (isset($_GET[$name])) {
            return $_GET[$name];
        }
        return isset($_POST[$name]) ? $_POST[$name] : $defv;
    }
    
    /**
     * URL重定向
     * @param string $url 重定向的URL地址
     * @param integer $time 重定向的等待时间(秒)
     * @param string $msg 重定向前的提示信息
     * @return void
     * @since 1.0 <2015-10-7> from ThinkPHP
     */
    function redirect($url, $time = 0, $msg = '') {
        //多行URL地址支持
        $url = str_replace(array("\n", "\r"), '', $url);
        if (empty($msg))
            $msg = "系统将在{$time}秒之后自动跳转到{$url}!";
        if (!headers_sent()) {
            // redirect
            if (0 === $time) {
                header('Location: ' . $url);
            } else {
                header("refresh:{$time};url={$url}");
                echo($msg);
            }
            exit();
        } else {
            $str = "<meta http-equiv='Refresh' content='{$time};URL={$url}'>";
            if ($time != 0)
                $str .= $msg;
            exit($str);
        }
    }
    
    /**
     * 获取文件扩展名类型
     * @param string $exten 扩展名(不带.)
     * @return string
     * @since 1.0 <2015-10-9> SoChishun Added.
     */
    function get_exten_catetory($exten) {
        if ($exten) {
            $filetypes = array('zip' => array('zip', 'rar', '7-zip', 'tar', 'gz', 'gzip'), 'doc' => array('txt', 'rtf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'wps', 'et'), 'script' => array('php', 'js', 'css', 'c'), 'image' => array('jpg', 'jpeg', 'png', 'gif', 'tiff', 'psd', 'bmp', 'ico'));
            foreach ($filetypes as $catetory => $extens) {
                if (in_array($exten, $extens)) {
                    return $catetory;
                }
            }
        }
        return '';
    }
    
    /**
     * 绝对路径转相对路径
     * @param string $path
     * @return string
     * @since 1.0 <2015-10-9> SoChishun Added.
     */
    function path_ator($path) {
        $root = $_SERVER['DOCUMENT_ROOT'];
        $path = substr($path, strlen($root));
        if ('/' != DIRECTORY_SEPARATOR) {
            $path = str_replace(DIRECTORY_SEPARATOR, '/', $path);
        }
        return $path;
    }
    
    /**
     * 相对路径转绝对路径
     * @param string $path
     * @return string
     * @since 1.0 <2015-10-9> SoChishun Added.
     */
    function path_rtoa($path) {
        $root = $_SERVER['DOCUMENT_ROOT'];
        if ('/' != DIRECTORY_SEPARATOR) {
            $path = str_replace('/', DIRECTORY_SEPARATOR, $path);
        }
        return $root . $path;
    }
    
    /**
     * 获取文件的目录地址
     * @param string $path
     * @param boolean $is_r 是否相对路径
     * @return string
     * @since 1.0 <2015-10-9> SoChishun Added.
     */
    function path_getdir($path, $is_r = true) {
        if (!$path || is_dir($is_r ? path_rtoa($path) : $path)) {
            return $path;
        }
        return pathinfo($path, PATHINFO_DIRNAME);
    }
    
    /**
     * 页面主类
     * @since 1.0 <2015-5-11> SoChishun <14507247@qq.com> Added.
     * @since 3.0 <2015-10-7> SoChishun 重构.
     */
    class SuExplorer {
    
        /**
         * 版本号
         * @var string
         * @since 1.0 <2015-10-7> SoChishun Added.
         */
        CONST VERSION = '3.0.0';
    
        /**
         * 显示网站目录的项目内容
         * @since 1.0 <2015-5-11> SoChishun Added.
         */
        static function index($view, $path) {
            // 面包屑导航
            self::location_to_breadcrumb($path);
            // 视图显示
            switch ($view) {
                case 'newfile':
                    self::view_create_file($path);
                    break;
                case 'newdir':
                    self::view_create_dir($path);
                    break;
                case 'upload':
                    self::view_upload_file($path);
                    break;
                case 'rename':
                    self::view_rename_path($path);
                    break;
                case 'chmod':
                    self::view_chmod_path($path);
                    break;
                case 'zip':
                    self::view_zip();
                    break;
                case 'unzip':
                    self::view_unzip();
                    break;
                default:
                    // 列出文件
                    $sapath = path_rtoa($path);
                    if (is_dir($sapath)) {
                        self::view_content_list($path);
                    } else if (is_file($sapath)) {
                        self::view_edit_file($path);
                    } else {
                        echo '<strong class="red">文件或目录不存在或已删除!</strong>';
                    }
                    break;
            }
        }
    
        /**
         * 用户登录操作
         * @param array $config
         * @param string $sess_id
         * @param string $msg 错误消息
         * @return boolean 
         * @since 1.0 <2015-10-9> SoChishun Added.
         */
        static function user_login($config, $sess_id, &$msg = '') {
            if (!$_POST || !isset($_POST['uname'])) {
                $msg = '表单数据无效!';
                return false;
            }
            $uname = $_POST['uname'];
            if (!array_key_exists($uname, $config['users'])) {
                $msg = '用户不存在';
                return false;
            }
            $login_data = $config['users'][$uname];
            if ($login_data[0] != $_POST['upwd']) {
                $msg = '密码错误!';
                return false;
            }
            $_SESSION[$sess_id] = array('user_name' => $uname, 'rules' => isset($login_data[1]) ? $login_data[1] : false);
            return true;
        }
    
        /**
         * 用户登出操作
         * @param string $sess_id
         * @return boolean 
         * @since 1.0 <2015-10-9> SoChishun Added.
         */
        static function user_logout($sess_id) {
            if (isset($_SESSION[$sess_id])) {
                unset($_SESSION[$sess_id]);
            }
            return true;
        }
    
        /**
         * 删除路径(文件或目录)
         * @param string $path 路径
         * @param string $msg 错误消息
         * @return boolean|string
         * @since 1.0 <2015-10-7> SoChishun Added.
         * @since 2.0 <2015-10-8> SoChishun 将delete_file和delete_dir合并到delete_path
         */
        static function act_delete_path($path, &$msg = '') {
            if ('yes' != I('do')) {
                // 为防止黑客破坏,删除操作需要手动增加参数do=yes
                $msg = '非法操作!';
                return false;
            }
            if ('/' == $path) {
                $msg = '根目录无法删除!';
                return false;
            }
            $path = path_rtoa($path);
            if (is_file($path)) {
                if (!@unlink($path)) {
                    $msg = '文件删除失败!';
                    return false;
                }
                return true;
            }
            if (is_dir($path)) {
                if (!@rmdir($path)) {
                    $msg = '目录删除失败!(非空目录或权限不足)';
                    return false;
                }
                return true;
            }
            $msg = '不是有效文件或目录!';
            return false;
        }
    
        /**
         * 保存(新)文件
         * @param type $msg
         * @return boolean
         * @since 1.0 <2015-10-7> SoChishun Added.
         */
        static function act_save_file(&$msg = '') {
            $filename = I('filename');
            if (!$filename || !strpos($filename, '.')) {
                $msg = '文件扩展名无效!';
                return false;
            }
            $content = I('content');
            $path = I('path');
            $path = path_rtoa($path);
            if (is_file($path)) {
                $path = path_getdir($path, false);
            }
            $newpath = $path . DIRECTORY_SEPARATOR . $filename;
            try {
                file_put_contents($newpath, $content);
                return true;
            } catch (Exception $ex) {
                $msg = $ex->getMessage();
                return false;
            }
        }
    
        /**
         * 保存新目录
         * @param string $msg 错误消息
         * @return boolean
         * @since 1.0 <2015-10-8> SoChishun Added.
         */
        static function act_save_newdir(&$msg = '') {
            $filename = I('filename');
            if (!$filename) {
                $msg = '目录名称无效';
                return false;
            }
            $path = path_rtoa(I('path'));
            $newpath = $path . DIRECTORY_SEPARATOR . $filename;
            try {
                mkdir($newpath, I('mode'));
                return true;
            } catch (Exception $ex) {
                $msg = $ex->getMessage();
                return false;
            }
        }
    
        /**
         * 上传文件
         * @param type $msg
         * @return boolean
         * @since 1.0 <2016-9-13> SoChishun Added.
         */
        static function act_upload_file(&$msg = '') {
            if ($_FILES["file"]["error"] > 0) {
                $msg = $_FILES["file"]["error"];
                return false;
            }
    
            $path = I('path');
            $path = path_rtoa($path);
            $filename = $_FILES["file"]["name"];
            if (file_exists($path . $filename)) {
                $msg = $filename . " 文件已存在!";
                return false;
            }
            move_uploaded_file($_FILES["file"]["tmp_name"], $path . $filename);
            return true;
        }
    
        /**
         * 重命名路径操作
         * @param string $msg 错误消息
         * @return boolean
         * @since 1.0 <2015-10-9> SoChishun Added.
         */
        static function act_rename_path(&$msg = '') {
            $filename2 = I('filename2');
            if (!$filename2) {
                $msg = '新名称未填写!';
                return false;
            }
            $path = path_rtoa(I('path'));
            if (is_file($path) && !strpos($filename2, '.')) {
                $msg = '文件扩展名无效!';
                return false;
            }
            try {
                $newname = pathinfo($path, PATHINFO_DIRNAME) . DIRECTORY_SEPARATOR . $filename2;
                @rename($path, $newname);
                return true;
            } catch (Exception $ex) {
                $msg = $ex->getMessage();
                return false;
            }
        }
    
        /**
         * 编辑权限操作
         * @param string $msg 错误消息
         * @return boolean
         * @since 1.0 <2015-10-9> SoChishun Added.
         */
        static function act_chmod_path(&$msg = '') {
            $mode = I('mode');
            if (!$mode) {
                $msg = '权限模式无效!';
                return false;
            }
            $path = path_rtoa(I('path'));
            try {
                chmod($path, $mode);
                return true;
            } catch (Exception $ex) {
                $msg = $ex->getMessage();
                return false;
            }
        }
    
        /**
         * 压缩操作
         * @param string $msg
         * @return boolean
         * @since 1.0 <2015-10-9> SoChishun Added.
         */
        static function act_zip(&$msg = '') {
            $filename = I('filename');
            $content = I('content');
            if (!$filename || !strpos($filename, '.')) {
                $msg = '压缩文件名无效!';
                return false;
            }
            if (!$content) {
                $msg = '压缩内容无效!';
                return false;
            }
            $include = array();
            $exclude = array();
            $paths = explode(PHP_EOL, $content);
            foreach ($paths as $path) {
                if (0 === strpos($path, 'exclude ')) {
                    $exclude[] = trim(substr($path, 8));
                } else {
                    $include[] = $path;
                }
            }
            if (!$include) {
                $msg = '压缩内容无效!';
                return false;
            }
            $zip = new ZipHelper();
            return $zip->zip($filename, $msg, $include, $exclude, I('rootpath'));
        }
    
        /**
         * 解压缩文件
         * @param type $msg
         * @return type
         */
        static function act_unzip(&$msg = '') {
            $root = I('root');
            $filename = I('filename');
            if (!$filename) {
                $msg = '压缩文件路径无效!';
                return false;
            }
            if (!$root) {
                $msg = '解压缩路径无效!';
                return false;
            }
            $zip = new ZipHelper();
            return $zip->unzip($filename, $root, $msg);
        }
    
        /**
         * 目录内容视图
         * @param type $path
         * @since 1.0 <2015-5-11> SoChishun Added.
         */
        static function view_content_list($path) {
            $files = self::get_dir_contents($path, array('name' => true, 'path' => false, 'real_path' => false, 'relative_path' => true, 'exten' => false, 'ctime' => false, 'mtime' => false, 'size' => false, 'is_dir' => true, 'is_file' => false, 'is_link' => true, 'is_executable' => true, 'is_readable' => false, 'is_writable' => false, 'filetype' => true));
            echo '<div class="dir-contents" title="蓝色表示目录,绿色表示可执行文件,浅蓝色表示链接文件,红色表示压缩文件,紫色表示图形文件,灰色表示其他文件">';
            foreach ($files as $file) {
                if ($file['is_dir']) {
                    echo '<a href="?path=' . $file['relative_path'] . '" class="blue"><strong>' . $file['name'] . '</strong></a>';
                } else {
                    $class = '';
                    if ($file['is_link']) {
                        $class = 'lightblue';
                    } else if ($file['is_executable']) {
                        $class = 'green';
                    } else {
                        switch ($file['filetype']) {
                            case 'zip':
                                $class = 'red';
                                break;
                            case 'image':
                                $class = 'purple';
                                break;
                            default:
                                $class = 'grey';
                                break;
                        }
                    }
                    echo '<a href="?path=' . $file['relative_path'] . '" class="' . $class . '">' . $file['name'] . '</a>';
                }
            }
            echo '<div style="clear:both"></div></div>';
        }
    
        /**
         * 文件内容编辑视图
         * @param type $path
         * @since 1.0 <2015-5-11> SoChishun Added.
         */
        static function view_edit_file($path) {
            $sapath = path_rtoa($path);
            if (!is_file($sapath)) {
                return;
            }
            $category = get_exten_catetory(pathinfo($path, PATHINFO_EXTENSION));
            switch ($category) {
                case 'doc':
                case 'script':
                    $btns = '<button type="submit">保存</button><button type="reset">重置</button>';
                    if (!is_writable($sapath)) {
                        echo '<div style="color:#F00">文件不可写</div>';
                        $btns = '';
                    }
                    echo '<div>
                        <form method="post">
                            ', $btns, '<div><textarea name="content" cols="60" rows="36" style="width:90%">' . htmlspecialchars(file_get_contents($sapath)) . '</textarea></div>', $btns, '
                            <input type="hidden" name="action" value="savefile" />
                            <input type="hidden" name="filename" value="' . basename($path) . '" />
                            <input type="hidden" name="path" value="' . $path . '" />
                        </form>
                    </div>';
                    break;
                case 'image':
                    echo '<img src="', $path, '" alt="" style="max-width:800px;max-height:640px;" /><br />';
                    echo basename($path);
                    echo ' <a href="', $path, '" target="_blank">[原图]</a>';
                    break;
                default:
                    echo basename($path);
                    echo ' <a href="', $path, '" target="_blank">[下载]</a>';
                    break;
            }
        }
    
        /**
         * 新增文件视图
         * @param string $path 路径
         * @since 1.0 <2015-10-8> SoChishun Added.
         */
        static function view_create_file($path) {
            echo '<div>
                        <form method="post">
                            <table>
                                <tr><th>文件名:</th><td><input type="text" name="filename" required="required" placeholder="如:newfile.txt" /></td></tr>
                                <tr><th valign="top">内容:</th><td><textarea name="content" cols="90" rows="12"></textarea></td></tr>
                                <tr><td>&nbsp;</td><td><button type="submit">创建文件</button><button type="reset">重置</button></td></tr>
                            </table>
                            <input type="hidden" name="action" value="save_newfile" />
                            <input type="hidden" name="path" value="' . $path . '" />
                        </form>
                    </div>';
        }
    
        /**
         * 新增目录视图
         * @param string $path 路径
         * @since 1.0 <2015-10-8> SoChishun Added.
         */
        static function view_create_dir($path) {
            echo '<div>
                        <form method="post">
                            目录名:<input type="text" name="filename" required="required" /><br />
                            权限模式:<input type="text" name="mode" required="required" value="0777" /><br />
                            <button type="submit">创建目录</button> <button type="reset">重置</button>
                            <input type="hidden" name="action" value="save_newdir" />
                            <input type="hidden" name="path" value="' . $path . '" />
                        </form>
                    </div>';
        }
    
        static function view_upload_file($path) {
            echo '<div>
                        <form method="post" enctype="multipart/form-data">
                            <table>
                                <tr><th>选择文件:</th><td><input type="file" name="file" required="required" /></td></tr>
                                <tr><td>&nbsp;</td><td><button type="submit">立即上传</button> <button type="reset">重置</button></td></tr>
                            </table>
                            <input type="hidden" name="action" value="upload_file" />
                            <input type="hidden" name="path" value="' . $path . '" />
                        </form>
                    </div>';
        }
    
        /**
         * 重命名文件视图
         * @param string $path 路径
         * @since 1.0 <2015-10-8> SoChishun Added.
         */
        static function view_rename_path($path) {
            echo '<div>
                        <form method="post">
                            原名称:<input type="hidden" name="filename" value="' . basename($path) . '" />' . basename($path) . '<br />
                            新名称:<input type="text" name="filename2" required="required" /><br />
                            <button type="submit">重命名</button> <button type="reset">重置</button>
                            <input type="hidden" name="action" value="rename_path" />
                            <input type="hidden" name="path" value="' . $path . '" />
                        </form>
                    </div>';
        }
    
        /**
         * 编辑权限视图
         * @param string $path 路径
         * @since 1.0 <2015-10-9> SoChishun Added.
         */
        static function view_chmod_path($path) {
            echo '<div>
                        <form method="post">
                            名称:' . basename($path) . '<br />
                            权限模式:<input type="text" name="mode" required="required" value="0777" /><br />
                            <button type="submit">设置</button> <button type="reset">重置</button>
                            <input type="hidden" name="action" value="chmod_path" />
                            <input type="hidden" name="path" value="' . $path . '" />
                        </form>
                    </div>';
        }
    
        /**
         * 压缩文件视图
         * @since 1.0 <2015-10-9> SoChishun Added.
         */
        static function view_zip() {
            echo '<div>
                        <form method="post">
                            <table>
                                <tr><th>压缩文件名:</th><td><input type="text" name="filename" required="required" size="89" placeholder="绝对路径,如:C:\public\www\website1\newfile.zip" /></td></tr>
                                <tr><th valign="top">压缩内容:</th><td><textarea name="content" cols="90" rows="12" placeholder="每个路径一行,必需是绝对路径"></textarea></td></tr>
                                <tr><th>去除根路径:</th><td><input type="text" name="rootpath" size="89" placeholder="绝对路径,如:C:\public\www\website1" /></td></tr>
                                <tr><td>&nbsp;</td><td class="red">
                                注意,所有路径都必需是绝对路径!<br />
                                包含路径示例:C:\public\www\website1\app<br />
                                排除路径示例: exclude C:\public\www\website1\app\runtime<br />
                                如果填写跟路径地址,则压缩内容会自动去除跟路径信息(解压缩的时候,可以解压缩到任意目录下),如果根路径为空则保留根路径信息(解压缩的时候,无法解压缩到任意目录下,系统会自动创建和压缩前路径一样的目录)
                                </td></tr>
                                <tr><td>&nbsp;</td><td><button type="submit">创建压缩文件</button><button type="reset">重置</button></td></tr>
                            </table>                        
                            <input type="hidden" name="action" value="zip" />
                        </form>
                    </div>';
        }
    
        /**
         * 解压缩文件视图
         * @since 1.0 <2015-10-9> SoChishun Added.
         */
        static function view_unzip() {
            echo '<div>
                        <form method="post">
                            <table>
                                <tr><th>压缩文件名:</th><td><input type="text" name="filename" required="required" size="89" placeholder="绝对路径,如:C:\public\www\website1\newfile.zip" /></td></tr>
                                <tr><th>解压缩路径:</th><td><input type="text" name="root" required="required" size="89" placeholder="绝对路径,如:C:\public\www\website1" /></td></tr>
                                <tr><td>&nbsp;</td><td><button type="submit">解压缩文件</button><button type="reset">重置</button></td></tr>
                            </table>
                            <input type="hidden" name="action" value="unzip" />
                        </form>
                    </div>';
        }
    
        /**
         * 返回指定路径下的内容
         * @param string $directory 路径
         * @param array $config 选项
         * @return array
         * @throws Exception
         * @since 1.0 <2015-5-11> SoChishun Added.
         * @since 1.1 <2015-10-8> SoChishun 新增filetype文件类别属性
         */
        static function get_dir_contents($directory, $options = array()) {
            $config = array('name' => true, 'path' => true, 'real_path' => true, 'relative_path' => false, 'exten' => false, 'ctime' => false, 'mtime' => false, 'size' => false, 'is_dir' => true, 'is_file' => false, 'is_link' => false, 'is_executable' => false, 'is_readable' => false, 'is_writable' => false, 'filetype' => false);
            if ($options) {
                $config = array_merge($config, $options);
            }
            try {
                $dir = new DirectoryIterator(path_rtoa($directory));
            } catch (Exception $e) {
                throw new Exception($directory . ' is not readable');
            }
            $files = array();
            foreach ($dir as $file) {
                if ($file->isDot()) {
                    continue;
                }
                if ($config['name']) {
                    $item['name'] = $file->getFileName();
                }
                if ($config['path']) {
                    $item['path'] = $file->getPath();
                }
                if ($config['real_path']) {
                    $item['real_path'] = $file->getRealPath();
                }
                if ($config['relative_path']) {
                    $item['relative_path'] = path_ator($file->getRealPath());
                }
                $exten = $file->getExtension();
                if ($config['exten']) {
                    $item['exten'] = $exten;
                }
                if ($config['filetype']) {
                    $item['filetype'] = get_exten_catetory($exten);
                }
                if ($config['mtime']) {
                    $item['mtime'] = $file->getMTime();
                }
                if ($config['ctime']) {
                    $item['ctime'] = $file->getCTime();
                }
                if ($config['size']) {
                    $item['size'] = $file->getSize();
                }
                if ($config['is_dir']) {
                    $item['is_dir'] = $file->isDir();
                }
                if ($config['is_file']) {
                    $item['is_file'] = $file->isFile();
                }
                if ($config['is_link']) {
                    $item['is_link'] = $file->isLink();
                }
                if ($config['is_executable']) {
                    $item['is_executable'] = $file->isExecutable();
                }
                if ($config['is_readable']) {
                    $item['is_readable'] = $file->isReadable();
                }
                if ($config['is_writable']) {
                    $item['is_writable'] = $file->isWritable();
                }
                $files[] = $item;
            }
            return $files;
        }
    
        /**
         * 路径转为导航
         * @param string $path
         * @since 1.0 <2015-5-11> SoChishun Added.
         */
        static function location_to_breadcrumb($path) {
            echo '<div class="nav"><a href="?path=/">/</a>';
            if ('/' != $path) {
                $asubpath = explode('/', substr($path, 1));
                if ($asubpath) {
                    $str = '';
                    foreach ($asubpath as $sub) {
                        $str .= '/' . $sub;
                        echo '<a href="?path=', $str, '">', $sub, '</a>';
                    }
                }
            }
            echo '<div>', path_rtoa($path), '</div>';
            echo '</div>';
        }
    
    }
    
    /**
     * 压缩类
     * @since 1.0 <2015-10-9> SoChishun Added.
     */
    class ZipHelper {
    
        /**
         * 解压缩之
         * @param type $filename
         * @param type $root
         * @param type $msg
         * @return boolean
         * @since 1.0 <2015-10-9> SoChishun Added.
         */
        function unzip($filename, $root, &$msg = '') {
            if (!$filename) {
                $msg = '压缩文件名无效!';
                return false;
            }
            $zip = new ZipArchive();
            $msg = $zip->open($filename);
            if (true !== $msg) {
                $msg = var_export($msg, true);
                return false;
            }
            $zip->extractTo($root);
            $zip->close();
            return true;
        }
    
        /**
         * 压缩之
         * @param type $filename
         * @param type $msg
         * @param type $include
         * @param type $exclude
         * @param string $trimpath
         * @param string $comment
         * @return boolean
         * @since 1.0 <2015-10-9> SoChishun Added.
         */
        function zip($filename, &$msg = '', $include = array(), $exclude = array(), $trimpath = '', $comment = 'default') {
            if (!$filename) {
                $msg = '压缩文件名无效!';
                return false;
            }
            if (!$include) {
                $msg = '压缩内容无效!';
                return false;
            }
            if ('default' == $comment) {
                $comment = basename($filename) . PHP_EOL . 'Generate at ' . date('Y-m-d H:i:s') . PHP_EOL . 'Powerd by SuExplorer.'; // 注释内容
            }
            try {
                $zip = new ZipArchive();
                $msg = $zip->open($filename, ZIPARCHIVE::OVERWRITE);
                if (true !== $msg) {
                    $msg = var_export($msg, true);
                    return false;
                }
                if ($comment) {
                    $zip->setArchiveComment($comment);
                }
                if ($trimpath) {
                    $trimpath = rtrim($trimpath, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
                }
                $substart = strlen($trimpath);
                foreach ($include as $source) {
                    $this->zip_dir($zip, $source, $exclude, $substart);
                }
                $zip->close();
                return true;
            } catch (Exception $ex) {
                $msg = $ex->getMessage();
                return false;
            }
        }
    
        /**
         * 递归压缩整个目录
         * @param ZipArchive $zip
         * @param string $source 包含的路径
         * @param array $exclude 排除的路径
         * @param int $substart 开始截取的路径字符串(用于去除路径中的根目录路径)
         * @since 1.0 <2015-8-28> SoChishun Added.
         */
        function zip_dir(&$zip, $source, $exclude, $substart = 0) {
            if (is_dir($source)) {
                $source = rtrim($source, DIRECTORY_SEPARATOR);
                if ($handle = opendir($source)) {
                    while (false !== ( $f = readdir($handle) )) {
                        if ('.' == $f || '..' == $f) {
                            continue;
                        }
                        $filename = $source . DIRECTORY_SEPARATOR . $f;
                        if (is_dir($filename)) {
                            if ($exclude && in_array($filename, $exclude)) {
                                continue;
                            }
                            $this->zip_dir($zip, $filename, $exclude, $substart);
                        } else {
                            if ($exclude && in_array($filename, $exclude)) {
                                continue;
                            }
                            $zip->addFile($filename, substr($filename, $substart));
                        }
                    }
                    closedir($handle);
                }
            } else {
                if ($exclude && in_array($source, $exclude)) {
                    return;
                }
                $zip->addFile($source);
            }
        }
    }
    
    展开全文
  • PHP文件管理器

    2019-06-25 21:56:51
    KodExplorer 转载于:https://www.cnblogs.com/adtuu/p/5129898.html

    KodExplorer

    转载于:https://www.cnblogs.com/adtuu/p/5129898.html

    展开全文
  • PHP写的文件管理器

    千次阅读 2017-10-29 16:46:36
    最近又来折腾了,突发奇想用PHP写一个文件管理器,所谓文件管理器,就只有一个读取文件夹与修改文件而已,删除文件以及文件夹由于懒,还没有写,代码写的也挺乱,变量名称也不是太规范,哈哈,将就着看吧。...

    最近又来折腾了,突发奇想用PHP写一个文件管理器,所谓文件管理器,就只有一个读取文件夹与修改文件而已,删除文件以及文件夹由于懒,还没有写,代码写的也挺乱,变量名称也不是太规范,哈哈,将就着看吧。有很多的缺点,当时写的时候没有想仔细,就一下子开始写了,比如读取文件类返回的是li,不够灵活。另外文件图标方面尝试过用访问路径的方式来判断是否存在,但是发现文件一多的话,就会速度很慢,所以用了直接选用同文件夹下的后缀名.png的这个图标,只用if语句简单的判断了几种特殊的方式,好啦,不多说了共享代码
    原文地址:http://renpengpeng.com/741.html

    文件

    index.php   //首页文件
    edit.php    //编辑文件文件
    class.dir.php   //封装类文件

    文件夹页面
    文件夹页面
    编辑文件页面
    文件编辑页面
    class.dir.php

    <?php
    /*
    **文件管理类
    */
    error_reporting(0);
    class dir{
        public $path; //路径
        public $opendirr; //打开路径
        public $readdirr;//读取路径
        public $filee; //文件数组
        public $doc_root;//站点根目录
        public $zsPath;        //用于拼接目录
        public $fileStar;  //文件属性
        public $strip;    //字符最后一次出现的位置
        public $strlen;        //字符总长度
        public $sub;       //截取的文件后缀名
        public $fileEvenImg; //每个不同的文件属性的图标
        public $alert = "文件暂时不能读取,新功能开发中!";
        public $fileOutChar;   //原编码
        public $pathChar;  //路径字符编码
        public $pathGbk;   //路径gbk编码
    
        public function __construct(){
            $this->doc_root = $_SERVER['DOCUMENT_ROOT'];
        }
    
        //析构函数打开文件
        public function odir($path){
            $this->path = $path;
            if(!$path){
                die("error 没有定义路径请定义路径!");
            }
            //开始获取路径编码并强行转为gbk
            //然后用gbk的方式来获取文件后强行转为utf-8显示
            $this->pathChar = mb_detect_encoding($this->path,array('UTF-8','GBK','LATIN1','BIG5'));
            $this->pathChar = strtolower($this->pathChar);
            if($this->pathChar != 'gbk'){
                $this->pathGbk = iconv($this->pathChar, 'gbk',$this->path );
            }
            if(!is_dir($this->pathGbk)){
                die("error 不是一个正确的路径!");
            }
            $this->opendirr = opendir($this->pathGbk);
            if(!$this->opendirr){
                die('error 打开文件夹失败!');
            }
            while($this->filee = readdir($this->opendirr)){
                /*获取编码值不是则转换为utf-8 */
                $charset = mb_detect_encoding($this->filee,array('UTF-8','GBK','LATIN1','BIG5'));
                $charset = strtolower($charset);
                /* 转换为utf-8 */
                if($charset != 'utf-8' || $charset != 'utf8'){
                    //$char = iconv($charset, 'cp960', $this->filee);
                    $this->filee = iconv($charset, 'utf-8', $this->filee);
                }
                /*附一个值为原编码 * 方便浏览访问+判断 */
                $this->fileOutChar = iconv('utf-8', 'gbk', $this->filee);
                $this->pathGbk = iconv('utf-8', 'gbk', $this->path);
                /* 开始switch判断把默认的 . 与 ..改成返回上一页与反回首页 */
                switch ($this->filee) {
                    case '.':
                        echo "<li><a href='javascrip::valid(0)' onclick='window.history.back(-1);return false;'><img src='img/back.png' width='25' height='25'>返回上级</a></li>";
                        break;
                    case '..':
                        echo "<li><a href='index.php?url={$this->doc_root}'><img src='img/index.png' width='25' height='25'>站点首页</a></li>";
                        break;
                    default :
                        /* $this->zsPath  拼接的gbk路径  用于判断是否为文件夹 */
                        $this->zsPath = $this->pathGbk.'/'.$this->fileOutChar;
                        if(is_dir($this->zsPath)){
                            echo "<li><img src='img/files.png' width='30' height='30'><a href='index.php?path={$this->path}/{$this->filee}'>".$this->filee."</a></li>";
                        }else {
                            /* 开始获取文件后缀名 */
                            $this->strip = strripos($this->filee,'.');
                            $this->strlen = strlen($this->filee);
                            $this->sub = substr($this->filee,$this->strip+1,$this->strlen - $this->strip);
                            //截取完毕开始判断 * 如果没有后缀名则使用no.png
                            if(!$this->strip){
                                $this->sub = 'no';
                            }
                            //如果后缀名数字多余两位 使用nums.png
                            if(preg_match('/[0-9]{2,}/',$this->sub)){
                                $this->sub = 'nums';
                            }
                            //如果后缀名中带‘ - ’则使用no.png
                            if(preg_match('-', $this->sub)){
                                $this->sub = 'no';
                            }
                            //如果后缀名大于等于6位则使用no.png
                            if(strlen($this->sub) >= 6){
                                $this->sub = 'no';
                            }
                            //否则使用img目录对于的后缀名
                            echo "<li><img src='img/{$this->sub}.png' width='30' height='30'><a href='edit.php?f={$this->path}/{$this->filee}'>".$this->filee."</a></li>";
                        }
                        break;
                }
            }
            closedir($this->opendirr);
    
        }
    }
    
    /**  读取文件类  **/
    
    class edit {
        public $file;
        public $filename;  //文件名字
        public $filetype;  //文件类型
        public $filesize;  //文件大小
        public $fileopen;  //打开文件
        public $fileread;  //读取文件
    
        //写入变量
        public $filepath;
        public $filecontent;   //保存文件用到的文件内容
        public $fileput;       //文件写入
    
        public function edits($files){
            $this->file = $files;
            if(!file_exists($this->file)){
                die("文件不存在!");
            }
            $this->fileopen = fopen($this->file, 'r');
            if(!$this->fileopen){
                die("文件读取失败");
            }
            $this->filesize = filesize($this->file);
            $this->fileread = fread($this->fileopen,$this->filesize);
            $this->fileread = htmlspecialchars($this->fileread);
            //开始获取文件的后缀名
            $filestr = strlen($this->file);
            $filepoint = strrpos($this->file, '.');
            $filesub = substr($this->file, $filepoint+1);
            $this->filetype = $filesub;
            $this->filename = basename($this->file);
            //以数组形式返回:文件类型 文件名称 文件内容 文件路径
            return array(
                'filetype'=>$this->filetype,
                'filename'=>$this->filename,
                'filecontent'=>$this->fileread,
                'filepath'=>$this->file
            );
            //关闭文件
            fclose($this->file);
        }
        /* 修改文件函数 */
        public function bc($filepath,$filecontent){
            $this->filepath = $filepath;
            //访问文件
            $this->fileopen = file_get_contents($this->filepath);
            if(!$this->fileopen){
                die('文件打开失败');
            }
            //获取传进来的文件内容
            $this->filecontent = $filecontent;
            //反转义html
            $this->filecontent = htmlspecialchars_decode($this->filecontent);
            //写入文件
            $this->fileput = file_put_contents($this->filepath, $this->filecontent);
            //如果成功返回true 否则返回false
            if($this->fileput){
                return true;
            }else {
                return false;
            }
    
    
        }
    }
    ?>

    edit.php

    <?php
    //读取文件edit.php
    require_once 'class.dir.php';
    
    if(!isset($_GET['f'])){
        die("no error");
    }
    $edit = new edit();
    $edits = $edit->edits($_GET['f']);
    
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <title><?php echo $edits['filename']; ?>-编辑</title>
        <style type="text/css">
            * {
                padding: 0;
                margin: 0;
                border: 0;
            }
            .box {
                width: 800px;
                margin: 0 auto;
                border: 1px solid #eee;
            }
            .title {
                text-align: center;
                height: 80px;
                line-height: 80px;
            }
            .bjcontent {
                min-height:500px; 
            }
            textarea {
                width: 100%;
                margin: 0 auto;
                min-height: 500px;
                border: 1px solid #000;
                padding: 5px;
                outline: none;
            }
            .but {
                text-align: center;
            }
            .but button{
                margin-top:10px;
                width: 60px;
                height: 30px;
                text-align: center;
                line-height: 30px;
                border: 0;
                background: blue;
                color: #fff;
                outline: none;
            }
            .marleft {
                margin-left: 10px;
            }
        </style>
    </head>
    <body>
    <div class="box">
        <div class="title"><?php echo $edits['filename']; ?>-编辑</div>
        <div class="bjcontent">
            <form action='' method="post">
            <textarea name='filenr'>
                <?php echo $edits['filecontent']; ?>
            </textarea>
        </div>
        <div class='but'><button name='bc'>保存</button><button name='out' class="marleft" onclick="window.history.back(-1);return false;">取消</button></div>
    </div>
    <?php
    if(isset($_POST['bc'])){
        //把总路径减去文件名得到上级目录
        $tzPath = str_replace($edits['filename'], '', $edits['filepath']);
        //得到url
        $tzUrl = "index.php?path=".$tzPath;
    
        $filecontent = $_POST['filenr'];
        $xieru = $edit->bc($edits['filepath'],$filecontent);
        if(!$xieru){
            echo "<script>alert('保存失败')</script>";
            echo "<script>location.href='{$tzUrl}'</script>";
        }else {
            echo "<script>alert('保存成功')</script>";
            echo "<script>location.href='{$tzUrl}'</script>";
        }
    
    }
    ?>
    </body>
    </html>

    index.php

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <meta charset="utf-8">
        <link rel="icon" href="http://localhost/dir/favicon.ico" type="image/x-icon">
        <link rel="shortcut icon" href="http://localhost/dir/favicon.ico" type="image/x-icon">
        <style type="text/css">
            * {
                padding: 0;
                margin: 0;
                border: 0;
            }
            .file {
                margin: 0 auto;
                width: 800px;
                height: auto;
                padding: 15px;
                border: 1px solid #ddd;
            }
            .file ul {
                width: 100%;
                list-style: none;
            }
            .file li {
                width: 100%;
                height: 50px;
                line-height: 50px;
                font-size: 16px;
                border-bottom: 1px solid #eaeaee;
            }
            .file li a {
                color:#000;
                text-decoration: none;
            }
            .file li img {
                margin-bottom: -10px;
                margin-right: 5px;
            }
            .bd input {
                border-radius: 10px;
                outline: none;
            }
            .bdinp {
                border: 1px solid #000;
                height: 40px;
                width: 80%;
            }
            .bdsub {
                border: 0;
                background:#ccc;
                width: 15%;
                height: 40px;
            }
        </style>
    </head>
    <body>
    <div class="file">
        <ul>
    <?php
    require_once 'class.dir.php';
    
    if($_GET['path']){
        $path = $_GET['path'];
    }else {
        $path = $_SERVER['DOCUMENT_ROOT'];
    }
    $dir = new dir();
    $dir->odir($path);
    ?>
        </ul>
    </div>
    </body>
    </html>

    压缩包下载地址:dir.zip

    展开全文
  • 我以前用虚拟主机的时候,因为自带的文件管理器功能太弱,操作起来非常繁琐,期间找了各种文件管理器,比如:8年文件管理器(共一个文件,相当牛),AjaXplorer(感觉庞大)等等,功能都不是很满意,只是凑合用,能...
  • php文件管理器php文件管理器php文件管理器php文件管理器php文件管理器
  • PHP File Manager(PHP文件管理器)是一个基于php的单文件 文件管理程序,适合服务器文件管理及其它各种用途。 功能: 基础+高级文件管理功能, 支持复制移动、创建文件及文件夹、重命名、删除、设置根目录等。 还能 ...
  • 为什么80%的码农都做不了架构师?>>> ...
  • 经常有朋友在使用一些没有带文件管理器的空间时,苦于没有办法来解压上传的文件压缩包,而如果不先上传压缩包,直接上传文件夹的话耗费的时间太多。还有一些朋友希望将空间变成一个文件存储站,这时就需要一个功能...
  • 推荐一款最好用的windows文件管理器

    万次阅读 2018-08-20 14:53:13
    在日常生活或工作中,除了一些文本编辑工具以及网页浏览器以外,我们接触的最多的可能就是资源管理器了。资源管理器软件有很多。如:   Clover 、QTTabBar、FreeCommander、WindowsTabs、Q-Dir、Total Commander...
  • Java实现的文件资源管理器——仿Windows

    万次阅读 多人点赞 2019-06-24 14:47:48
    1.模仿Windows的文件资源管理器对本机的文件目录树的显示,对文件目录进行查看和浏览,用地址栏、文件目录树、打开文件夹等方法都可以在文件目录之间进行跳转 2.对文件的基本操作:打开、删除、批量删除、重命名、...
  • 有时候因为手机内存不足,手机会...这时候很多朋友都会使用手机自带的文件管理器来删除掉多余的文件,手机管理器也会根据文件的属性为我们分好类别方便我们操作。但是系统预装的软件有一个缺点,就是没有内置一个回收
  • 关于Win10资源管理器总是崩溃的问题解决方案

    万次阅读 热门讨论 2018-09-17 17:51:38
    参照网上的各种方法,无论是安装电脑管家进行修复还是禁用一些服务、修改注册表、更改文件夹选项都无法解决文件管理器崩溃的问题,最后发现将资源管理器的打开方式设置为“此电脑”就可以轻松解决此问题!...
  • 尽管迅雷号称是“加密”了下载的本地文件,事实上,通过观察,我们很容易发现,这完全是一个幌子,迅雷根本没有加密任何文件,只是通过一些 hack,将文件隐藏了而已。下面就给出一个方法,在不知道迅雷私人空间密码...
  • 一款最好用的windows文件管理器

    万次阅读 2019-11-15 21:13:28
    一款windows文件管理神器,让你文件管理效率提高百倍,省出一个年假
  • Ubuntu18.04 中的文件管理器

    千次阅读 2019-10-23 23:35:32
    Ubuntu 18.04中平时用的比较多的文件管理器,使用到的一些技巧做一些总结 : 1. 终端快速启动文件管理器 nautilus + path (指定路径) 2. 常用文件夹创建书签 nautilus创建书签的方式隐藏的比较深,不容易找到, 位于...
  • java做一个简单的文件管理器(一)

    万次阅读 2017-08-04 11:10:27
    目的与内容运用面向对象程序设计思想,基于Java文件管理和I/O框架,实现基于图形界面的GUI文件管理器。 1、实现文件夹创建、删除、进入。 2、实现当前文件夹下的内容罗列。 3、实现文件拷贝和文件夹拷贝(文件夹...
  • 操作系统作为磁盘文件系统和用户之间的中介,必须在内核中建立自己的文件系统,为与磁盘文件系统相区别,我们把它叫做操作系统的文件管理系统,简称文件管理系统。   文件管理系统与磁盘文件系统的关系 与处理器...
  • 之前在装oracle数据库的时候,由于没装成功,想卸载掉,但是某些文件却删不掉,需要一些权限。例如下图: 解决方案: 右击该文件,选择属性,找到安全,选择高级: 选择更改: 选择高级: ...
  • Windows 8 文件资源管理器(推荐)

    万次阅读 多人点赞 2012-10-31 11:10:13
    [核心提示] 资源管理器一直是 Windows ...从“资源管理器”到“文件管理器” Windows 资源管理器 Windows 用户查看、管理文件的基本工具,也是 Windows 桌面用户体验的基础,但如果你向一个普通 PC 用户问他对 Windows
1 2 3 4 5 ... 20
收藏数 1,649,726
精华内容 659,890
热门标签
关键字:

php文件管理器