function_common.inc.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <?php
  2. /**
  3. * 此文件放置与业务无关的函数
  4. * 与业务无关是指不依赖于项目本身,不同项目或多种环境下可以通用
  5. *
  6. * 与业务有关的函数放置于function.inc.php
  7. * 系统环境有关的函数见lib/common/Env类
  8. * 参数检查有关的函数见lib/common/ParamCheck类
  9. *
  10. * @createtime 2018/03/01
  11. * @author 空竹
  12. * @copyright 芝麻开发(http://www.zhimawork.com)
  13. */
  14. /**
  15. * safeCheck() 参数检查,并防XSS 和 SQL注入
  16. *
  17. * @param mixed $str
  18. * @param bool $number 是否做数字检查 1-(默认)数字 0-不是数字
  19. * @param bool $script 是否过滤script 1-(默认)过滤;0-不过滤
  20. * @return
  21. */
  22. function safeCheck($str, $number = 1, $script = 1){
  23. $str = trim($str);
  24. //防止SQL注入
  25. if(!get_magic_quotes_gpc()){
  26. $str = addslashes($str);
  27. }
  28. //数字检查
  29. if($number == 1){
  30. $isint = preg_match('/^-?\d+$/',$str);
  31. $isfloat = preg_match('/^(-?\d+)(\.\d+)?$/',$str);
  32. if(!$isint && !$isfloat){
  33. die('参数必须为数字');
  34. }
  35. }else{
  36. //过滤script、防XSS
  37. if($script == 1){
  38. $str = htmlspecialchars($str);
  39. }
  40. }
  41. return $str;
  42. }
  43. /**
  44. * ckReplace() ckEditor编辑器内容处理
  45. *
  46. * @param mixed $content
  47. * @return
  48. */
  49. function ckReplace($content){
  50. if (!empty($content)){
  51. $content = str_replace("'", "&#39;", $content);
  52. $content = str_replace("<br />", "</p><p>", $content);
  53. }
  54. return $content;
  55. }
  56. /**
  57. * HTMLEncode()将特殊字符转成HTML格式,主要用于textarea获取值
  58. *
  59. * @param mixed $str
  60. * @return
  61. */
  62. function HTMLEncode($str){
  63. if (!empty($str)){
  64. $str = str_replace("&","&amp;",$str);
  65. $str = str_replace(">","&gt;",$str);
  66. $str = str_replace("<","&lt;",$str);
  67. $str = str_replace(CHR(32),"&nbsp;",$str);
  68. $str = str_replace(CHR(9),"&nbsp;&nbsp;&nbsp;&nbsp;",$str);
  69. $str = str_replace(CHR(9),"&#160;&#160;&#160;&#160;",$str);
  70. $str = str_replace(CHR(34),"&quot;",$str);
  71. $str = str_replace("'","&#39;",$str);
  72. $str = str_replace(CHR(39),"&#39;",$str);
  73. $str = str_replace(CHR(13),"",$str);
  74. $str = str_replace(CHR(10),"<br/>",$str);
  75. }
  76. return $str;
  77. }
  78. /**
  79. * HTMLDecode()将HTMLEncode的数据还原
  80. *
  81. * @param mixed $str
  82. * @return
  83. */
  84. Function HTMLDecode($str){
  85. if (!empty($str)){
  86. $str = str_replace("&amp;","&",$str);
  87. $str = str_replace("&gt;",">",$str);
  88. $str = str_replace("&lt;","<",$str);
  89. $str = str_replace("&nbsp;",CHR(32),$str);
  90. $str = str_replace("&nbsp;&nbsp;&nbsp;&nbsp;",CHR(9),$str);
  91. $str = str_replace("&#160;&#160;&#160;&#160;",CHR(9),$str);
  92. $str = str_replace("&quot;",CHR(34),$str);
  93. $str = str_replace("&#39;",CHR(39),$str);
  94. $str = str_replace("",CHR(13),$str);
  95. $str = str_replace("<br/>",CHR(10),$str);
  96. $str = str_replace("<br />",CHR(10),$str);
  97. $str = str_replace("<br>",CHR(10),$str);
  98. }
  99. return $str;
  100. }
  101. /**
  102. * 生成随机数randcode()
  103. *
  104. * @param mixed $len
  105. * @param integer $mode
  106. * @return
  107. */
  108. function randcode($len, $mode = 2){
  109. $rcode = '';
  110. switch($mode){
  111. case 1: //去除0、o、O、l等易混淆字符
  112. $chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghijkmnpqrstuvwxyz';
  113. break;
  114. case 2: //纯数字
  115. $chars = '0123456789';
  116. break;
  117. case 3: //全数字+大小写字母
  118. $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
  119. break;
  120. case 4: //全数字+大小写字母+一些特殊字符
  121. $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz~!@#$%^&*()';
  122. break;
  123. }
  124. $count = strlen($chars) - 1;
  125. mt_srand((double)microtime() * 1000000);
  126. for($i = 0; $i < $len; $i++) {
  127. $rcode .= $chars[mt_rand(0, $count)];
  128. }
  129. return $rcode;
  130. }
  131. /**
  132. * Json_encode的Unicode中文(\u4e2d\u56fd)问题
  133. *
  134. * @param mixed $array
  135. * @return
  136. */
  137. function json_encode_cn($array){
  138. $str = json_encode($array);
  139. $os = Env::getOSType();
  140. if($os == 'windows')
  141. $ucs = 'UCS-2';
  142. else
  143. $ucs = 'UCS-2BE';
  144. if (version_compare(PHP_VERSION, '5.5.0') >= 0) {
  145. $str = preg_replace_callback("/\\\\u([0-9a-f]{4})/i", function($matches) use($ucs){return iconv($ucs, "UTF-8", pack("H*", $matches[1]));}, $str);
  146. /** //2018/12/23 修正PHP7.2以上版本不支持create_function
  147. }else if (version_compare(PHP_VERSION, '5.5.0') >= 0) {
  148. $str = preg_replace_callback("/\\\\u([0-9a-f]{4})/i", create_function('$matches', 'return iconv("'.$ucs.'", "UTF-8", pack("H*", $matches[1]));'), $str);
  149. **/
  150. }else{
  151. $str = preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('".$ucs."', 'UTF-8', pack('H4', '\\1'))", $str);
  152. }
  153. return $str;
  154. }
  155. /**
  156. * 操作响应通知(默认json格式)
  157. *
  158. * @param $msg 消息内容
  159. * @param $code 消息代码
  160. * @return
  161. */
  162. function action_msg($msg, $code, $json = true){
  163. $r = array(
  164. 'code' => $code,
  165. 'msg' => $msg
  166. );
  167. if($json)
  168. return json_encode_cn($r);
  169. else
  170. return $r;
  171. }
  172. /**
  173. * 检测图片宽高是否符合要求,常用于图片上传
  174. * @param $filepath 文件绝对路径
  175. * @param $targetWidth 目标宽度
  176. * @param $targetHeight 目标高度
  177. * @return bool
  178. */
  179. function checkImgSize($filepath, $targetWidth, $targetHeight) {
  180. $imageinfo = getimagesize($filepath);
  181. if ($imageinfo[0] != $targetWidth || $imageinfo[1] != $targetHeight) {
  182. return false;
  183. }
  184. return true;
  185. }
  186. ?>