mirror of https://github.com/helloxz/onenav.git
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							205 lines
						
					
					
						
							5.4 KiB
						
					
					
				
			
		
		
	
	
							205 lines
						
					
					
						
							5.4 KiB
						
					
					
				| <?php | |
| //获取访客IP | |
| function getIP() {  | |
|     if (getenv('HTTP_CLIENT_IP')) {  | |
|     $ip = getenv('HTTP_CLIENT_IP');  | |
|   }  | |
|   elseif (getenv('HTTP_X_FORWARDED_FOR')) {  | |
|       $ip = getenv('HTTP_X_FORWARDED_FOR');  | |
|   }  | |
|       elseif (getenv('HTTP_X_FORWARDED')) {  | |
|       $ip = getenv('HTTP_X_FORWARDED');  | |
|   }  | |
|     elseif (getenv('HTTP_FORWARDED_FOR')) {  | |
|     $ip = getenv('HTTP_FORWARDED_FOR');  | |
|   }  | |
|     elseif (getenv('HTTP_FORWARDED')) {  | |
|     $ip = getenv('HTTP_FORWARDED');  | |
|   }  | |
|   else {  | |
|       $ip = $_SERVER['REMOTE_ADDR'];  | |
|   }  | |
|       return $ip;  | |
|   } | |
| 
 | |
| 
 | |
| function is_login(){ | |
|     $key = md5(USER.PASSWORD.'onenav'.$_SERVER['HTTP_USER_AGENT']); | |
|     //获取session | |
|     $session = $_COOKIE['key']; | |
|     //如果已经成功登录 | |
|     if($session === $key) { | |
|         return true; | |
|     } | |
|     else{ | |
|         return false; | |
|     } | |
| } | |
| 
 | |
| //后续全局函数全部以g_命名开头 | |
| function g_extend_js() { | |
|     //载入js扩展 | |
|     if( file_exists('data/extend.js') ) { | |
|         echo '<script src = "data/extend.js"></script>'; | |
|     } | |
|     else{ | |
|         echo ''; | |
|     } | |
| } | |
| 
 | |
| //curl get请求 | |
| function curl_get($url,$timeout = 10) { | |
|     $curl = curl_init($url); | |
| 	#设置useragent | |
|     curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36"); | |
|     curl_setopt($curl, CURLOPT_FAILONERROR, true); | |
|     curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); | |
|     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); | |
|     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); | |
|     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); | |
|     #设置超时时间,最小为1s(可选) | |
|     curl_setopt($curl , CURLOPT_TIMEOUT, $timeout); | |
| 
 | |
|     $html = curl_exec($curl); | |
|     curl_close($curl); | |
|     return $html; | |
| } | |
| 
 | |
| //获取版本号,新写的 | |
| function new_get_version(){ | |
|     if( file_exists('version.txt') ) { | |
|         $version = @file_get_contents('version.txt'); | |
|         $version = explode("-",$version)[0]; | |
|         $version = str_replace("v","",$version); | |
|         return $version; | |
|     } | |
|     else{ | |
|         $version = 'null'; | |
|         return $version; | |
|     } | |
| } | |
| 
 | |
| //随机数生成 | |
| function GetRandStr($len)  | |
| {  | |
|     $chars = array(  | |
|         "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",   | |
|         "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",   | |
|         "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",   | |
|         "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",   | |
|         "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",   | |
|         "3", "4", "5", "6", "7", "8", "9"  | |
|     );  | |
|     $charsLen = count($chars) - 1;  | |
|     shuffle($chars);    | |
|     $output = "";  | |
|     for ($i=0; $i<$len; $i++)  | |
|     {  | |
|         $output .= $chars[mt_rand(0, $charsLen)];  | |
|     }   | |
|     return $output;   | |
| } | |
| 
 | |
| //跳转到手机版页面 | |
| function jump_mobile() { | |
|     $ua = $_SERVER['HTTP_USER_AGENT']; | |
| 
 | |
|     if( stristr($ua,'iphone') || stristr($ua,'android') ) { | |
|         header("Location: /index.php?c=mobile#/"); | |
|         exit; | |
|     } | |
| } | |
| 
 | |
| //获取所有主题 | |
| function get_all_themes() { | |
|     //主题目录 | |
|     $tpl_dir1 = dirname(__DIR__).'/templates/'; | |
|     //备用主题目录 | |
|     $tpl_dir2 = dirname(__DIR__).'/data/templates/'; | |
|      | |
|     //声明两个空数组用来存放模板目录列表 | |
|     $tpl_one = []; | |
|     $tpl_two = []; | |
|     //遍历第一个目录 | |
|     foreach ( scandir($tpl_dir1) as $value) { | |
|         //完整的路径 | |
|         $path = $tpl_dir1.$value; | |
|         //如果是目录,则push到目录列表1 | |
|         if( is_dir($path) ) { | |
|             switch ($value) { | |
|                 case '.': | |
|                 case '..': | |
|                 case 'admin': | |
|                 case 'mobile': | |
|                 case 'universal': | |
|                     continue; | |
|                     break; | |
|                 default: | |
|                     array_push($tpl_one,$value); | |
|                     break; | |
|             } | |
|              | |
|         } | |
|         else{ | |
|             continue; | |
|         } | |
|     } | |
|     //如果第二个目录存在,则遍历 | |
|     if( is_dir($tpl_dir2) ) { | |
|         foreach ( scandir($tpl_dir2) as $value) { | |
|             //完整的路径 | |
|             $path = $tpl_dir2.$value; | |
|             //如果是目录,则push到目录列表1 | |
|             if( is_dir($path) ) { | |
|                 switch ($value) { | |
|                     case '.': | |
|                     case '..': | |
|                     case 'admin': | |
|                         continue; | |
|                         break; | |
|                     default: | |
|                         array_push($tpl_two,$value); | |
|                         break; | |
|                 } | |
|             } | |
|             else{ | |
|                 continue; | |
|             } | |
|         } | |
|     } | |
|      | |
|     //合并目录 | |
|     //现在$tpl_one是合并后的完整主题列表 | |
|     $tpls = array_merge($tpl_one,$tpl_two); | |
|      | |
|     $tpls = array_unique($tpls); | |
|     return $tpls; | |
| } | |
| 
 | |
| // 获取HOST,需要去除端口号 | |
| function get_host(){ | |
|     $host = $_SERVER['HTTP_HOST']; | |
|     $parsed_host = parse_url($host); | |
|     //var_dump($parsed_host); | |
|     if (isset($parsed_host['port']) && $parsed_host['port'] != 80 && $parsed_host['port'] != 443) { | |
|         $host = $parsed_host['host']; | |
|     } | |
|     return $host; | |
| } | |
| 
 | |
| // 获取当前域名,比如https://nav.rss.ink | |
| function getCurrentUrlDomain() { | |
| 
 | |
|     $url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; | |
|      | |
|     $url_parts = parse_url($url); | |
|      | |
|     $domain = $url_parts['scheme'] . '://' . $url_parts['host']; | |
|    | |
|     if(!empty($url_parts['port'])) { | |
|       $domain .= ':' . $url_parts['port'];  | |
|     } | |
|    | |
|     return $domain; | |
|    | |
| } |