function_common.inc.php 5.8 KB

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