PageRenderTime 57ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 1ms

/src/testSource/phpcms/content/application/helpers/toolkit_helper.php

https://gitlab.com/loda.sun.suryani/qijiatuku
PHP | 1136 lines | 948 code | 49 blank | 139 comment | 204 complexity | f137d8caf2979d35ad059bba5de222ee MD5 | raw file
  1. <?php
  2. if (! function_exists ( 'echo_nl' )) {
  3. function echo_nl() {
  4. echo "\n";
  5. }
  6. }
  7. if (! function_exists ( 'get_ip' )) {
  8. function get_ip() {
  9. return ip2long ( $_SERVER ["REMOTE_ADDR"] );
  10. }
  11. }
  12. if (! function_exists ( 'read_ip' )) {
  13. function read_ip($ip) {
  14. return long2ip ( $ip );
  15. }
  16. }
  17. function get_ip_char() {
  18. return $_SERVER ["REMOTE_ADDR"];
  19. }
  20. //循环目录下的所有文件
  21. function del_fileunder_dir($dirName) {
  22. if ($handle = opendir ( "$dirName" )) {
  23. while ( false !== ($item = readdir ( $handle )) ) {
  24. if ($item != "." && $item != "..") {
  25. if (is_dir ( "$dirName/$item" )) {
  26. del_fileunder_dir ( "$dirName/$item" );
  27. } else {
  28. unlink ( "$dirName/$item" );
  29. //echo "成功删除文件: $dirName/$item<br />\n";
  30. }
  31. }
  32. }
  33. closedir ( $handle );
  34. rmdir ( $dirName );
  35. }
  36. }
  37. //删除多级目录及其文件
  38. if (! array_key_exists ( 'deldir', $GLOBALS )) {
  39. function deldir($dir, $type = true) {
  40. $n = 0;
  41. if (is_dir ( $dir )) {
  42. if ($dh = opendir ( $dir )) {
  43. while ( ($file = readdir ( $dh )) !== false ) {
  44. //.svn 忽略 svn 版本控制信息
  45. if ($file == '.' or $file == '..' or $file == '.svn') {
  46. continue;
  47. }
  48. if (is_file ( $dir . $file )) {
  49. unlink ( $dir . $file );
  50. $n ++;
  51. }
  52. if (is_dir ( $dir . $file )) {
  53. deldir ( $dir . $file . '/' );
  54. if ($type) {
  55. $n ++;
  56. rmdir ( $dir . $file . '/' );
  57. }
  58. }
  59. }
  60. }
  61. closedir ( $dh );
  62. }
  63. return $n;
  64. }
  65. }
  66. /*
  67. * 权限接口使用
  68. */
  69. if (! array_key_exists ( 'validation_check', $GLOBALS )) {
  70. function validation_check($uid, $func) {
  71. if (! $uid) {
  72. echo "无权限:登录超时/$uid/";
  73. exit ();
  74. }
  75. $ci = & get_instance ();
  76. $ci->load->library ( 'CommonCache', '', 'cache' );
  77. $cache_time = 60;
  78. $Cache_get = $ci->cache->get ( "perm_" . $uid . "_" . $func );
  79. if ($Cache_get) {
  80. return $Cache_get;
  81. }
  82. $ci->load->database ();
  83. $permission = $ci->db->get_record_by_field ( "cms_permission", "permission_key", $func );
  84. if (! $permission) {
  85. $ci->db->insert ( "cms_permission", array ('permission_key' => $func, 'permission_name' => $func ) );
  86. $permission_id = $ci->db->insert_id ();
  87. return false;
  88. } else {
  89. $permission_id = $permission ['permission_id'];
  90. }
  91. //强行禁止此权限,[阻断]优先于[分配]
  92. $uk = ($uid . "-" . $permission_id);
  93. $forbidden_row = $ci->db->get_record_by_field ( "cms_permission_forbidden", "forbidden_uk", $uk );
  94. if ($forbidden_row) {
  95. return 0;
  96. }
  97. if (12793625 == $uid) {
  98. return 1;
  99. }
  100. $log = $ci->db->get_record_by_sql (
  101. "SELECT count(auto_id) as t FROM cms_permission_log WHERE permission_id='$permission_id' AND user_id='$uid'" );
  102. if ($log ['t'] == 0) {
  103. $insert_array = array (
  104. 'user_id' => $uid,
  105. 'permission_id' => $permission_id,
  106. 'permission_name' => $func,
  107. 'last_time' => time () );
  108. $ci->db->insert ( "cms_permission_log", $insert_array );
  109. }
  110. //判断用户直接绑定权限可有权限
  111. $u_to_p = $ci->db->get_record_by_sql (
  112. "SELECT count(auto_id) as t FROM cms_user_to_permission WHERE permission_id='$permission_id' AND user_id='$uid'" );
  113. //my_debug($u_to_p);
  114. if ($u_to_p ['t']) {
  115. $flag = 1;
  116. $ci->cache->set ( "perm_" . $uid . "_" . $func, $flag, 0, $cache_time );
  117. return $flag;
  118. }
  119. //查找角色表
  120. $role = $ci->db->get_rows_by_sql ( "SELECT * FROM cms_role" );
  121. if (count ( $role )) {
  122. foreach ( $role as $v ) {
  123. $role_id = $v ['role_id'];
  124. //根据角色id和权限ID确定角色ID
  125. $r_to_p = $ci->db->get_record_by_sql (
  126. "SELECT role_id FROM cms_role_to_permission WHERE role_id='$role_id' AND permission_id='$permission_id' limit 1" );
  127. if ($r_to_p ['role_id']) {
  128. //根据角色ID和用户ID确立是否绑定次用户上面
  129. $u_to_r = $ci->db->get_record_by_sql (
  130. "SELECT count(auto_id) as Tcount FROM cms_user_to_role WHERE role_id='$role_id' AND user_id='$uid'" );
  131. if ($u_to_r ['Tcount']) {
  132. $flag = 1;
  133. $ci->cache->set ( "perm_" . $uid . "_" . $func, $flag, 0, $cache_time );
  134. return $flag;
  135. }
  136. }
  137. }
  138. }
  139. } //func
  140. }
  141. /**
  142. * http_build_query
  143. * @param array/object $queryData 查询数据
  144. * @param string $numericPrefix 数字索引时附加的Key前缀
  145. * @param string $argSeparator 参数分隔符(默认为&)
  146. * @param string $keyPrefix Key前缀(供内部递归时用)
  147. * @return string echo url_glue($arr, 'prefix[', '&');页面已经做分页获取通过
  148. */
  149. if (! function_exists ( 'url_glue' )) {
  150. function url_glue($queryData, $numericPrefix = '', $argSeparator = '&', $keyPrefix = '') {
  151. $arr = array ();
  152. foreach ( $queryData as $key => $val ) {
  153. if ($val === NULL) {
  154. continue;
  155. }
  156. if (! is_array ( $val ) && ! is_object ( $val )) {
  157. if (is_bool ( $val )) {
  158. $val = $val ? 1 : 0;
  159. }
  160. if ($keyPrefix === '') {
  161. if (is_int ( $key )) {
  162. $arr [] = $numericPrefix . urlencode ( $key ) . '=' . urlencode ( $val );
  163. } else {
  164. $arr [] = urlencode ( $key ) . '=' . urlencode ( $val );
  165. }
  166. } else {
  167. $arr [] = urlencode ( $keyPrefix . '[' . $key . ']' ) . '=' . urlencode ( $val );
  168. }
  169. } else {
  170. if ($keyPrefix === '') {
  171. $newKeyPrefix = $key;
  172. } else {
  173. $newKeyPrefix = $keyPrefix . '[' . $key . ']';
  174. }
  175. $arr [] = url_glue ( $val, $numericPrefix, $argSeparator, $newKeyPrefix );
  176. }
  177. }
  178. return implode ( $argSeparator, $arr );
  179. }
  180. }
  181. /*
  182. *控制$_GET参数获取,如果是&url的enable_query_strings=TRUE,页面已经做分页获取通过,当FALSE的时候只是简单测试,还没做具体测试
  183. */
  184. if (! function_exists ( 'url_get' )) {
  185. function url_get($key_word) {
  186. $ci = & get_instance ();
  187. $enable_query_strings = $ci->config->item ( 'enable_query_strings' );
  188. if ($enable_query_strings) {
  189. $val = ! empty ( $_REQUEST [$key_word] ) ? $_REQUEST [$key_word] : NULL;
  190. return $val;
  191. } elseif (! $enable_query_strings) {
  192. //$default="/index.php/cmsblock/index/page/2/name/joe/location/UK/gender/male";
  193. $ser_URL = $_SERVER ['REQUEST_URI'];
  194. $a = explode ( '.php', $ser_URL );
  195. $query = $a [1];
  196. $path = preg_replace ( '#([^/]+)/([^/]+)#e', '${$1}="$1=$2"', substr ( $query, 1 ) );
  197. $STR = str_replace ( "/", "&", $path );
  198. parse_str ( $STR, $myArray ); //函数把查询字符串解析到变量中
  199. if (array_key_exists ( $key_word, $myArray )) {
  200. $val = $myArray [$key_word];
  201. return $val;
  202. } else {
  203. return FALSE;
  204. }
  205. } else {
  206. return FALSE;
  207. } //if($enable_query_strings){
  208. } //function url_get($key_word){
  209. }
  210. /*
  211. *操作成功的提示功能,如果有内容会弹出提示,否则不提示,直接转页面
  212. */
  213. if (! function_exists ( 'msg' )) {
  214. function msg($message = '', $url = '', $type = "javascript") {
  215. if ($type == "javascript") {
  216. echo ('<script language="JavaScript">');
  217. if ($message != '') {
  218. //echo ("alert('$message');");
  219. echo ("document.write('$message');");
  220. }
  221. echo "function timeout(){";
  222. if (strpos ( $url, '.php?' ) >= 1) {
  223. echo ("location.href='" . $url . "';");
  224. } else {
  225. echo ("location.href='index.php?" . $url . "';");
  226. }
  227. echo "}";
  228. echo "setTimeout(timeout,2000);";
  229. echo ('</script>');
  230. exit ();
  231. } else {
  232. echo sprintf (
  233. "<html><head><link rel='stylesheet' href='%spublic/css/common.css' type='text/css' /><title>提示</title></head><body><div class='message' >",
  234. base_url () );
  235. echo $message;
  236. echo "</div></body></html>";
  237. }
  238. }
  239. }
  240. /*
  241. *分页控制,直接按照参数使用即可
  242. */
  243. if (! function_exists ( 'toolkit_pages' )) {
  244. function toolkit_pages($page, $total, $phpfile, $pagesize = 3, $pagelen = 3, $link = "&") {
  245. $num_t_count = $total;
  246. $phpfile = "index.php?" . $phpfile;
  247. $pagecode = ''; //定义变量,存放分页生成的HTML
  248. $page = intval ( $page ); //避免非数字页码
  249. $total = intval ( $total ); //保证总记录数值类型正确
  250. if (! $total)
  251. return array (); //总记录数为零返回空数组
  252. $pages = ceil ( $total / $pagesize ); //计算总分页
  253. //处理页码合法性
  254. if ($page < 1)
  255. $page = 1;
  256. if ($page > $pages)
  257. $page = $pages;
  258. //计算查询偏移量
  259. $offset = $pagesize * ($page - 1);
  260. //页码范围计算
  261. $init = 1; //起始页码数
  262. $max = $pages; //结束页码数
  263. $pagelen = ($pagelen % 2) ? $pagelen : $pagelen + 1; //页码个数
  264. $pageoffset = ($pagelen - 1) / 2; //页码个数左右偏移量
  265. //生成html
  266. $pagecode = '<div class="page"><span>' . $total . "</span>&nbsp;";
  267. $pagecode .= "<span>$page/$pages</span>&nbsp;"; //第几页,共几页
  268. //如果是第一页,则不显示第一页和上一页的连接
  269. if ($page != 1) {
  270. $pagecode .= "<a href=\"{$phpfile}" . $link . "page=1\"><<</a>&nbsp;"; //第一页
  271. $pagecode .= "<a href=\"{$phpfile}" . $link . "page=" . ($page - 1) . "\">Prev</a>&nbsp;"; //上一页
  272. }
  273. //分页数大于页码个数时可以偏移
  274. if ($pages > $pagelen) {
  275. //如果当前页小于等于左偏移
  276. if ($page <= $pageoffset) {
  277. $init = 1;
  278. $max = $pagelen;
  279. } else { //如果当前页大于左偏移
  280. //如果当前页码右偏移超出最大分页数
  281. if ($page + $pageoffset >= $pages + 1) {
  282. $init = $pages - $pagelen + 1;
  283. } else {
  284. //左右偏移都存在时的计算
  285. $init = $page - $pageoffset;
  286. $max = $page + $pageoffset;
  287. }
  288. }
  289. }
  290. //生成html
  291. for($i = $init; $i <= $max; $i ++) {
  292. if ($i == $page) {
  293. $pagecode .= '<span>' . $i . '</span>&nbsp;';
  294. } else {
  295. $pagecode .= "<a href=\"{$phpfile}" . $link . "page={$i}\">$i</a>&nbsp;";
  296. }
  297. }
  298. if ($page != $pages) {
  299. $pagecode .= "<a href=\"{$phpfile}" . $link . "page=" . ($page + 1) . "\">Next</a>&nbsp;"; //下一页
  300. $pagecode .= "<a href=\"{$phpfile}" . $link . "page={$pages}\">>></a>&nbsp;"; //最后一页
  301. }
  302. $pagecode .= '</div>';
  303. return array ('pagecode' => $pagecode, 'sqllimit' => ' limit ' . $offset . ',' . $pagesize );
  304. }
  305. }
  306. if (! function_exists ( 'toolkit_pages_a' )) {
  307. function toolkit_pages_a($page, $total, $phpfile, $pagesize = 3, $pagelen = 3, $link = "") {
  308. $num_t_count = $total;
  309. $phpfile = str_replace ( "page=", "", $phpfile );
  310. $pagecode = ''; //定义变量,存放分页生成的HTML
  311. $page = intval ( $page ); //避免非数字页码
  312. $total = intval ( $total ); //保证总记录数值类型正确
  313. if (! $total)
  314. return array (); //总记录数为零返回空数组
  315. $pages = ceil ( $total / $pagesize ); //计算总分页
  316. //处理页码合法性
  317. if ($page < 1)
  318. $page = 1;
  319. if ($page > $pages)
  320. $page = $pages;
  321. //计算查询偏移量
  322. $offset = $pagesize * ($page - 1);
  323. //页码范围计算
  324. $init = 1; //起始页码数
  325. $max = $pages; //结束页码数
  326. $pagelen = ($pagelen % 2) ? $pagelen : $pagelen + 1; //页码个数
  327. $pageoffset = ($pagelen - 1) / 2; //页码个数左右偏移量
  328. //生成html
  329. //$pagecode = '<span>' . $total . "</span>&nbsp;";
  330. //$pagecode .= "<span>$page/$pages</span>&nbsp;"; //第几页,共几页
  331. //如果是第一页,则不显示第一页和上一页的连接
  332. if ($page != 1) {
  333. $pagecode .= "<a href=\"{$phpfile}page=1" . $link . "\"><<</a>"; //第一页
  334. $pagecode .= "<a href=\"{$phpfile}page=" . ($page - 1) . "" . $link . "\">上一页</a>"; //上一页
  335. } else {
  336. //$pagecode .= "<span class=no_style><<</span>"; //第一页
  337. //$pagecode .= "<span class=no_style>上一页</span>"; //上一页
  338. }
  339. //分页数大于页码个数时可以偏移
  340. if ($pages > $pagelen) {
  341. //如果当前页小于等于左偏移
  342. if ($page <= $pageoffset) {
  343. $init = 1;
  344. $max = $pagelen;
  345. } else { //如果当前页大于左偏移
  346. //如果当前页码右偏移超出最大分页数
  347. if ($page + $pageoffset >= $pages + 1) {
  348. $init = $pages - $pagelen + 1;
  349. } else {
  350. //左右偏移都存在时的计算
  351. $init = $page - $pageoffset;
  352. $max = $page + $pageoffset;
  353. }
  354. }
  355. }
  356. //生成html
  357. for($i = $init; $i <= $max; $i ++) {
  358. if ($i == $page) {
  359. $pagecode .= "<a href='#' class='cur_page'>{$i}</a>";
  360. } else {
  361. $pagecode .= "<a href=\"{$phpfile}page={$i}" . $link . "\">$i</a>";
  362. }
  363. }
  364. if ($pages > $page + $pagelen) {
  365. $pagecode .= "<a href=\"{$phpfile}page={$i}" . $link . "\">...</a>";
  366. }
  367. if ($page != $pages) {
  368. $pagecode .= "<a href=\"{$phpfile}page=" . ($page + 1) . $link . "\">下一页</a>"; //下一页
  369. $pagecode .= "<a href=\"{$phpfile}page={$pages}" . $link . "\">>></a>"; //最后一页
  370. }
  371. //$pagecode .= "到第<select name=\"menu2\" onChange=\"MM_jumpMenu('self',this,0)\"> ";
  372. //for($i = 1; $i <= $pages; $i ++) {
  373. // $pagecode .= "<option value=\"{$phpfile}page={$i}" . $link . "\"";
  374. // if ($i == $page) {
  375. // $pagecode .= " selected";
  376. // }
  377. // $pagecode .= ">" . $i . "</option>";
  378. //}
  379. //$pagecode .= " </select>页";
  380. $pagecode .= "<span class='g6 mg0'>到第<input type=text size=4 name=value_num id=value_num value={$page}></span>
  381. <span class='g6 mg0'></span>";
  382. $pagecode .= " <span class='btn_gray'><i></i><em><a href='#' id=\"btn_jump\">确定</a></em><i class='r_i'></i></span>";
  383. $pagecode .= "<script>
  384. (function(){
  385. var value_num = document.getElementById('value_num');
  386. var btn_jump = document.getElementById('btn_jump');
  387. btn_jump.onclick = function(){
  388. location.href = '{$phpfile}page='+value_num.value;
  389. }
  390. })();
  391. </script>";
  392. return array ('pagecode' => $pagecode, 'sqllimit' => ' limit ' . $offset . ',' . $pagesize );
  393. }
  394. }
  395. if (! function_exists ( 'toolkit_pages_b' )) { //post分页方式
  396. function toolkit_pages_b($page, $total, $phpfile, $pagesize = 3, $pagelen = 3, $link = "") {
  397. $num_t_count = $total;
  398. $phpfile = str_replace ( "page=", "", $phpfile );
  399. $pagecode = ''; //定义变量,存放分页生成的HTML
  400. $page = intval ( $page ); //避免非数字页码
  401. $total = intval ( $total ); //保证总记录数值类型正确
  402. if (! $total)
  403. return array (); //总记录数为零返回空数组
  404. $pages = ceil ( $total / $pagesize ); //计算总分页
  405. //处理页码合法性
  406. if ($page < 1)
  407. $page = 1;
  408. if ($page > $pages)
  409. $page = $pages;
  410. //计算查询偏移量
  411. $offset = $pagesize * ($page - 1);
  412. //页码范围计算
  413. $init = 1; //起始页码数
  414. $max = $pages; //结束页码数
  415. $pagelen = ($pagelen % 2) ? $pagelen : $pagelen + 1; //页码个数
  416. $pageoffset = ($pagelen - 1) / 2; //页码个数左右偏移量
  417. //生成html
  418. //$pagecode = '<span>' . $total . "</span>&nbsp;";
  419. //$pagecode .= "<span>$page/$pages</span>&nbsp;"; //第几页,共几页
  420. //如果是第一页,则不显示第一页和上一页的连接
  421. //$page_css2_str .= "[<a href='' onclick='javascript:change_page({$pre_page});return false;'>上一页</a>] ";
  422. if ($page != 1) {
  423. $pre = $page - 1;
  424. $pagecode .= "<a href='' onclick='javascript:change_page(1);return false;'><<</a>"; //第一页
  425. $pagecode .= "<a href='' onclick='javascript:change_page({$pre});return false;'>上一页</a>"; //上一页
  426. } else {
  427. //$pagecode .= "<span class=no_style><<</span>"; //第一页
  428. //$pagecode .= "<span class=no_style>上一页</span>"; //上一页
  429. }
  430. //分页数大于页码个数时可以偏移
  431. if ($pages > $pagelen) {
  432. //如果当前页小于等于左偏移
  433. if ($page <= $pageoffset) {
  434. $init = 1;
  435. $max = $pagelen;
  436. } else { //如果当前页大于左偏移
  437. //如果当前页码右偏移超出最大分页数
  438. if ($page + $pageoffset >= $pages + 1) {
  439. $init = $pages - $pagelen + 1;
  440. } else {
  441. //左右偏移都存在时的计算
  442. $init = $page - $pageoffset;
  443. $max = $page + $pageoffset;
  444. }
  445. }
  446. }
  447. //生成html
  448. //"[<a href='' onclick='javascript:change_page(1);return false;'>第一页</a>] ";
  449. for($i = $init; $i <= $max; $i ++) {
  450. if ($i == $page) {
  451. $pagecode .= "<a href='#' class='cur_page'>{$i}</a>";
  452. } else {
  453. $pagecode .= "<a href='' onclick='javascript:change_page({$i});return false;'>$i</a>";
  454. }
  455. }
  456. if ($pages > $page + $pagelen) {
  457. $pagecode .= "<a href='' onclick='javascript:change_page({$i});return false;'>...</a>";
  458. }
  459. if ($page != $pages) {
  460. $next = $page + 1;
  461. $pagecode .= "<a href='' onclick='javascript:change_page({$next});return false;'>下一页</a>"; //下一页
  462. $pagecode .= "<a href='' onclick='javascript:change_page({$pages});return false;'>>></a>"; //最后一页
  463. }
  464. //$pagecode .= "到第<select name=\"menu2\" onChange=\"MM_jumpMenu('self',this,0)\"> ";
  465. //for($i = 1; $i <= $pages; $i ++) {
  466. // $pagecode .= "<option value=\"{$phpfile}page={$i}" . $link . "\"";
  467. // if ($i == $page) {
  468. // $pagecode .= " selected";
  469. // }
  470. // $pagecode .= ">" . $i . "</option>";
  471. //}
  472. //$pagecode .= " </select>页";
  473. $pagecode .= "<span class='g6 mg0'>到第<input type=text size=4 name=value_num id=value_num value={$page}></span>
  474. <span class='g6 mg0'></span>";
  475. $pagecode .= " <span class='btn_gray'><i></i><em><a href='#' id=\"btn_jump\" onclick = \"page_jump()\">确定</a></em><i class='r_i'></i></span>";
  476. $pagecode .= "<script type=\"text/javascript\">
  477. function page_jump(){
  478. var num = $(\"#value_num\").val();
  479. //alert(num);
  480. $(\"#page\").attr('value',num);
  481. $(\"#theform\").submit();//提交
  482. return false ;
  483. }
  484. function change_page(num){
  485. $(\"#page\").attr('value',num);
  486. $(\"#theform\").submit();//提交
  487. return false;
  488. }
  489. </script>";
  490. return array ('pagecode' => $pagecode, 'sqllimit' => ' limit ' . $offset . ',' . $pagesize );
  491. }
  492. }
  493. if (! function_exists ( 'toolkit_pages_c' )) {
  494. function toolkit_pages_c($page, $total, $phpfile, $pagesize = 3, $pagelen = 3, $link = "") {
  495. $num_t_count = $total;
  496. $phpfile = str_replace ( "page=", "", $phpfile );
  497. $pagecode = ''; //定义变量,存放分页生成的HTML
  498. $page = intval ( $page ); //避免非数字页码
  499. $total = intval ( $total ); //保证总记录数值类型正确
  500. if (! $total)
  501. return array (); //总记录数为零返回空数组
  502. $pages = ceil ( $total / $pagesize ); //计算总分页
  503. //处理页码合法性
  504. if ($page < 1)
  505. $page = 1;
  506. if ($page > $pages)
  507. $page = $pages;
  508. //计算查询偏移量
  509. $offset = $pagesize * ($page - 1);
  510. //页码范围计算
  511. $init = 1; //起始页码数
  512. $max = $pages; //结束页码数
  513. $pagelen = ($pagelen % 2) ? $pagelen : $pagelen + 1; //页码个数
  514. $pageoffset = ($pagelen - 1) / 2; //页码个数左右偏移量
  515. //生成html
  516. if ($page != 1) {
  517. $pagecode .= "<a href=\"{$phpfile}page=1" . $link . "\">首页</a>"; //第一页
  518. $pagecode .= "<a href=\"{$phpfile}page=" . ($page - 1) . "" . $link . "\">上一页</a>"; //上一页
  519. }
  520. //分页数大于页码个数时可以偏移
  521. if ($pages > $pagelen) {
  522. //如果当前页小于等于左偏移
  523. if ($page <= $pageoffset) {
  524. $init = 1;
  525. $max = $pagelen;
  526. } else { //如果当前页大于左偏移
  527. //如果当前页码右偏移超出最大分页数
  528. if ($page + $pageoffset >= $pages + 1) {
  529. $init = $pages - $pagelen + 1;
  530. } else {
  531. //左右偏移都存在时的计算
  532. $init = $page - $pageoffset;
  533. $max = $page + $pageoffset;
  534. }
  535. }
  536. }
  537. //生成html
  538. for($i = $init; $i <= $max; $i ++) {
  539. if ($i == $page) {
  540. $pagecode .= "<span class='now'>{$i}</span>";
  541. } else {
  542. $pagecode .= "<a href=\"{$phpfile}page={$i}" . $link . "\">$i</a>";
  543. }
  544. }
  545. if ($pages > $page + $pagelen) {
  546. $pagecode .= "<span class=\"page_skip\"> <a href=\"{$phpfile}page={$i}" . $link . "\">...</a></span>";
  547. }
  548. if ($page != $pages) {
  549. $pagecode .= "<a href=\"{$phpfile}page=" . ($page + 1) . $link . "\">下一页</a>"; //下一页
  550. $pagecode .= "<a href=\"{$phpfile}page={$pages}" . $link . "\">末页</a>"; //最后一页
  551. }
  552. $pagecode .= "<span class=\"page_skip\">
  553. 到第<input type=\"text\" name=\"\" maxlength=\"10\" id=\"custompage\" class=\"pg_jump\" value=\"$page\">页
  554. <button type=\"button\" class=\"confirm\" id=\"btn_jump\">确定</button></span>";
  555. $pagecode .= "<script>
  556. (function(){
  557. var value_num = document.getElementById('custompage');
  558. var btn_jump = document.getElementById('btn_jump');
  559. btn_jump.onclick = function(){
  560. location.href = '{$phpfile}page='+value_num.value;
  561. }
  562. })();
  563. </script>";
  564. return array ('pagecode' => $pagecode, 'sqllimit' => ' limit ' . $offset . ',' . $pagesize );
  565. }
  566. }
  567. if (! function_exists ( 'toolkit_pages_zixun' )) {
  568. function toolkit_pages_zixun($page, $total, $phpfile, $pagesize = 3, $pagelen = 3, $link = "") {
  569. $num_t_count = $total;
  570. $phpfile = str_replace ( "page=", "", $phpfile );
  571. $pagecode = ''; //定义变量,存放分页生成的HTML
  572. $page = intval ( $page ); //避免非数字页码
  573. $total = intval ( $total ); //保证总记录数值类型正确
  574. if (! $total)
  575. return array (); //总记录数为零返回空数组
  576. $pages = ceil ( $total / $pagesize ); //计算总分页
  577. //处理页码合法性
  578. if ($page < 1)
  579. $page = 1;
  580. if ($page > $pages)
  581. $page = $pages;
  582. //计算查询偏移量
  583. $offset = $pagesize * ($page - 1);
  584. //页码范围计算
  585. $init = 1; //起始页码数
  586. $max = $pages; //结束页码数
  587. $pagelen = ($pagelen % 2) ? $pagelen : $pagelen + 1; //页码个数
  588. $pageoffset = ($pagelen - 1) / 2; //页码个数左右偏移量
  589. //生成html
  590. if ($page != 1) {
  591. $pagecode .= "<a href=\"{$phpfile}page=1" . $link . "\">首页</a>"; //第一页
  592. $pagecode .= "<a href=\"{$phpfile}page=" . ($page - 1) . "" . $link . "\">上一页</a>"; //上一页
  593. }
  594. //分页数大于页码个数时可以偏移
  595. if ($pages > $pagelen) {
  596. //如果当前页小于等于左偏移
  597. if ($page <= $pageoffset) {
  598. $init = 1;
  599. $max = $pagelen;
  600. } else { //如果当前页大于左偏移
  601. //如果当前页码右偏移超出最大分页数
  602. if ($page + $pageoffset >= $pages + 1) {
  603. $init = $pages - $pagelen + 1;
  604. } else {
  605. //左右偏移都存在时的计算
  606. $init = $page - $pageoffset;
  607. $max = $page + $pageoffset;
  608. }
  609. }
  610. }
  611. //生成html
  612. for($i = $init; $i <= $max; $i ++) {
  613. if ($i == $page) {
  614. $pagecode .= "<a href='#' class='cur_page'>{$i}</a>";
  615. } else {
  616. $pagecode .= "<a href=\"{$phpfile}page={$i}" . $link . "\">$i</a>";
  617. }
  618. }
  619. if ($pages > $page + $pagelen) {
  620. $pagecode .= "<a href=\"{$phpfile}page={$i}" . $link . "\">...</a>";
  621. // $pagecode .= "<span class=\"page_skip\"> <a href=\"{$phpfile}page={$i}" . $link . "\">...</a></span>";
  622. }
  623. if ($page != $pages) {
  624. $next = $page + 1;
  625. $pagecode .= "<a href=\"{$phpfile}page=" . ($page + 1) . $link . "\">下一页</a>"; //下一页
  626. $pagecode .= "<a href=\"{$phpfile}page={$pages}" . $link . "\">>></a>"; //最后一页
  627. }
  628. $pagecode .= "<input type=hidden size=4 name=page id=page><span class='g6 mg0'>到第<input type=text size=4 name=value_num id=value_num value={$page}></span>
  629. <span class='g6 mg0'></span>";
  630. $pagecode .= " <span class='btn_gray'><i></i><em><a href='#' id=\"btn_jump\" onclick = \"page_jump()\">确定</a></em><i class='r_i'></i></span>";
  631. $pagecode .= "<script type=\"text/javascript\">
  632. function page_jump(){
  633. var num = $(\"#value_num\").val();
  634. //alert(num);
  635. $(\"#page\").attr('value',num);
  636. $(\"#theform\").submit();//提交
  637. return false ;
  638. }
  639. function change_page(num){
  640. $(\"#page\").attr('value',num);
  641. $(\"#theform\").submit();//提交
  642. return false;
  643. }
  644. </script>";
  645. return array ('pagecode' => $pagecode, 'sqllimit' => ' limit ' . $offset . ',' . $pagesize );
  646. }
  647. }
  648. if (! function_exists ( 'toolkit_pages_com' )) {
  649. function toolkit_pages_com($page, $total, $phpfile, $pagesize = 3, $pagelen = 3, $link = "") {
  650. $num_t_count = $total;
  651. $phpfile = str_replace ( "page=", "", $phpfile );
  652. $pagecode = ''; //定义变量,存放分页生成的HTML
  653. $page = intval ( $page ); //避免非数字页码
  654. $total = intval ( $total ); //保证总记录数值类型正确
  655. if (! $total)
  656. return array (); //总记录数为零返回空数组
  657. $pages = ceil ( $total / $pagesize ); //计算总分页
  658. //处理页码合法性
  659. if ($page < 1)
  660. $page = 1;
  661. if ($page > $pages)
  662. $page = $pages;
  663. //计算查询偏移量
  664. $offset = $pagesize * ($page - 1);
  665. //页码范围计算
  666. $init = 1; //起始页码数
  667. $max = $pages; //结束页码数
  668. $pagelen = ($pagelen % 2) ? $pagelen : $pagelen + 1; //页码个数
  669. $pageoffset = ($pagelen - 1) / 2; //页码个数左右偏移量
  670. //生成html
  671. $pagecode = '<style type="text/css">
  672. .qjMessage_tabindex{padding:2px;font-weight:bold;font-size:12px;}
  673. .qjMessage_tabindex span{border: 1px solid #BBBBBB;padding: 0 7px;background:#FF0000;color:#fff}
  674. </style>';
  675. $pagecode .= '<div class="qjMessage_tabindex">';
  676. //生成html
  677. if ($page != 1) {
  678. $pagecode .= "<a href=\"{$phpfile}page=1" . $link . "\">首页</a>"; //第一页
  679. $pagecode .= "<a href=\"{$phpfile}page=" . ($page - 1) . "" . $link . "\">上一页</a>"; //上一页
  680. }
  681. //分页数大于页码个数时可以偏移
  682. if ($pages > $pagelen) {
  683. //如果当前页小于等于左偏移
  684. if ($page <= $pageoffset) {
  685. $init = 1;
  686. $max = $pagelen;
  687. } else { //如果当前页大于左偏移
  688. //如果当前页码右偏移超出最大分页数
  689. if ($page + $pageoffset >= $pages + 1) {
  690. $init = $pages - $pagelen + 1;
  691. } else {
  692. //左右偏移都存在时的计算
  693. $init = $page - $pageoffset;
  694. $max = $page + $pageoffset;
  695. }
  696. }
  697. }
  698. //生成html
  699. for($i = $init; $i <= $max; $i ++) {
  700. if ($i == $page) {
  701. $pagecode .= "<span class='cur_page' rel={$i}>{$i}</span>";
  702. } else {
  703. $pagecode .= "<a href=\"{$phpfile}page={$i}" . $link . " \" rel={$i}>$i</a>";
  704. }
  705. }
  706. if ($pages > $page + $pagelen) {
  707. $pagecode .= "<span class=\"page_skip\"> <a href=\"{$phpfile}page={$i}" . $link . " \" rel={$i}>...</a></span>";
  708. }
  709. if ($page != $pages) {
  710. $pagecode .= "<a href=\"{$phpfile}page=" . ($page + 1) . $link . "\" rel={$i}>下一页</a>"; //下一页
  711. $pagecode .= "<a href=\"{$phpfile}page={$pages}" . $link . "\">末页</a>"; //最后一页
  712. }
  713. $pagecode .= '</div>';
  714. return array ('pagecode' => $pagecode, 'sqllimit' => ' limit ' . $offset . ',' . $pagesize );
  715. }
  716. }
  717. if (! function_exists ( 'toolkit_pages_notice' )) {
  718. function toolkit_pages_notice($page, $total, $phpfile, $pagesize = 3, $pagelen = 3, $link = "") {
  719. $num_t_count = $total;
  720. $phpfile = str_replace ( "page=", "", $phpfile );
  721. $pagecode = ''; //定义变量,存放分页生成的HTML
  722. $page = intval ( $page ); //避免非数字页码
  723. $total = intval ( $total ); //保证总记录数值类型正确
  724. if (! $total)
  725. return array (); //总记录数为零返回空数组
  726. $pages = ceil ( $total / $pagesize ); //计算总分页
  727. //处理页码合法性
  728. if ($page < 1)
  729. $page = 1;
  730. if ($page > $pages)
  731. $page = $pages;
  732. //计算查询偏移量
  733. $offset = $pagesize * ($page - 1);
  734. //页码范围计算
  735. $init = 1; //起始页码数
  736. $max = $pages; //结束页码数
  737. $pagelen = ($pagelen % 2) ? $pagelen : $pagelen + 1; //页码个数
  738. $pageoffset = ($pagelen - 1) / 2; //页码个数左右偏移量
  739. //生成html
  740. $pagecode = '';
  741. $pagecode .= '<div class="notice_tabindex">';
  742. //$pagecode = '<span>' . $total . "</span>&nbsp;";
  743. //$pagecode .= "<span>$page/$pages</span>&nbsp;"; //第几页,共几页
  744. //如果是第一页,则不显示第一页和上一页的连接
  745. if ($page != 1) {
  746. $pagecode .= "<a href='javascript:void(0)' onclick=dynamic_notice_show(1) rel=1 ><<</a>"; //第一页
  747. $pagecode .= "<a href='javascript:void(0)' onclick=dynamic_notice_show(" . ($page - 1) . ") rel=" . ($page - 1) . ">上一页</a>"; //上一页
  748. } else {
  749. //$pagecode .= "<span class=no_style><<</span>"; //第一页
  750. //$pagecode .= "<span class=no_style>上一页</span>"; //上一页
  751. }
  752. //分页数大于页码个数时可以偏移
  753. if ($pages > $pagelen) {
  754. //如果当前页小于等于左偏移
  755. if ($page <= $pageoffset) {
  756. $init = 1;
  757. $max = $pagelen;
  758. } else { //如果当前页大于左偏移
  759. //如果当前页码右偏移超出最大分页数
  760. if ($page + $pageoffset >= $pages + 1) {
  761. $init = $pages - $pagelen + 1;
  762. } else {
  763. //左右偏移都存在时的计算
  764. $init = $page - $pageoffset;
  765. $max = $page + $pageoffset;
  766. }
  767. }
  768. }
  769. //生成html
  770. for($i = $init; $i <= $max; $i ++) {
  771. if ($i == $page) {
  772. $pagecode .= "<a href='javascript:void(0)' onclick=dynamic_notice_show({$i}) rel={$i} class='cur_page'>{$i}</a>";
  773. } else {
  774. $pagecode .= "<a href='javascript:void(0)' onclick=dynamic_notice_show({$i}) rel={$i} >{$i}</a>";
  775. }
  776. }
  777. if ($pages > $page + $pagelen) {
  778. $pagecode .= "<a href='javascript:void(0)' onclick=dynamic_notice_show({$i}) rel={$i}>...</a>";
  779. }
  780. if ($page != $pages) {
  781. //$$pagecode .= "<a href='#' rel=".($page + 1).">下一页</a>"; //下一页
  782. $pagecode .= "<a href='javascript:void(0)' onclick=dynamic_notice_show(" . ($page + 1) . ") rel=" . ($page + 1) . ">下一页</a>"; //下一页
  783. $pagecode .= "<a href='javascript:void(0)' onclick=dynamic_notice_show({$pages}) rel={$pages}>>></a>"; //最后一页
  784. }
  785. $pagecode .= '</div>';
  786. return array ('pagecode' => $pagecode, 'sqllimit' => ' limit ' . $offset . ',' . $pagesize );
  787. }
  788. }
  789. if (! function_exists ( 'modify_build_url' )) {
  790. function modify_build_url($params = array(), $url = NULL) {
  791. //my_debug(current_url());
  792. if (! $url) {
  793. $url = $_SERVER ['REQUEST_URI'];
  794. }
  795. $parts = parse_url ( $url );
  796. if (! is_array ( $parts )) {
  797. $parts = array ();
  798. }
  799. if (! array_key_exists ( 'host', $parts )) {
  800. $parts ['host'] = $_SERVER ['HTTP_HOST'];
  801. }
  802. $gets = array ();
  803. if (array_key_exists ( 'query', $parts )) {
  804. $query = $parts ['query'];
  805. parse_str ( $query, $gets );
  806. }
  807. if (! is_array ( $params )) {
  808. $params = array ();
  809. }
  810. if (! is_array ( $gets )) {
  811. $gets = array ();
  812. }
  813. foreach ( $params as $k => $v ) {
  814. $gets [$k] = $v;
  815. }
  816. $path = null;
  817. if (array_key_exists ( 'path', $parts )) {
  818. $path = $parts ['path'];
  819. }
  820. if (! $path) {
  821. $path = "/";
  822. }
  823. $ret = sprintf ( "http://%s%s?%s", $parts ['host'], $path, http_build_query ( $gets ) );
  824. return $ret;
  825. }
  826. }
  827. if (! function_exists ( 'json_indent' )) {
  828. function json_indent($json) {
  829. $result = '';
  830. $pos = 0;
  831. $strLen = strlen ( $json );
  832. $indentStr = ' ';
  833. $newLine = "\n";
  834. $prevChar = '';
  835. $outOfQuotes = true;
  836. for($i = 0; $i <= $strLen; $i ++) {
  837. // Grab the next character in the string.
  838. $char = substr ( $json, $i, 1 );
  839. // Are we inside a quoted string?
  840. if ($char == '"' && $prevChar != '\\') {
  841. $outOfQuotes = ! $outOfQuotes;
  842. // If this character is the end of an element,
  843. // output a new line and indent the next line.
  844. } else if (($char == '}' || $char == ']') && $outOfQuotes) {
  845. $result .= $newLine;
  846. $pos --;
  847. for($j = 0; $j < $pos; $j ++) {
  848. $result .= $indentStr;
  849. }
  850. }
  851. // Add the character to the result string.
  852. $result .= $char;
  853. // If the last character was the beginning of an element,
  854. // output a new line and indent the next line.
  855. if (($char == ',' || $char == '{' || $char == '[') && $outOfQuotes) {
  856. $result .= $newLine;
  857. if ($char == '{' || $char == '[') {
  858. $pos ++;
  859. }
  860. for($j = 0; $j < $pos; $j ++) {
  861. $result .= $indentStr;
  862. }
  863. }
  864. $prevChar = $char;
  865. }
  866. return trim ( $result );
  867. }
  868. }
  869. if (! function_exists ( 'create_dir' )) {
  870. function create_dir($path) {
  871. if (! file_exists ( $path )) {
  872. create_dir ( dirname ( $path ) );
  873. mkdir ( $path );
  874. chmod ( $path, 0777 );
  875. }
  876. }
  877. }
  878. if (! function_exists ( 'get_user_info' )) {
  879. function get_user_info() {
  880. $check_key = 'xiaqishitiancai';
  881. $user_id = null;
  882. $user_name = null;
  883. $cookie_verify = null;
  884. if (isset ( $_COOKIE ['TG_loginuserid'] )) {
  885. $user_id = $_COOKIE ['TG_loginuserid'];
  886. $user_name = $_COOKIE ['TG_loginuser'];
  887. }
  888. if (isset ( $_GET ['TG_loginuserid'] )) {
  889. $user_id = $_GET ['TG_loginuserid'];
  890. $user_name = $_GET ['TG_loginuser'];
  891. $user_name = base64_decode ( $user_name );
  892. }
  893. if (isset ( $_COOKIE ['TG_checkKey'] )) {
  894. $cookie_verify = $_COOKIE ['TG_checkKey'];
  895. }
  896. if (isset ( $_GET ['TG_checkKey'] )) {
  897. $cookie_verify = $_GET ['TG_checkKey'];
  898. }
  899. $corret_verify = substr ( md5 ( $user_name . $check_key . $user_id ), 0, 16 );
  900. if ($cookie_verify == $corret_verify) {
  901. //echo "合法的用户及cookie.";
  902. return array (
  903. 'user_id' => $user_id,
  904. 'user_name' => $user_name,
  905. 'TG_checkKey' => $cookie_verify );
  906. } else {
  907. return null;
  908. }
  909. }
  910. }
  911. if (! function_exists ( 'get_user' )) {
  912. function get_user() {
  913. $check_key = 'nothingisbad';
  914. $user_name = null;
  915. $user_id = null;
  916. $cookie_verify = null;
  917. if (isset ( $_COOKIE ['user_id'] )) {
  918. $user_id = $_COOKIE ['user_id'];
  919. $user_name = $_COOKIE ['user_name'];
  920. }
  921. if (isset ( $_GET ['user_id'] )) {
  922. $user_id = $_GET ['user_id'];
  923. $user_name = $_GET ['user_name'];
  924. $user_name = base64_decode ( $user_name );
  925. }
  926. if (isset ( $_COOKIE ['verify'] )) {
  927. $cookie_verify = $_COOKIE ['verify'];
  928. }
  929. if (isset ( $_GET ['verify'] )) {
  930. $cookie_sverify = $_GET ['verify'];
  931. }
  932. $corret_verify = substr ( md5 ( $user_name . $check_key . $user_id ), 0, 16 );
  933. if ($cookie_verify == $corret_verify) { //以后写验证条件
  934. return array ('user_id' => $user_id, 'user_name' => $user_name, 'verify' => $cookie_verify );
  935. } else {
  936. return null;
  937. }
  938. }
  939. }
  940. if (! function_exists ( "curl_fetch" )) {
  941. function curl_fetch($url, $header = null, $cookie = '', $referer = '', $data = null) {
  942. try {
  943. $ch = curl_init ( $url );
  944. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true ); // 返回字符串,而非直接输出
  945. curl_setopt ( $ch, CURLOPT_HEADER, false ); // 不返回header部分
  946. curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 30 ); // 设置socket连接超时时间
  947. @curl_setopt ( $ch, CURLOPT_TIMEOUT_MS, 2000 );
  948. if (! empty ( $referer )) {
  949. curl_setopt ( $ch, CURLOPT_REFERER, $referer ); // 设置引用网址
  950. }
  951. if (! empty ( $cookie )) {
  952. curl_setopt ( $ch, CURLOPT_COOKIE, $cookie ); // 设置从$cookie所指文件中读取cookie信息以发送
  953. }
  954. if (is_null ( $header )) {
  955. // GET
  956. } else if (is_array ( $header )) {
  957. // POST
  958. curl_setopt ( $ch, CURLOPT_HTTPHEADER, $header );
  959. }
  960. if (is_null ( $data )) {
  961. // GET
  962. } else if (is_string ( $data )) {
  963. curl_setopt ( $ch, CURLOPT_POST, true );
  964. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
  965. // POST
  966. } else if (is_array ( $data )) {
  967. // POST
  968. curl_setopt ( $ch, CURLOPT_POST, true );
  969. curl_setopt ( $ch, CURLOPT_POSTFIELDS, http_build_query ( $data ) );
  970. }
  971. @curl_setopt ( $ch, CURLOPT_TIMEOUT_MS, 20000 );
  972. set_time_limit ( 30 ); // 设置自己服务器超时时间
  973. $str = curl_exec ( $ch );
  974. $curl_errno = curl_errno ( $ch );
  975. $curl_error = curl_error ( $ch );
  976. curl_close ( $ch );
  977. if ($curl_errno > 0) {
  978. echo ("!--cURL Error ({$curl_errno}): {$curl_error}<br>--");
  979. return null;
  980. }
  981. return $str;
  982. } catch ( Exception $e ) {
  983. echo "<!--CMS Exception:" . __FILE__ . __LINE__ . " -->";
  984. return null;
  985. }
  986. return $str;
  987. }
  988. }
  989. if (! function_exists ( "replace_img_server" )) {
  990. function replace_img_server($matches) {
  991. static $count = 0;
  992. $i = (($count % 5) + 1);
  993. $count ++;
  994. return "//oneimg$i.jia.com/content/public/resource";
  995. //return "//oneimg1.jia.com/content/public/resource";
  996. }
  997. }
  998. if (! function_exists ( "lix_string_encode" )) {
  999. function lix_string_encode($str, $must = 0) {
  1000. $i = 0;
  1001. $code = null;
  1002. $len = strlen ( $str );
  1003. while ( $i < $len ) {
  1004. $ch = ord ( $str [$i] );
  1005. if ($ch > 224) {
  1006. if ($i + 3 < $len) {
  1007. $ch4 = ord ( $str [$i + 3] );
  1008. if ($ch4 > 224) {
  1009. $code .= " ";
  1010. if ($must) {
  1011. $code .= "+";
  1012. }
  1013. $code .= "c";
  1014. $code .= $ch;
  1015. $code .= ord ( $str [$i + 1] );
  1016. $code .= ord ( $str [$i + 2] );
  1017. $code .= '_';
  1018. $code .= $ch4;
  1019. $code .= ord ( $str [$i + 4] );
  1020. $code .= ord ( $str [$i + 5] );
  1021. //$i += 3;
  1022. $code .= "c ";
  1023. }
  1024. }
  1025. $i += 3;
  1026. } else {
  1027. $code .= $str [$i];
  1028. $i += 1;
  1029. }
  1030. }
  1031. return $code;
  1032. }
  1033. }
  1034. if (! function_exists ( "cms_inner_verify" )) {
  1035. function cms_inner_verify($str, $ip, $pass) {
  1036. return substr ( md5 ( "$str/$ip/$pass" ), 0, 16 );
  1037. }
  1038. }
  1039. if (! function_exists ( "write_log" )) {
  1040. function write_log($file_name, $message) {
  1041. $client_ip = 'localhost';
  1042. if (! empty ( $_SERVER ['REMOTE_ADDR'] )) {
  1043. $client_ip = trim ( $_SERVER ['REMOTE_ADDR'] );
  1044. }
  1045. if ($client_ip != '192.168.96.171') {
  1046. //return;
  1047. }
  1048. $t = date ( "Y-m-d--H:i:s", time () );
  1049. $t .= "#\t";
  1050. $cur_dir = dirname ( __FILE__ );
  1051. $comphp_dir = realpath ( "$cur_dir/../../public" );
  1052. $base_name = basename ( $file_name, ".php" );
  1053. $base_name = strtolower ( $base_name );
  1054. $log_file_name = ("$comphp_dir/logs/$base_name.txt");
  1055. //my_debug($log_file_name);
  1056. create_dir ( dirname ( $log_file_name ) );
  1057. if (file_exists ( $log_file_name )) {
  1058. clearstatcache ();
  1059. $size = filesize ( $log_file_name );
  1060. if ($size > 1024 * 1024 * 4) { //大于*M
  1061. unlink ( $log_file_name );
  1062. }
  1063. }
  1064. $f = fopen ( $log_file_name, "a" );
  1065. if (is_array ( $message )) {
  1066. $message = var_export ( $message, true );
  1067. }
  1068. fwrite ( $f, "($client_ip)" . $t . $message . "\n" );
  1069. fclose ( $f );
  1070. }
  1071. }
  1072. //end.