* Single-file version of the online Code Editor editor.php version: v1.21 * Very easy to edit any text file on your website online, it is very useful for maintaining website and writing code online. * Password encryption Method: * MD5 (password + $ace)//$ace for CDN Mirror Address * * How to use: * 1. Confirm that the $PWD variable value is false, upload this file to PHP space and access * 2. First access prompt set password, set password and remember * 3. After logging in with the password for the first time, this PHP file is edited by default, * 4. This file is the editor core file, please do not modify it arbitrarily * 5. Save the edited file by using Ctrl + S key combination, waiting for the result to be executed * 6. Be sure to wait for the save success message to return after the Save action is executed * 7. The reset operation modifies the file name of the program to prevent others guessing the path * 8. Refresh function is only to refresh the program files, cannot refresh other * * It is recommended to use this editor in Chrome browser
See the project in detail Http://git.oschina.net/ymk18/aceditor
- /**
- * Single-file version of the online Code Editor editor.php version: v1.21
- *
- * Password encryption Method:
- * MD5 (password + $ace)//$ace for CDN Mirror Address
- *
- * How to use:
- * 1. Confirm that the $PWD variable value is false, upload this file to PHP space and access
- * 2. First access prompt set password, set password and remember
- * 3. After logging in with the password for the first time, this PHP file is edited by default,
- * 4. This file is the editor core file, please do not modify it arbitrarily
- * 5. Save the edited file by using Ctrl + S key combination, waiting for the result to be executed
- * 6. Be sure to wait for the save success message to return after the Save action is executed
- * 7. The reset operation modifies the file name of the program to prevent others guessing the path
- * 8. Refresh function is only to refresh the program files, cannot refresh other
- *
- * It is recommended to use this editor in Chrome browser
- */
- Session_Start ();
- $curr _file = __file__; Edit the current file by default
- $curr _file_path = Str_replace (dirname (__file__), ", __file__);
- $pwd = false; Password initialization default value is False
- $ace = ' http://cdn.staticfile.org/ace/1.1.3/ace.js '; Editor Core JS
- $tip [' core '] = ' http://cdn.staticfile.org/alertify.js/0.3.11/alertify.core.min.css ';
- $tip [' css '] = ' http://cdn.staticfile.org/alertify.js/0.3.11/alertify.default.min.css ';
- $tip [' js '] = ' http://cdn.staticfile.org/alertify.js/0.3.11/alertify.min.js ';
- $jquery = ' http://cdn.staticfile.org/jquery/2.1.1-rc2/jquery.min.js ';
- if (false!== $pwd) {
- Define (' Default_pwd ', $pwd);
- }
- Syntax parser for file suffix names
- $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 ',
- );
- Determine if the user is logged on
- function is_logged () {
- $flag = false;
- if (Isset ($_session[' pwd ") && defined (' Default_pwd ')) {
- if ($_session[' pwd '] = = = Default_pwd) {
- $flag = true;
- }
- }
- return $flag;
- }
- Reload to this page
- function Reload () {
- $file = PathInfo (__file__, pathinfo_basename);
- Die (The header ("Location: {$file}"));
- }
- Determine if the request is an AJAX request
- function Is_ajax () {
- $flag = false;
- if (Isset ($_server[' Http_x_requested_with ')) {
- $flag = Strtolower ($_server[' http_x_requested_with ') = = = = ' XMLHttpRequest ';
- }
- return $flag;
- }
- Destroying session and Cookies
- function exterminate () {
- $_session = Array ();
- foreach ($_cookie as $key) {
- Setcookie ($key, NULL);
- }
- Session_destroy ();
- $_cookie = Array ();
- return true;
- }
- Get a list of files under a directory
- 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) {
- Filter out the parent directory, the level directory and the program's own file name
- if (!in_array ($v, Array ('. ', '. '))) {
- $file = $full _path = RTrim ($base, '/'). Directory_separator. $v;
- if ($full _path = = __file__) {
- Continue Mask itself file does not appear in list
- }
- $file = Str_replace (dirname (__file__), ", $file);
- $file = str_replace ("\ \", '/', $file); Filter the path under Win
- $file = Str_replace ('//', '/', $file); Filter Double Slash
- 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 = '
';
- }
- return $flag;
- }
- Recursively delete a non-empty directory
- function Deldir ($dir) {
- $DH = Opendir ($dir);
- while ($file = Readdir ($DH)) {
- if ($file! = '. ' && $file! = ' ... ') {
- $fullpath = $dir. '/'. $file;
- if (!is_dir ($fullpath)) {
- Unlink ($fullpath);
- } else {
- Deldir ($fullpath);
- }
- }
- }
- return rmdir ($dir);
- }
- Sign Out
- if (Isset ($_get[' logout ')) {
- if (exterminate ()) {
- Reload ();
- }
- }
- Ajax Output File contents
- 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 Output Directory List
- 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 Save File
- if (is_logged () && is_ajax () && isset ($_post[' action ')) {
- $arr = Array (' Result ' = ' error ', ' msg ' = ' = ' File save failed! ');
- $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 '] = ' saved successfully! ';
- }
- Die (Json_encode ($arr));
- }
- Ajax delete a file or folder
- if (is_logged () && is_ajax () && isset ($_post[' del ')) {
- $path = DirName (__file__). $_post[' del ';
- $arr = Array (' Result ' = ' error ', ' msg ' = ' = ' delete operation failed! ');
- if ($_post[' del '] && $path) {
- $flag = Is_dir ($path)? Deldir ($path): unlink ($path);
- if ($flag) {
- $arr [' msg '] = ' delete operation succeeded! ';
- $arr [' result '] = ' success ';
- }
- }
- Die (Json_encode ($arr));
- }
- Ajax new file or folder
- if (is_logged () && is_ajax () && isset ($_post[' create ')) {
- $flag = false;
- $arr = Array (' Result ' = ' error ', ' msg ' = ' = ' operation failed!) ');
- 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. ' /'. $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 '] = ' new file succeeded! ';
- $arr [' type '] = ' file ';
- } else {
- mkdir ($full _path, 0777, true);
- $arr [' result '] = ' success ';
- $arr [' msg '] = ' new directory successful! ';
- $arr [' type '] = ' dir ';
- }
- if ($base _name && $new _path) {
- $arr [' new_name '] = $base _name;
- $arr [' new_path '] = $new _path;
- }
- }
- Die (Json_encode ($arr));
- }
- Ajax renaming a file or folder
- if (is_logged () && is_ajax () && isset ($_post[' rename ')) {
- $arr = Array (' Result ' = ' error ', ' msg ' = ' = ' rename operation failed! ');
- 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). ' /'. $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 '] = ' rename operation succeeded! ';
- $arr [' result '] = ' success ';
- }
- if ($target = = __file__) {
- $arr [' redirect '] = $new _path;
- }
- Die (Json_encode ($arr));
- }
- Get the contents of a code file
- $code = file_get_contents ($curr _file);
- $tree = '
- ROOT '. List_dir ($curr _file, ' html '). '
';
- Login and Set Password common template
- $first = <<<>
-
- Title
-
-
-
- HTMLSTR;
- Determine if you are logged in for the first time
- if (false = = = $pwd && empty ($_post)) {
- Die (Str_replace (
- Array (' title ' ', ' ' action '),
- Array (' First use, please set the password first! ', ' Set '),
- $first
- ));
- }
- Set the login password for the first time
- 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 ();
- }
- }
- User Login Verification
- if (false!== $pwd &&!empty ($_post)) {
- $TMP = MD5 ($_post[' pwd '). $ace);
- if ($tmp && $pwd && $tmp = = = $pwd) {
- $_session[' pwd '] = $pwd;
- Reload ();
- }
- }
- Working with HTML entities
- $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= ');
- Editor templates
- $html = <<<>
-
- Ace Code Editor
-
-
-
- Save
- Refresh
- Reset
- Exit
- {$tree}
{$code}
- HTMLSTR;
- Determine if you are logged in
- if (!is_logged ()) {
- Die (Str_replace (
- Array (' title ' ', ' ' action '),
- Array (' Please enter the password you set for the first time! ', ' login '),
- $first
- ));
- } else {
- Echo $html;
- }
Copy Code |