Home php教程 php手册 php单文件版在线代码编辑器

php单文件版在线代码编辑器

Jun 06, 2016 pm 08:06 PM
php editor

这篇文章主要介绍了php单文件版在线代码编辑器,个人感觉相当不错,分享给大家,需要的朋友可以参考下

密码加密方式:
 * md5(自设密码+$ace) //$ace为cdn镜像地址

使用方法:

 * 1.确认 $pwd 变量值为 false, 上传本文件到PHP空间并访问
 * 2.第一次访问提示设置密码,设置密码并牢记
 * 3.使用第一次设置的密码登录后,默认编辑的是本php文件,
 * 4.本文件是编辑器核心文件,请不要随意修改
 * 5.保存编辑的文件请用 Ctrl + S 按键组合,等待执行结果
 * 6.保存动作执行后请务必等待保存成功信息返回
 * 7.重置操作会修改本程序的文件名,以防他人猜测路径
 * 8.刷新功能仅是刷新本程序文件,不能刷新其他

建议在 chrome 浏览器中使用本编辑器

复制代码 代码如下:


session_start();
$curr_file = __FILE__; //默认编辑当前文件
$curr_file_path = str_replace(dirname(__FILE__), '', __FILE__);
$pwd = "57574d98bc6ebe77b07e59d87065cd9e"; //密码初始化默认值为 false
$ace = 'ace.js'; //编辑器核心js
$tip['core'] = 'alertify.core.min.css';
$tip['css'] = 'alertify.default.min.css';
$tip['js'] = 'alertify.min.js';
$jquery = 'jquery.min.js';
if ( false !== $pwd ) {
    define('DEFAULT_PWD', $pwd);
}
//文件后缀名对应的语法解析器
$lng = array(
    'as' => 'actionscript', 'js' => 'javascript',
    'php' => 'php', 'css' => 'css', 'html' => 'html',
    'htm' => 'html', 'ini' => 'ini', 'json' => 'json',
    'jsp' => 'jsp', 'txt' => 'text', 'sql' => 'mysql',
    'xml' => 'xml', 'yaml' => 'yaml', 'py' => 'python',
    'md' => 'markdown', 'htaccess' => 'apache_conf',
    'bat' => 'batchfile', 'go' => 'golang',
);
//判断用户是否登录
function is_logged() {
    $flag = false;
    if ( isset($_SESSION['pwd']) && defined('DEFAULT_PWD') ) {
        if ( $_SESSION['pwd'] === DEFAULT_PWD ) {
            $flag = true;
        }
    }
    return $flag;
}
//重新载入到本页面
function reload() {
    $file = pathinfo(__FILE__, PATHINFO_BASENAME);
    die(header("Location: {$file}"));
}
//判断请求是否是ajax请求
function is_ajax() {
    $flag = false;
    if ( isset($_SERVER['HTTP_X_REQUESTED_WITH']) ) {
        $flag = strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
    }
    return $flag;
}
//销毁SESSION和COOKIE
function exterminate() {
    $_SESSION = array();
    foreach ( $_COOKIE as $key ) {
        setcookie($key, null);
    }
    session_destroy();
    $_COOKIE = array();
    return true;
}
//获取一个目录下的文件列表
function list_dir($path, $type = 'array') {
    $flag = false;
    $lst = array('dir'=>array(), 'file'=>array());
    $base = !is_dir($path) ? dirname($path) : $path;
    $tmp = scandir($base);
    foreach ( $tmp as $k=>$v ) {
        //过滤掉上级目录,本级目录和程序自身文件名
        if ( !in_array($v, array('.', '..')) ) {
            $file = $full_path = rtrim($base, 'http://www.jb51.net/').DIRECTORY_SEPARATOR.$v;
            if ( $full_path == __FILE__ ) {
                continue; //屏蔽自身文件不在列表出现
            }
            $file = str_replace(dirname(__FILE__), '', $file);
            $file = str_replace("\\", 'http://www.jb51.net/', $file); //过滤win下的路径
            $file = str_replace('//', 'http://www.jb51.net/', $file); //过滤双斜杠
            if ( is_dir($full_path) ) {
                if ( 'html' === $type ) {
                    $v = '

  • '.$v.'
  • ';
                    }
                    array_push($lst['dir'], $v);
                } else {
                    if ( 'html' === $type ) {
                        $v = '
  • '.$v.'
  • ';
                    }
                    array_push($lst['file'], $v);
                }
            }
        }
        $lst = array_merge($lst['dir'], $lst['file']);
        $lst = array_filter($lst);
        $flag = $lst;
        if ( 'html' === $type ) {
            $flag = '
      '. implode('', $lst) .'
    ';
        }
        return $flag;
    }
    //递归删除一个非空目录
    function deldir($dir) {
        $dh = opendir($dir);
        while ( $file = readdir($dh) ) {
            if ( $file != '.' && $file != '..' ) {
                $fullpath = $dir.'http://www.jb51.net/'.$file;
                if ( !is_dir($fullpath) ) {
                    unlink($fullpath);
                } else {
                    deldir($fullpath);
                }
            }
        }
        return rmdir($dir);
    }
    //退出登录
    if ( isset($_GET['logout']) ) {
        if ( exterminate() ) {
            reload();
        }
    }
    //ajax输出文件内容
    if ( is_logged() && is_ajax() && isset($_POST['file']) ) {
        $file = dirname(__FILE__).$_POST['file'];
        $ext = pathinfo($file, PATHINFO_EXTENSION);
        $mode = isset($lng[$ext]) ? $lng[$ext] : false;
        die(json_encode(array(
            'file' => $file, 'html' => file_get_contents($file),
            'mode' => $mode,    
        )));
    }
    //ajax输出目录列表
    if ( is_logged() && is_ajax() && isset($_POST['dir']) ) {
        $dir = dirname(__FILE__).$_POST['dir'];
        $list_dir = list_dir($dir, 'html');
        die(json_encode(array(
            'dir' => $dir, 'html' => $list_dir,
        )));
    }
    //ajax保存文件
    if ( is_logged() && is_ajax() && isset($_POST['action']) ) {
        $arr = array('result'=>'error', 'msg'=>'文件保存失败!');
        $content = $_POST['content'];
        if ( 'save_file' === $_POST['action'] ) {
            if ( isset($_POST['file_path']) ) {
                $file = dirname(__FILE__).$_POST['file_path'];
            } else {
                $file = __FILE__;
            }
            file_put_contents($file, $content);
            $arr['result'] = 'success';
            $arr['msg'] = '保存成功!';
        }
        die(json_encode($arr));
    }
    //ajax删除文件或文件夹
    if ( is_logged() && is_ajax() && isset($_POST['del']) ) {
        $path = dirname(__FILE__).$_POST['del'];
        $arr = array('result'=>'error', 'msg'=>'删除操作失败!');
        if ( $_POST['del'] && $path ) {
            $flag = is_dir($path) ? deldir($path) : unlink($path);
            if ( $flag ) {
               $arr['msg'] = '删除操作成功!';
               $arr['result'] = 'success';
            }
        }
        die(json_encode($arr));
    }
    //ajax新建文件或文件夹
    if ( is_logged() && is_ajax() && isset($_POST['create']) ) {
        $flag = false;
        $arr = array('result'=>'error', 'msg'=>'操作失败!');
        if ( isset($_POST['target']) ) {
            $target = dirname(__FILE__).$_POST['target'];
            $target = is_dir($target) ? $target : dirname($target);
        }
        if ( $_POST['create'] && $target ) {
            $base_name = pathinfo($_POST['create'], PATHINFO_BASENAME);
            $exp = explode('.', $base_name);
            $full_path = $target.'http://www.jb51.net/'.$base_name;
            $new_path = str_replace(dirname(__FILE__), '', $full_path);
            if ( count($exp) > 1 && isset($lng[array_pop($exp)]) ) {
                file_put_contents($full_path, '');
                $arr['result'] = 'success';
                $arr['msg'] = '新建文件成功!';
                $arr['type'] = 'file';
            } else {
                mkdir($full_path, 0777, true);
                $arr['result'] = 'success';
                $arr['msg'] = '新建目录成功!';
                $arr['type'] = 'dir';
            }
            if ( $base_name && $new_path ) {
                $arr['new_name'] = $base_name;
                $arr['new_path'] = $new_path;
            }
        }
        die(json_encode($arr));
    }
    //ajax重命名文件或文件夹
    if ( is_logged() && is_ajax() && isset($_POST['rename']) ) {
        $arr = array('result'=>'error', 'msg'=>'重命名操作失败!');
        if ( isset($_POST['target']) ) {
            $target = dirname(__FILE__).$_POST['target'];
        }
        if ( $_POST['rename'] ) {
            $base_name = pathinfo($_POST['rename'], PATHINFO_BASENAME);
            if ( $base_name ) {
                $rename = dirname($target).'http://www.jb51.net/'.$base_name;
                $new_path = str_replace(dirname(__FILE__), '', $rename);
            }
        }
        if ( $rename && $target && rename($target, $rename) ) {
           $arr['new_name'] = $base_name;
           $arr['new_path'] = $new_path;
           $arr['msg'] = '重命名操作成功!';
           $arr['result'] = 'success';
        }
        if ( $target == __FILE__ ) {
            $arr['redirect'] = $new_path;
        }
        die(json_encode($arr));
    }
    //获取代码文件内容
    $code = file_get_contents($curr_file);
    $tree = '

         
    • ROOT'.list_dir($curr_file, 'html').'

    ';
    //登陆和设置密码共用模版
    $first =

    【标题】






       

           
       

       
       
       
       

    HTMLSTR;
    //判断是否第一次登录
    if ( false === $pwd && empty($_POST) ) {
        die(str_replace(
            array('【标题】', '【动作】'),
            array('第一次使用,请先设置密码!', '设置'),
            $first
        ));
    }
    //第一次设置登录密码
    if ( false === $pwd && !empty($_POST) ) {
        if ( isset($_POST['pwd']) && strlen($_POST['pwd']) ) {
            $pwd = $_SESSION['pwd'] = md5($_POST['pwd'].$ace);
            $code = preg_replace('#\$pwd = false;#', '$pwd = "'.$pwd.'";', $code, 1);
            file_put_contents($curr_file, $code);
        } else {
            reload();
        }
    }
    //用户登录验证
    if ( false !== $pwd && !empty($_POST) ) {
        $tmp = md5($_POST['pwd'].$ace);
        if ( $tmp && $pwd && $tmp === $pwd ) {
            $_SESSION['pwd'] = $pwd;
            reload();
        }
    }
    //处理一下html实体
    $code = htmlspecialchars($code);
    $dir_icon = str_replace(array("\r\n", "\r", "\n"), '',
    'data:image/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAYAAACgu+4kAAAAGXRFWHRTb2Z0d2
    FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQVJREFUeNqkkk1uwjAQhd84bsNP1FUXLCtu0H3XPSoX4Qrd9wR
    sCjQEcIY3DiiJUYiqRhp5Mra/92YSUVVgLSW49B7H+NApRh75XkHfFoCG+02tyflUeQTw2y9UYYP8cCStc9SM
    PeVA/Sy6Dw555q3au1z+EhBYk1cgO7OSNdaFNT0x5sCkYDha0WPiHZgVqPzLO+8seai6E2jed42bCL06tNyEH
    AX9kv3jh3HqH7BctFWLMOmAbcg05mHK5+sQpd1HYijN47zcDUCShGEHtzxtwQS9WTcAQmJROrJDLXQB9s1Tu6
    MtRED4bwsHLnUzxEeKac3+GeP6eo8yevhjC3F1qC4CDAAl3HwuyNAIdwAAAABJRU5ErkJggg==');
    $file_icon = str_replace(array("\r\n", "\r", "\n"), '',
    'data:image/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2
    FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAS1JREFUeNqMU01KxkAMTaez7aYbNwreQdBzeopS6EXEW+jug7Z
    C6X+/iUloSr6xioFHJkPee5mUJgBwT7gjpPB3XAgfiBjs5dOyLF/btl0pkEFngdbzPGNRFK/U+0hwJAAMjmcm
    DsOA4zge6Pseu67DpmlEqK5rLMvyRkDJor6uq2SGktu2FfdpmpANqqoSASYnO/kthABJkoCOxCASkCBkWSYuQ
    qCeNE1fqHz3fMkXzjnJ2sRinL33QBNIzWJ5nh/L8npQohVTJwYTyfFm/d6Oo2HGE8ffwseuZ1PEjhrOutmsRF
    0iC8QmPibEtT4hftrhHI95JqJT/HC2JOt0to+zN6MVsZ/oZKqwmyCTA33DkbN1sws0i+Pega6v0kd42H9JB/8
    LJl5I6PNbgAEAa9MP7QWoNLoAAAAASUVORK5CYII=');
    $loading = str_replace(array("\r\n", "\r", "\n"), '',
    'data:image/gif;base64,R0lGODlhFAAUALMIAPh2AP+TMsZiALlcAKNOAOp4ANVqAP+PFv///wAAAAAAAA
    AAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgAIACwAAAAAFAAUAAAEUxDJSau9iBDMteb
    TMEjehgTBJYqkiaLWOlZvGs8WDO6UIPCHw8TnAwWDEuKPcxQml0Ynj2cwYACAS7VqwWItWyuiUJB4s2AxmWxG
    g9bl6YQtl0cAACH5BAUKAAgALAEAAQASABIAAAROEMkpx6A4W5upENUmEQT2feFIltMJYivbvhnZ3Z1h4FMQI
    Dodz+cL7nDEn5CH8DGZhcLtcMBEoxkqlXKVIgAAibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAA
    ROEMkphaA4W5upMdUmDQP2feFIltMJYivbvhnZ3V1R4BNBIDodz+cL7nDEn5CH8DGZAMAtEMBEoxkqlXKVIg4
    HibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkpjaE4W5tpKdUmCQL2feFIltMJYivbvhnZ
    3R0A4NMwIDodz+cL7nDEn5CH8DGZh8ONQMBEoxkqlXKVIgIBibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAA
    QASABIAAAROEMkpS6E4W5spANUmGQb2feFIltMJYivbvhnZ3d1x4JMgIDodz+cL7nDEn5CH8DGZgcBtMMBEox
    kqlXKVIggEibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkpAaA4W5vpOdUmFQX2feFIltM
    JYivbvhnZ3V0Q4JNhIDodz+cL7nDEn5CH8DGZBMJNIMBEoxkqlXKVIgYDibbK9YLBYvLtHH5K0J0IACH5BAUK
    AAgALAEAAQASABIAAAROEMkpz6E4W5tpCNUmAQD2feFIltMJYivbvhnZ3R1B4FNRIDodz+cL7nDEn5CH8DGZg
    8HNYMBEoxkqlXKVIgQCibbK9YLBYvLtHH5K0J0IACH5BAkKAAgALAEAAQASABIAAAROEMkpQ6A4W5spIdUmHQ
    f2feFIltMJYivbvhnZ3d0w4BMAIDodz+cL7nDEn5CH8DGZAsGtUMBEoxkqlXKVIgwGibbK9YLBYvLtHH5K0J0
    IADs=');
    //编辑器模版
    $html =

    ACE代码编辑器






        保存
        刷新
        重置
        退出

    {$tree}
    {$code}
    Copy after login






    HTMLSTR;
    //判断是否已经登录
    if ( !is_logged() ) {
        die(str_replace(
            array('【标题】', '【动作】'),
            array('请输入您第一次设置的密码!', '登录'),
            $first
        ));
    } else {
        echo $html;
    }

    以上就是本文所述的全部内容了,,希望大家能够喜欢。

    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

    Hot AI Tools

    Undresser.AI Undress

    Undresser.AI Undress

    AI-powered app for creating realistic nude photos

    AI Clothes Remover

    AI Clothes Remover

    Online AI tool for removing clothes from photos.

    Undress AI Tool

    Undress AI Tool

    Undress images for free

    Clothoff.io

    Clothoff.io

    AI clothes remover

    Video Face Swap

    Video Face Swap

    Swap faces in any video effortlessly with our completely free AI face swap tool!

    Hot Article

    Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
    3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
    Nordhold: Fusion System, Explained
    3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
    Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
    3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

    Hot Tools

    Notepad++7.3.1

    Notepad++7.3.1

    Easy-to-use and free code editor

    SublimeText3 Chinese version

    SublimeText3 Chinese version

    Chinese version, very easy to use

    Zend Studio 13.0.1

    Zend Studio 13.0.1

    Powerful PHP integrated development environment

    Dreamweaver CS6

    Dreamweaver CS6

    Visual web development tools

    SublimeText3 Mac version

    SublimeText3 Mac version

    God-level code editing software (SublimeText3)

    Hot Topics

    Java Tutorial
    1664
    14
    PHP Tutorial
    1269
    29
    C# Tutorial
    1249
    24
    PHP and Python: Comparing Two Popular Programming Languages PHP and Python: Comparing Two Popular Programming Languages Apr 14, 2025 am 12:13 AM

    PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

    PHP in Action: Real-World Examples and Applications PHP in Action: Real-World Examples and Applications Apr 14, 2025 am 12:19 AM

    PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

    PHP: A Key Language for Web Development PHP: A Key Language for Web Development Apr 13, 2025 am 12:08 AM

    PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

    The Enduring Relevance of PHP: Is It Still Alive? The Enduring Relevance of PHP: Is It Still Alive? Apr 14, 2025 am 12:12 AM

    PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

    PHP vs. Python: Understanding the Differences PHP vs. Python: Understanding the Differences Apr 11, 2025 am 12:15 AM

    PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

    PHP and Python: Code Examples and Comparison PHP and Python: Code Examples and Comparison Apr 15, 2025 am 12:07 AM

    PHP and Python have their own advantages and disadvantages, and the choice depends on project needs and personal preferences. 1.PHP is suitable for rapid development and maintenance of large-scale web applications. 2. Python dominates the field of data science and machine learning.

    PHP vs. Other Languages: A Comparison PHP vs. Other Languages: A Comparison Apr 13, 2025 am 12:19 AM

    PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

    PHP and Python: Different Paradigms Explained PHP and Python: Different Paradigms Explained Apr 18, 2025 am 12:26 AM

    PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

    See all articles