亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > CMS > PhpCMS > 正文

phpcms 模版源碼分析

2024-09-10 07:14:45
字體:
來源:轉載
供稿:網友
  1. /**  
  2. * 模板調用  
  3. *  
  4. * @param $module  
  5. * @param $template  
  6. * @param $istag  
  7. * @return unknown_type  
  8. */ 
  9. function template($module = 'content'$template = 'index'$style = '') {  
  10.  
  11. if(strpos($module'plugin/')!== false) {  
  12. $plugin = str_replace('plugin/'''$module);  
  13. return p_template($plugin$template,$style);  
  14. }  
  15. $module = str_replace('/', DIRECTORY_SEPARATOR, $module);  
  16. if(!emptyempty($style) && preg_match('/([a-z0-9/-_]+)/is',$style)) {  
  17. elseif (emptyempty($style) && !defined('STYLE')) {  
  18. if(defined('SITEID')) {  
  19. $siteid = SITEID;  
  20. else {  
  21. $siteid = param::get_cookie('siteid');  
  22. }  
  23. if (!$siteid$siteid = 1;  
  24. $sitelist = getcache('sitelist','commons');  
  25. if(!emptyempty($siteid)) {  
  26. $style = $sitelist[$siteid]['default_style'];  
  27. }  
  28. elseif (emptyempty($style) && defined('STYLE')) {  
  29. $style = STYLE;  
  30. else {  
  31. $style = 'default';  
  32. }  
  33. if(!$style$style = 'default';  
  34. $template_cache = pc_base::load_sys_class('template_cache');  
  35. $compiledtplfile = PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_template'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.php';  
  36. if(file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html')) {  
  37. if(!file_exists($compiledtplfile) || (@filemtime(PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html') > @filemtime($compiledtplfile))) {  
  38. $template_cache->template_compile($module$template$style);  
  39. }  
  40. else {  
  41. $compiledtplfile = PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_template'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.php';  
  42. if(!file_exists($compiledtplfile) || (file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html') && filemtime(PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html') > filemtime($compiledtplfile))) {  
  43. $template_cache->template_compile($module$template'default');  
  44. elseif (!file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html')) {  
  45. showmessage('Template does not exist.'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html');  
  46. }  
  47. }  
  48. return $compiledtplfile;  
  49. }  
  50.  
  51.    
  52.  
  53. /**
  54. * 模板解析緩存  
  55. */ 
  56. final class template_cache {  
  57.  
  58. /**
  59. * 編譯模板  
  60. *  
  61. * @param $module    模塊名稱  
  62. * @param $template  模板文件名  
  63. * @param $istag 是否為標簽模板  
  64. * @return unknown  
  65. */ 
  66.  
  67. public function template_compile($module$template$style = 'default') {  
  68. if(strpos($module'/')=== false) {  
  69. $tplfile = $_tpl = PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html';  
  70. elseif (strpos($module'yp/') !== false) {  
  71. $module = str_replace('/', DIRECTORY_SEPARATOR, $module);  
  72. $tplfile = $_tpl = PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html';  
  73. else {  
  74. $plugin = str_replace('plugin/'''$module);  
  75. $module = str_replace('/', DIRECTORY_SEPARATOR, $module);  
  76. $tplfile = $_tpl = PC_PATH.'plugin'.DIRECTORY_SEPARATOR.$plugin.DIRECTORY_SEPARATOR.'templates'.DIRECTORY_SEPARATOR.$template.'.html';  
  77. }  
  78. if ($style != 'default' && !file_exists ( $tplfile )) {  
  79. $style = 'default';  
  80. $tplfile = PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html';  
  81. }  
  82. if (! file_exists ( $tplfile )) {  
  83. showmessage ( "templates".DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.".html is not exists!" );  
  84. }  
  85. $content = @file_get_contents ( $tplfile );  
  86.  
  87. $filepath = CACHE_PATH.'caches_template'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR;  
  88. if(!is_dir($filepath)) {  
  89. mkdir($filepath, 0777, true);  
  90. }  
  91. $compiledtplfile = $filepath.$template.'.php';  
  92. $content = $this->template_parse($content);  
  93. $strlen = file_put_contents ( $compiledtplfile$content );  
  94. chmod ( $compiledtplfile, 0777 );  
  95. return $strlen;  
  96. }  
  97.  
  98. /**
  99. * 更新模板緩存  
  100. *  
  101. * @param $tplfile   模板原文件路徑  
  102. * @param $compiledtplfile   編譯完成后,寫入文件名  
  103. * @return $strlen 長度  
  104. */ 
  105. public function template_refresh($tplfile$compiledtplfile) {  
  106. $str = @file_get_contents ($tplfile);  
  107. $str = $this->template_parse ($str);  
  108. $strlen = file_put_contents ($compiledtplfile$str );  
  109. chmod ($compiledtplfile, 0777);  
  110. return $strlen;  
  111. }  
  112. /**
  113. * 解析模板  
  114. *  
  115. * @param $str   模板內容  
  116. * @return ture  
  117. */ 
  118. public function template_parse($str) {  
  119. $str = preg_replace ( "//{template/s+(.+)/}/""<?php include template(//1); ?>"$str );  
  120. $str = preg_replace ( "//{include/s+(.+)/}/""<?php include //1; ?>"$str );  
  121. $str = preg_replace ( "//{php/s+(.+)/}/""<?php //1?>"$str );  
  122. $str = preg_replace ( "//{if/s+(.+?)/}/""<?php if(//1) { ?>"$str );  
  123. $str = preg_replace ( "//{else/}/""<?php } else { ?>"$str );  
  124. $str = preg_replace ( "//{elseif/s+(.+?)/}/""<?php } elseif (//1) { ?>"$str );  
  125. $str = preg_replace ( "//{//if/}/""<?php } ?>"$str );  
  126. //for 循環  
  127. $str = preg_replace("//{for/s+(.+?)/}/","<?php for(//1) { ?>",$str);  
  128. $str = preg_replace("//{//for/}/","<?php } ?>",$str);  
  129. //++ --  
  130. $str = preg_replace("//{/+/+(.+?)/}/","<?php ++//1; ?>",$str);  
  131. $str = preg_replace("//{/-/-(.+?)/}/","<?php ++//1; ?>",$str);  
  132. $str = preg_replace("//{(.+?)/+/+/}/","<?php //1++; ?>",$str);  
  133. $str = preg_replace("//{(.+?)/-/-/}/","<?php //1--; ?>",$str);  
  134. $str = preg_replace ( "//{loop/s+(/S+)/s+(/S+)/}/""<?php /$n=1;if(is_array(//1)) foreach(//1 AS //2) { ?>"$str );  
  135. $str = preg_replace ( "//{loop/s+(/S+)/s+(/S+)/s+(/S+)/}/""<?php /$n=1; if(is_array(//1)) foreach(//1 AS //2 => //3) { ?>"$str );  
  136. $str = preg_replace ( "//{//loop/}/""<?php /$n++;}unset(/$n); ?>"$str );  
  137. $str = preg_replace ( "//{([a-zA-Z_/x7f-/xff][a-zA-Z0-9_/x7f-/xff:]*/(([^{}]*)/))/}/""<?php echo //1;?>"$str );  
  138. $str = preg_replace ( "//{//$([a-zA-Z_/x7f-/xff][a-zA-Z0-9_/x7f-/xff:]*/(([^{}]*)/))/}/""<?php echo //1;?>"$str );  
  139. $str = preg_replace ( "//{(//$[a-zA-Z_/x7f-/xff][a-zA-Z0-9_/x7f-/xff]*)/}/""<?php echo //1;?>"$str );  
  140. $str = preg_replace("//{(//$[a-zA-Z0-9_/[/]/'/"/$/x7f-/xff]+)/}/es""/$this->addquote('<?php echo //1;?>')",$str);  
  141. $str = preg_replace ( "//{([A-Z_/x7f-/xff][A-Z0-9_/x7f-/xff]*)/}/s""<?php echo //1;?>"$str );  
  142. $str = preg_replace("//{pc:(/w+)/s+([^}]+)/}/ie""self::pc_tag('$1','$2', '$0')"$str);  
  143. $str = preg_replace("//{//pc/}/ie""self::end_pc_tag()"$str);  
  144. $str = "<?php defined('IN_PHPCMS') or exit('No permission resources.'); ?>" . $str;  
  145. return $str;  
  146. }  
  147.  
  148. /**
  149. * 轉義 // 為 /  
  150. *  
  151. * @param $var   轉義的字符  
  152. * @return 轉義后的字符  
  153. */ 
  154. public function addquote($var) {  
  155. return str_replace ( "///"""/"", preg_replace ( "//[([a-zA-Z0-9_/-/./x7f-/xff]+)/]/s""['//1']"$var ) );  
  156. }  
  157.  
  158. /**
  159. * 解析PC標簽  
  160. * @param string $op 操作方式  
  161. * @param string $data 參數  
  162. * @param string $html 匹配到的所有的HTML代碼  
  163. */ 
  164. public static function pc_tag($op$data$html) {  
  165. preg_match_all("/([a-z]+)/=[/"]?([^/"]+)[/"]?/i"stripslashes($data), $matches, PREG_SET_ORDER);  
  166. $arr = array('action','num','cache','page''pagesize''urlrule''return''start');  
  167. $tools = array('json''xml''block''get');  
  168. $datas = array();  
  169. $tag_id = md5(stripslashes($html));  
  170. //可視化條件  
  171. $str_datas = 'op='.$op.'&tag_md5='.$tag_id;  
  172. foreach ($matches as $v) {  
  173. $str_datas .= $str_datas ? "&$v[1]=".($op == 'block' && strpos($v[2], '$') === 0 ? $v[2] : urlencode($v[2])) : "$v[1]=".(strpos($v[2], '$') === 0 ? $v[2] : urlencode($v[2]));  
  174. if(in_array($v[1], $arr)) {  
  175. $$v[1] = $v[2];  
  176. continue;  
  177. }  
  178. $datas[$v[1]] = $v[2];  
  179. }  
  180. $str = '';  
  181. $num = isset($num) && intval($num) ? intval($num) : 20;  
  182. $cache = isset($cache) && intval($cache) ? intval($cache) : 0;  
  183. $return = isset($return) && trim($return) ? trim($return) : 'data';  
  184. if (!isset($urlrule)) $urlrule = '';  
  185. if (!emptyempty($cache) && !isset($page)) {  
  186. $str .= '$tag_cache_name = md5(implode(/'&/','.self::arr_to_html($datas).')./''.$tag_id.'/');if(!$'.$return.' = tpl_cache($tag_cache_name,'.$cache.')){';  
  187. }  
  188. if (in_array($op,$tools)) {  
  189. switch ($op) {  
  190. case 'json':  
  191. if (isset($datas['url']) && !emptyempty($datas['url'])) {  
  192. $str .= '$json = @file_get_contents(/''.$datas['url'].'/');';  
  193. $str .= '$'.$return.' = json_decode($json, true);';  
  194. }  
  195. break;  
  196.  
  197. case 'xml':  
  198. $str .= '$xml = pc_base::load_sys_class(/'xml/');';  
  199. $str .= '$xml_data = @file_get_contents(/''.$datas['url'].'/');';  
  200. $str .= '$'.$return.' = $xml->xml_unserialize($xml_data);';  
  201. break;  
  202.  
  203. case 'get':  
  204. $str .= 'pc_base::load_sys_class("get_model", "model", 0);';  
  205. if ($datas['dbsource']) {  
  206. $dbsource = getcache('dbsource''commons');  
  207. if (isset($dbsource[$datas['dbsource']])) {  
  208. $str .= '$get_db = new get_model('.var_export($dbsource,true).', /''.$datas['dbsource'].'/');';  
  209. else {  
  210. return false;  
  211. }  
  212. else {  
  213. $str .= '$get_db = new get_model();';  
  214. }  
  215. $num = isset($num) && intval($num) > 0 ? intval($num) : 20;  
  216. if (isset($start) && intval($start)) {  
  217. $limit = intval($start).','.$num;  
  218. else {  
  219. $limit = $num;  
  220. }  
  221. if (isset($page)) {  
  222. $str .= '$pagesize = '.$num.';';  
  223. $str .= '$page = intval('.$page.') ? intval('.$page.') : 1;if($page<=0){$page=1;}';  
  224. $str .= '$offset = ($page - 1) * $pagesize;';  
  225. $limit = '$offset,$pagesize';  
  226. if ($sql = preg_replace('/select([^from].*)from/i'"SELECT COUNT(*) as count FROM "$datas['sql'])) {  
  227. $str .= '$r = $get_db->sql_query("'.$sql.'");$s = $get_db->fetch_next();$pages=pages($s[/'count/'], $page, $pagesize, $urlrule);';  
  228. }  
  229. }  
  230.  
  231.  
  232. $str .= '$r = $get_db->sql_query("'.$datas['sql'].' LIMIT '.$limit.'");while(($s = $get_db->fetch_next()) != false) {$a[] = $s;}$'.$return.' = $a;unset($a);';  
  233. break;  
  234.  
  235. case 'block':  
  236. $str .= '$block_tag = pc_base::load_app_class(/'block_tag/', /'block/');';  
  237. $str .= 'echo $block_tag->pc_tag('.self::arr_to_html($datas).');';  
  238. break;  
  239. }  
  240. else {  
  241. if (!isset($action) || emptyempty($action)) return false;  
  242. if (module_exists($op) && file_exists(PC_PATH.DIRECTORY_SEPARATOR.'modules'.DIRECTORY_SEPARATOR.$op.DIRECTORY_SEPARATOR.'classes'.DIRECTORY_SEPARATOR.$op.'_tag.class.php')) {  
  243. $str .= '$'.$op.'_tag = pc_base::load_app_class("'.$op.'_tag", "'.$op.'");if (method_exists($'.$op.'_tag, /''.$action.'/')) {';   
  244. if (isset($start) && intval($start)) {  
  245. $datas['limit'] = intval($start).','.$num;  
  246. else {  
  247. $datas['limit'] = $num;  
  248. }  
  249. if (isset($page)) {  
  250. $str .= '$pagesize = '.$num.';';  
  251. $str .= '$page = intval('.$page.') ? intval('.$page.') : 1;if($page<=0){$page=1;}';  
  252. $str .= '$offset = ($page - 1) * $pagesize;';  
  253. $datas['limit'] = '$offset.",".$pagesize';  
  254. $datas['action'] = $action;  
  255. $str .= '$'.$op.'_total = $'.$op.'_tag->count('.self::arr_to_html($datas).');';  
  256. $str .= '$pages = pages($'.$op.'_total, $page, $pagesize, $urlrule);';  
  257. }  
  258. $str .= '$'.$return.' = $'.$op.'_tag->'.$action.'('.self::arr_to_html($datas).');';  
  259. $str .= '}';  
  260. }   
  261. }  
  262. if (!emptyempty($cache) && !isset($page)) {  
  263. $str .= 'if(!empty($'.$return.')){setcache($tag_cache_name, $'.$return.', /'tpl_data/');}';  
  264. $str .= '}';  
  265. }  
  266. return "<"."?php if(defined('IN_ADMIN') && !defined('HTML')) {echo /"<div class=///"admin_piao///" pc_action=///"".$op."///" data=///"".$str_datas."///"><a href=///"javascript:void(0)///" class=///"admin_piao_edit///">".($op=='block' ? L('block_add') : L('edit'))."</a>/";}".$str."?".">";  
  267. }  
  268.  
  269. /**
  270. * PC標簽結束  
  271. */ 
  272. static private function end_pc_tag() {  
  273. return '<?php if(defined(/'IN_ADMIN/') && !defined(/'HTML/')) {echo /'</div>/';}?>';  
  274. }  
  275.  
  276. /**
  277. * 轉換數據為HTML代碼  
  278. * @param array $data 數組  
  279. */ 
  280. private static function arr_to_html($data) {  
  281. if (is_array($data)) {  
  282. $str = 'array(';  
  283. foreach ($data as $key=>$val) {  
  284. if (is_array($val)) {  
  285. $str .= "'$key'=>".self::arr_to_html($val).",";  
  286. else {  
  287. if (strpos($val'$')===0) {  
  288. $str .= "'$key'=>$val,";  
  289. else {  
  290. $str .= "'$key'=>'".new_addslashes($val)."',";  
  291. }  
  292. }  
  293. }  
  294. return $str.')';  
  295. }  
  296. return false;  
  297. }  
  298. }  
  299. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
啪一啪鲁一鲁2019在线视频| 精品国产依人香蕉在线精品| 成人精品一区二区三区电影黑人| 久久久国产视频| 色综合天天综合网国产成人网| 亚洲成年人在线播放| 久久91亚洲精品中文字幕奶水| 国产精品草莓在线免费观看| 成人激情电影一区二区| 在线午夜精品自拍| 久久久99免费视频| 在线激情影院一区| 伊人伊人伊人久久| 欧美极品少妇xxxxⅹ裸体艺术| 久久九九有精品国产23| 国产亚洲激情在线| 精品精品国产国产自在线| 91久久久久久久久| 中文字幕国内精品| 精品久久久久久亚洲国产300| 高清在线视频日韩欧美| 欧美性猛xxx| 亚洲女人初尝黑人巨大| 91高清视频免费观看| 成人在线免费观看视视频| 久久久精品欧美| 色偷偷av一区二区三区| 欧美俄罗斯性视频| 精品久久久久久中文字幕大豆网| 欧美日韩视频在线| 亚洲欧美成人一区二区在线电影| 日本最新高清不卡中文字幕| 在线a欧美视频| 国产午夜精品久久久| 亚洲护士老师的毛茸茸最新章节| 色婷婷av一区二区三区久久| 日韩欧美在线字幕| 欧美国产高跟鞋裸体秀xxxhd| 欧美另类老女人| 亚洲人成网站在线播| 国产精品久久二区| 国产亚洲在线播放| 国产成人涩涩涩视频在线观看| 成人精品一区二区三区电影免费| 美日韩丰满少妇在线观看| 国产精品高清在线| 欧美激情a∨在线视频播放| 亚洲成年人在线播放| 日韩av有码在线| 亚洲欧美日韩中文视频| 国产精品稀缺呦系列在线| 国产欧美日韩视频| 欧美亚洲第一区| 国产九九精品视频| 国产成人精品免高潮在线观看| 色婷婷综合久久久久中文字幕1| 久久国产精品久久久久久| 亚洲激情中文字幕| 日日狠狠久久偷偷四色综合免费| 中文字幕欧美视频在线| 亚洲精品黄网在线观看| 国产日韩欧美电影在线观看| 欧美性猛xxx| 色偷偷av一区二区三区乱| 国产专区精品视频| 韩国美女主播一区| 亚洲欧美国产一区二区三区| 国产精品男人的天堂| 亚洲性线免费观看视频成熟| 欧美理论电影在线观看| 亚洲欧洲免费视频| 日韩麻豆第一页| 欧美精品videossex性护士| 免费成人高清视频| 欧美极品xxxx| 久久久久久国产精品三级玉女聊斋| 久久精品国产v日韩v亚洲| 中文字幕久热精品视频在线| 欧美成人免费小视频| zzijzzij亚洲日本成熟少妇| 亚洲999一在线观看www| 97久久精品视频| 国产亚洲激情在线| 欧美日韩综合视频网址| 久久久久久久久久久免费精品| 中文一区二区视频| 欧美激情中文字幕乱码免费| 国产精品v片在线观看不卡| 国产成人精品亚洲精品| 欧美乱人伦中文字幕在线| 国产精品成人aaaaa网站| 国产91网红主播在线观看| 国产欧美一区二区| 在线播放亚洲激情| 亚洲男人第一av网站| 久久99国产精品自在自在app| 91免费精品视频| 亚洲精品久久久久| 亚洲综合日韩在线| 中文字幕av一区二区三区谷原希美| 国产成人免费91av在线| 色狠狠av一区二区三区香蕉蜜桃| 欧美最顶级的aⅴ艳星| 91精品视频在线免费观看| 欧美性少妇18aaaa视频| 欧美日韩国产中字| 午夜精品免费视频| 77777少妇光屁股久久一区| 日韩在线视频中文字幕| 亚洲美女免费精品视频在线观看| 国产精品99久久久久久久久| 日韩在线高清视频| 国产+人+亚洲| 久久精品国产2020观看福利| 亚洲自拍偷拍区| 精品久久久久久久久久久久久久| 欧美一区第一页| 亚洲成年网站在线观看| 成人欧美一区二区三区黑人| 成人乱人伦精品视频在线观看| 欧美最顶级的aⅴ艳星| 欧美精品在线视频观看| 中文字幕九色91在线| 久久精品国产96久久久香蕉| 日韩精品中文字幕在线播放| 日韩av在线影院| 国产精品7m视频| 国产91精品青草社区| 国产欧美韩国高清| 中文字幕一区电影| 一本一本久久a久久精品牛牛影视| 欧美一级电影在线| 精品久久久久久中文字幕一区奶水| 亚洲午夜激情免费视频| 午夜精品在线观看| 日韩精品免费看| 国产成人精品久久久| www.亚洲男人天堂| 欧美激情啊啊啊| 日韩欧美精品免费在线| 欧美精品一二区| 揄拍成人国产精品视频| 精品中文视频在线| 久久精品国产欧美激情| 国产亚洲精品美女久久久| 国产精品视频自拍| 日韩精品免费在线播放| 国产美女搞久久| 久久久999精品免费| 国产精品丝袜久久久久久高清| 亚洲第一在线视频| 亚洲а∨天堂久久精品9966| 日韩大片免费观看视频播放| 欧美成人黑人xx视频免费观看| 免费97视频在线精品国自产拍| 国产深夜精品福利| 一区二区三区日韩在线| 国产精品成人观看视频国产奇米| 亚洲成人网在线| 亚洲第一黄色网| 91av在线免费观看视频| 91中文字幕在线观看| 亚洲xxxx3d| 日韩欧美一区二区在线|