Global.php
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:6k
源码类别:

P2P编程

开发平台:

Visual C++

  1. <?php
  2. //define("__ERROR_LOGFILE", 'debug/internalError.txt');
  3. /*
  4.  * 内部错误记录
  5.  * 参数: $msg 记录信息内容
  6.  */
  7. function internalError($msg = '') {
  8. if(defined("__DEBUG")) { // 只有在开启了调试模式的情况下记录错误信息
  9. if($msg) {
  10. $fp = fopen(__ERROR_LOGFILE, 'a');
  11. $data = date("Y-m-d H:i:s").
  12. "n-----------------------------------------n".
  13. $msg.
  14. "n-----------------------------------------nn";
  15. fputs($fp, $data);
  16. fclose($fp);
  17. }
  18. }
  19. exit();
  20. }
  21. function utime() {
  22. list($sec, $usec) = explode(' ', microtime());
  23. return $sec + $usec;
  24. }
  25. /*
  26.  * 设定 Cookie
  27.  * 参数: $name Cookie 名称
  28.          $var  Cookie 内容
  29.          $expire 作用时长
  30.          $secure 在安全域中使用时设置为1
  31.  */
  32. function Cookie($name, $var, $expires = 0, $secure = 0) {
  33. GLOBAL $timestamp;
  34. $cookie_time = $expires ? ($timestamp + $expires) : 0;
  35. SetCookie($name, $var, $cookie_time, COOKIE_PATH, COOKIE_DOMAIN, $secure);
  36. }
  37. function checkAttribute($name, $value) {
  38. /*
  39. $allowedAttributes = Array("username" => '^[a-zA-Z]([0-9a-zA-Z_-])*$',
  40. "email" => '^[a-z0-9]+[a-z0-9_\.-]*@([a-z0-9]+([.-][a-z0-9]+)*)\.[a-z]{2,4}$',
  41. "common" => '^[A-Za-z 0-9-_]+$',
  42. "password" => '^([A-Za-z0-9_@!??\.-]){6,}$',
  43. "mobilnr" => '^[0-9-]{8,}$',
  44. "float" => '^[0-9]*.*[0-9]*$',
  45. "numbers" => '^[0-9]+$',
  46. "signednumbers" => '^[0-9-]+$',
  47. "url" => '^[A-Za-z0-9._~/:?&=+-]+$',
  48. "digits+letters" => '^[A-Za-z0-9]+$'
  49. );
  50. */
  51. $allowedAttributes = Array(
  52. 'username'         => '^([0-9a-zA-Z_-])*$',
  53. 'common' => '^[0-9a-zA-Z_'.chr(0xa1).'-'.chr(0xff).'-]+$',
  54. 'email' => '^[a-z0-9]+[a-z0-9_\.-]*@([a-z0-9]+([.-][a-z0-9]+)*)\.[a-z]{2,4}$',
  55. 'password' => '^([A-Za-z0-9_@!??\.-]){3,}$',
  56. 'float' => '^[0-9]*.*[0-9]*$',
  57. 'mobilnr' => '^[0-9-]{8,}$',
  58. 'numbers' => '^[0-9]+$',
  59. 'url' => '^[A-Za-z0-9._~/:?&=+-]+$',
  60. 'alnum' => '^[a-zA-Z0-9]+$',
  61. 'ip' => '^[0-9.]+$',
  62. 'letter' => '^[A-Za-z]+$',
  63. 'number+' => '^[0-9-]+$'
  64. );
  65. $regexp = '~'.str_replace("~", "\~", $allowedAttributes[$name]).'~';
  66. if(preg_match($regexp, $value) != 0)
  67. return true;
  68. else
  69. return false;
  70. }
  71. /*
  72.  * 获取页面传递的变量
  73.  * 参数: $name 需要获取的变量名
  74.          $format 过滤方法
  75.          $method 获取方法,默认为 GET 方式
  76.  */
  77. function getParameter($name, $format, $method = PP_GET) {
  78. switch($method) {
  79. case PP_GET:
  80. $var = $_GET[$name];
  81. break;
  82. case PP_POST:
  83. $var = $_POST[$name];
  84. break;
  85. case PP_GET_POST:
  86. $var = isset($_GET[$name]) ? $_GET[$name] : $_POST[$name];
  87. break;
  88. default:
  89. internalError("getPageParameter(): Invalid parameter method: $method");
  90. break;
  91. }
  92. if(isset($var)) {
  93. if($format) {
  94. if(!checkAttribute($format, $var))
  95. $var = false;
  96. }
  97. }
  98. if($var == "")
  99. unset($var);
  100. return $var;
  101. }
  102. /*
  103. function is_ip($ip) {
  104. return eregi("^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$", $ip);
  105. }
  106. */
  107. function convert_ip_tonumber($ip) {
  108. if(!checkAttribute('ip', $ip)) return false;
  109. $ip_array = explode(".", $ip);
  110. $base = 256;
  111. $ip_number  = $ip_array[0] * pow($base, 3);
  112. $ip_number += $ip_array[1] * pow($base, 2);
  113. $ip_number += $ip_array[2] * pow($base, 1);
  114. $ip_number += $ip_array[3] * pow($base, 0);
  115. return $ip_number;
  116. }
  117. /*
  118.  * 网络切换函数,默认返回 telecom 电信的频道信息数组
  119.  * 参数: $channel 网络名称
  120.  */
  121. function change_channel($channel = 'telecom') {
  122. switch($channel) {
  123. case 'netcom':
  124. case 'cnc':
  125. return array('CabUrl' => 'http://222.240.213.60/update/Chaos.cab',
  126. 'ClientUrl' => 'http://222.240.213.60/update/XTVsetup.exe',
  127. 'Gate' => 'cnc'
  128. );
  129. break;
  130. case 'edu':
  131. return array('CabUrl' => 'http://166.111.118.5/update/Chaos.cab',
  132. 'ClientUrl' => 'http://166.111.118.5/update/XTVsetup.exe',
  133. 'Gate' => 'edu'
  134. );
  135. break;
  136. case 'telecom':
  137. case 'tel':
  138. return array('CabUrl' => 'http://58.20.33.3/update/Chaos.cab',
  139. 'ClientUrl' => 'http://58.20.33.3/update/XTVsetup.exe',
  140. 'Gate' => 'tel'
  141. );
  142. break;
  143. default:
  144. ipunknown($onlineip);
  145. return array('CabUrl' => 'http://58.20.33.3/update/Chaos.cab',
  146. 'ClientUrl' => 'http://58.20.33.3/update/XTVsetup.exe',
  147. 'Gate' => 'tel'
  148. );
  149. break;
  150. }
  151. }
  152. /*
  153.  * 通过用户来访IP,切换网络,返回相关信息的数组
  154.  */
  155. function ip_table() {
  156. global $onlineip;
  157. $ipnum = convert_ip_tonumber($onlineip);
  158. if(!$ipnum) internalError("ip_table(): Remote IP check failed:".$onlineip);
  159. $sql = "SELECT ip_comefrom FROM ip_table WHERE ip_start <= '$ipnum' AND ip_end >= '$ipnum'";
  160. list($net) = db_fetch_row(db_query($sql));
  161. return change_channel($net);
  162. }
  163. /*
  164.  * 中文字符串截取
  165.  * 参数: $string 传入的字符串
  166.          $sublen 需要截取的长度
  167.  */
  168. function cnSubStr($string, $sublen) {
  169. if($sublen >= strlen($string))
  170. return $string;
  171. $s = "";
  172. for($i = 0; $i < $sublen; $i ++) {
  173. if(ord($string{$i}) > 127) {
  174. $s .= $string{$i} . $string{++$i};
  175. continue;
  176. } else {
  177. $s .= $string{$i};
  178. continue;
  179. }
  180. }
  181. return $s;
  182. }
  183. function obj_check($filename, $expire = 300) {
  184. GLOBAL $timestamp;
  185. if(!file_exists($filename))
  186. return false;
  187. if($timestamp - filemtime($filename) > $expire)
  188. return false;
  189. else
  190. return true;
  191. }
  192. function obj_put($filename, $str) {
  193. @touch($filename.'.new');
  194. $fp = @fopen($filename.'.new', 'w');
  195. @fwrite($fp, $str);
  196. @fclose($fp);
  197. @unlink($filename);
  198. @rename($filename.'.new', $filename);
  199. @chmod($filename, 0777);
  200. }
  201. function obj_get($filename) {
  202. if(!file_exists($filename))
  203. return false;
  204. $fp = @fopen($filename, 'r');
  205. $contents = @fread($fp, filesize($filename));
  206. @fclose($fp);
  207. return $contents;
  208. }
  209. function checkdir($dirname) {
  210. if(is_dir($dirname)) {
  211. return true;
  212. } else {
  213. if(!@mkdir($dirname, 0777)) {
  214. @chmod($dirname,0777);
  215. }
  216. }
  217. return true;
  218. }
  219. function ipunknown($onlineip){
  220. $handle = fopen("Debug/ip_new.txt","a");
  221. if($handle){
  222. fwrite($handle, $onlineip."n");
  223. }
  224. fclose($handle);
  225. }
  226. function listFiles($dir, $suffix){
  227. $fileList = array();
  228. if ($handle = opendir($dir)) {
  229.    while (false !== ($file = readdir($handle))) {
  230.        if ($file != "." && $file != ".." && stristr($file, $suffix)!=false ) {
  231.            $fileList[]=$file;
  232.        }
  233.    }
  234.    closedir($handle);
  235. }
  236. return $fileList;
  237. }
  238. ?>