mirror of
				https://github.com/xiaoqidun/phpcp.git
				synced 2025-11-01 00:49:38 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			219 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			219 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| function ___sortcmp()
 | |
| {
 | |
|     $a = func_get_arg(0);
 | |
|     $b = func_get_arg(1);
 | |
|     return strcasecmp($a, $b);
 | |
| }
 | |
| 
 | |
| function ___codepre()
 | |
| {
 | |
|     $str = func_get_arg(0);
 | |
|     if (func_num_args() > 1) {
 | |
|         $arr1 = array("&", "\"", "'", "<", ">", '"');
 | |
|         $arr2 = array("&", """, "'", "<", ">", "'");
 | |
|     } else {
 | |
|         $arr1 = array("&", "\"", "'", "<", ">", " ", '"');
 | |
|         $arr2 = array("&", """, "'", "<", ">", " ", "'");
 | |
|     }
 | |
|     return str_replace($arr1, $arr2, $str);
 | |
| }
 | |
| 
 | |
| function ___ziplist()
 | |
| {
 | |
|     $zip = trim(func_get_arg(0));
 | |
|     if (!is_readable('pclzip.php') || !___getmime($zip, 'zip')) return false;
 | |
|     require 'pclzip.php';
 | |
|     $pclzip = new pclzip($zip);
 | |
|     if (!($getlist = $pclzip->listContent())) return false;
 | |
|     if (!is_array($getlist) || count($getlist) < 1) return false;
 | |
|     return $getlist;
 | |
| }
 | |
| 
 | |
| function ___convert()
 | |
| {
 | |
|     $str = func_get_arg(0);
 | |
|     if (!function_exists("mb_convert_encoding")) return $str;
 | |
|     $encode = func_num_args() < 2 ? "UTF-8" : func_get_arg(1);
 | |
|     $enlist = func_num_args() > 2 ? func_get_arg(2) : "auto,CP936";
 | |
|     return mb_convert_encoding($str, $encode, $enlist);
 | |
| }
 | |
| 
 | |
| function ___getmime()
 | |
| {
 | |
|     $path = trim(func_get_arg(0));
 | |
|     if (func_num_args() >= 2) {
 | |
|         $type = trim(func_get_arg(1));
 | |
|         $type = explode(':', $type);
 | |
|     }
 | |
|     if (!is_file($path)) return false;
 | |
|     if (!($fp = fopen($path, "rb"))) return false;
 | |
|     $bsupport = array(
 | |
|         array('jpg', 'ffd8ff', 'image/jpeg'),
 | |
|         array('png', '89504e47', 'image/png'),
 | |
|         array('gif', '47494638', 'image/gif'),
 | |
|         array('bmp', '424d', 'image/x-ms-bmp'),
 | |
|         array('zip', '504b0304', 'application/zip'));
 | |
|     $headstr = bin2hex(fread($fp, 4));
 | |
|     fclose($fp);
 | |
|     foreach ($bsupport as $temp) {
 | |
|         if (preg_match("/^$temp[1]/i", $headstr)) {
 | |
|             if (!isset($type)) {
 | |
|                 return $temp[2];
 | |
|             } elseif (in_array($temp[0], $type)) {
 | |
|                 return $temp[2];
 | |
|             }
 | |
|         }
 | |
|     }
 | |
|     return false;
 | |
| }
 | |
| 
 | |
| function ___sendfile()
 | |
| {
 | |
|     $i = 0;
 | |
|     $to = func_get_arg(0);
 | |
|     $fs = func_get_arg(1);
 | |
|     if (!is_file("email.php")) {
 | |
|         return false;
 | |
|     } else {
 | |
|         require "email.php";
 | |
|     }
 | |
|     if ($to == "" || !is_array($fs)) {
 | |
|         return false;
 | |
|     } elseif (count($fs) < 1) {
 | |
|         return false;
 | |
|     }
 | |
|     $systags = uniqid("");
 | |
|     $subject = "your files";
 | |
|     $headers = "Content-Type: multipart/mixed; boundary=\"$systags\"\r\n";
 | |
|     $emailbody = "--$systags\r\n";
 | |
|     $emailbody .= "Content-type: text/plain; charset=utf-8\r\n";
 | |
|     $emailbody .= "Content-transfer-encoding: 8bit\r\n\r\n";
 | |
|     while ($i < count($fs)) {
 | |
|         if (!is_file($fs[$i]) || !is_readable($fs[$i])) continue;
 | |
|         $attachment = chunk_split(base64_encode(file_get_contents($fs[$i])));
 | |
|         $emailbody .= "--$systags\r\n";
 | |
|         $emailbody .= "Content-type: application/octet-stream; name=" . ___basename($fs[$i]) . "\r\n";
 | |
|         $emailbody .= "Content-transfer-encoding: base64\r\n\r\n";
 | |
|         $emailbody .= "$attachment\r\n\r\n";
 | |
|         $i++;
 | |
|     }
 | |
|     $emailbody .= "--$systags--";
 | |
|     return email($to, "from aite.xyz file manager", $emailbody, $headers);
 | |
| }
 | |
| 
 | |
| function ___download()
 | |
| {
 | |
|     $path = trim(func_get_arg(0));
 | |
|     $size = filesize($path);
 | |
|     (isset($_SERVER['HTTP_RANGE']) && !empty($_SERVER['HTTP_RANGE']) && $range = substr($_SERVER['HTTP_RANGE'], 6)) || $range = '0-' . ($size - 1);
 | |
|     if (substr($range, -1) == '-') {
 | |
|         $init = substr($range, 0, -1);
 | |
|         $stop = $size - 1;
 | |
|     } elseif (substr($range, 0, 1) == '-') {
 | |
|         $init = $size - substr($range, 1) - 1;
 | |
|         $stop = $size - 1;
 | |
|     } else {
 | |
|         $init_stop = explode('-', $range);
 | |
|         $init = $init_stop[0];
 | |
|         $stop = $init_stop[1];
 | |
|     }
 | |
|     if (isset($_SERVER['HTTP_RANGE'])) {
 | |
|         header('HTTP/1.1 206 Partial Content');
 | |
|     }
 | |
|     header('Accept-Ranges: bytes');
 | |
|     header('Content-Type: application/force-download');
 | |
|     header('Content-Disposition: attachment; filename=' . ___basename($path));
 | |
|     header("Content-Range: bytes $init-$stop/$size");
 | |
|     header('Content-Length: ' . ($stop - $init + 1));
 | |
|     $fp = fopen($path, "rb");
 | |
|     fseek($fp, $init);
 | |
|     while (!feof($fp)) {
 | |
|         echo fread($fp, 4096);
 | |
|         if (ftell($fp) > $stop) {
 | |
|             break;
 | |
|         }
 | |
|     }
 | |
|     fclose($fp);
 | |
| }
 | |
| 
 | |
| function ___basename()
 | |
| {
 | |
|     $path = trim(func_get_arg(0));
 | |
|     $path = str_replace("\\", "/", $path);
 | |
|     $path = explode("/", $path);
 | |
|     return ___convert($path[count($path) - 1]);
 | |
| }
 | |
| 
 | |
| function ___realpath()
 | |
| {
 | |
|     $path = func_get_arg(0);
 | |
|     $path = str_replace('\\', '/', $path);
 | |
|     if (!is_link($path)) return realpath($path);
 | |
|     return preg_replace('/[^:]?\/{2,}/si', '/', $path);
 | |
| }
 | |
| 
 | |
| function ___filesize()
 | |
| {
 | |
|     $size = trim(func_get_arg(0));
 | |
|     if ($size < 1024) {
 | |
|         return $size . " B";
 | |
|     } elseif ($size < 1024 * 1024) {
 | |
|         return number_format($size / 1024, 3) . " KB";
 | |
|     } elseif ($size < 1024 * 1024 * 1024) {
 | |
|         return number_format($size / 1024 / 1024, 3) . " MB";
 | |
|     } elseif ($size < 1024 * 1024 * 1024 * 1024) {
 | |
|         return number_format($size / 1024 / 1024 / 1024, 3) . " GB";
 | |
|     } else {
 | |
|         return number_format($size / 1024 / 1024 / 1024 / 1024, 3) . " TB";
 | |
|     }
 | |
| }
 | |
| 
 | |
| function ___superexec()
 | |
| {
 | |
|     $cmd = trim(func_get_arg(0));
 | |
|     if (php_uname("s") != "Linux") return false;
 | |
|     if ($cmd == "" || !function_exists("proc_open") || !function_exists("stream_get_contents")) {
 | |
|         return false;
 | |
|     }
 | |
|     if (!is_resource($sh = proc_open("exec sh", array(0 => array("pipe", "r"), 1 => array("pipe", "w")), $pipes))) {
 | |
|         return false;
 | |
|     }
 | |
|     fwrite($pipes[0], "export LANG=\"zh_CN.utf8\"\n");
 | |
|     fwrite($pipes[0], $cmd);
 | |
|     fclose($pipes[0]);
 | |
|     $result = stream_get_contents($pipes[1]);
 | |
|     fclose($pipes[1]);
 | |
|     proc_close($sh);
 | |
|     return trim($result);
 | |
| }
 | |
| 
 | |
| function ___shortpath()
 | |
| {
 | |
|     $path = trim(func_get_arg(0));
 | |
|     $path = ___convert($path, "UTF-8");
 | |
|     if (function_exists('mb_strlen')) {
 | |
|         if (mb_strlen($path, "UTF-8") <= 18) return $path;
 | |
|     } else {
 | |
|         if (strlen($path) <= 18) return $path;
 | |
|     }
 | |
|     $path1 = function_exists('mb_substr') ? mb_substr($path, -9, 9, "UTF-8") : substr($path, -9);
 | |
|     $path2 = function_exists('mb_substr') ? mb_substr($path, 0, 9, "UTF-8") : substr($path, 0, 9);
 | |
|     return $path2 . " .... " . $path1;
 | |
| }
 | |
| 
 | |
| function ___windowsdisk()
 | |
| {
 | |
|     $disks = array();
 | |
|     foreach (range('A', 'Z') as $item) {
 | |
|         $item = sprintf("%s:\\", $item);
 | |
|         if (is_dir($item)) {
 | |
|             $disks[] = $item;
 | |
|         }
 | |
|     }
 | |
|     if (empty($disks)) return false;
 | |
|     return $disks;
 | |
| }
 | |
| 
 | |
| ?>
 |