function_common.inc.php 5.3 KB

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