Iplimit.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <?php
  2. namespace app\admin\controller;
  3. class Iplimit extends Base
  4. {
  5. //访问ip管理
  6. public function index()
  7. {
  8. if (request()->isAjax()) {
  9. $param = input('param.');
  10. $limit = $param['pageSize'];
  11. $offset = (($param['pageNumber'] - 1) * $limit);
  12. $where['object'] = $param['type'];
  13. if (strlen($param['searchText'])) {
  14. $where['ip'] =
  15. $where['ip'] = ['like', '%' . $param['searchText'] . '%'];
  16. }
  17. $result = db('iplimit')->where($where)->limit($offset, $limit)->select();
  18. $admins = db('admins')->select();
  19. foreach ($result as $key => $vo) {
  20. for($i=0;$i<count($admins);$i++){
  21. if($vo['admin_id'] == $admins[$i]['id']){
  22. $result[$key]['admin'] = $admins[$i]['user_name'];
  23. }
  24. }
  25. if($vo['ip'] == ''){
  26. $result[$key]['ip'] = $result[$key]['start_ip'].' - '.$result[$key]['end_ip'];
  27. }
  28. // 生成操作按钮.
  29. $result[$key]['operate'] = $this->makeBtn($vo['id']);
  30. }
  31. // 总数据.
  32. $return['total'] = db('iplimit')->where($where)->count(); //总数据
  33. $return['rows'] = $result;
  34. return json($return);
  35. }
  36. return $this->fetch();
  37. }
  38. //访问ip添加
  39. public function add(){
  40. if(request()->isPost()){
  41. $param = input('post.');
  42. $findWhere = [
  43. 'ip' => $param['ip'],
  44. 'object' => $param['object'],
  45. ];
  46. $has = db('iplimit')->where($findWhere)->find();
  47. if (empty($has) === false) {
  48. return json(['code' => -1, 'data' => '', 'msg' => '该ip已经存在']);
  49. }
  50. if(strpos($param['ip'], '-') !== false){
  51. $ip = explode('-',$param['ip']);
  52. //将ip地址转换成int型
  53. $param['start_ip'] = bindec(decbin(ip2long($ip[0])));
  54. $param['end_ip'] = bindec(decbin(ip2long($ip[1])));
  55. }
  56. $param['ctime'] = date('Y-m-d H:i:s',time());
  57. $param['utime'] = date('Y-m-d H:i:s',time());
  58. $param['admin_id'] = session('user_id');
  59. try {
  60. db('iplimit')->insert($param);
  61. } catch(\Exception $e) {
  62. return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
  63. }
  64. return json(['code' => 1, 'data' => '', 'msg' => '添加访问ip成功']);
  65. }
  66. $this->assign([
  67. 'status' => config('kf_status')
  68. ]);
  69. return $this->fetch();
  70. }
  71. //访问ip编辑
  72. public function edit(){
  73. if(request()->isAjax()){
  74. $param = input('post.');
  75. // 检测用户修改的管理员是否重复
  76. $has = db('iplimit')->where('ip', $param['ip'])->where('id', $param['id'])->find();
  77. if(!empty($has)){
  78. return json(['code' => -1, 'data' => '', 'msg' => '该访问ip已经存在']);
  79. }
  80. if(strpos($param['ip'], '-') !== false){
  81. $ip = explode('-',$param['ip']);
  82. //将ip地址转换成int型
  83. $param['start_ip'] = bindec(decbin(ip2long($ip[0])));
  84. $param['end_ip'] = bindec(decbin(ip2long($ip[1])));
  85. }
  86. $param['ctime'] = date('Y-m-d H:i:s',time());
  87. $param['utime'] = date('Y-m-d H:i:s',time());
  88. $param['admin_id'] = session('user_id');
  89. try{
  90. db('iplimit')->where('id', $param['id'])->update($param);
  91. }catch(\Exception $e){
  92. return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
  93. }
  94. return json(['code' => 1, 'data' => '', 'msg' => '编辑访问ip成功']);
  95. }
  96. $id = input('param.id/d');
  97. $info = db('iplimit')->where('id', $id)->find();
  98. $this->assign([
  99. 'info' => $info,
  100. 'status' => config('kf_status')
  101. ]);
  102. return $this->fetch();
  103. }
  104. //删除
  105. public function del(){
  106. if(request()->isAjax()){
  107. $id = input('param.id/d');
  108. // return $id;
  109. try{
  110. db('iplimit')->where('id', $id)->delete();
  111. }catch(\Exception $e){
  112. return json(['code' => -1, 'data' => '', 'msg' => $e->getMessage()]);
  113. }
  114. return json(['code' => 1, 'data' => '', 'msg' => '删除ip成功']);
  115. }
  116. }
  117. //开启/关闭ip限制
  118. public function disjunctor(){
  119. if(request()->isAjax()){
  120. $disjunctor = input('param.disjunctor');
  121. try{
  122. if($disjunctor == 'on'){
  123. $msg = '开启';
  124. db('settings')->where('id', 1)->update(['ip_disjunctor'=>$disjunctor]);
  125. }else{
  126. $msg = '关闭';
  127. db('settings')->where('id', 1)->update(['ip_disjunctor'=>$disjunctor]);
  128. }
  129. }catch(\Exception $e){
  130. return json(['code' => -1, 'data' => '', 'msg' => $e->getMessage()]);
  131. }
  132. return json(['code' => 1, 'data' => '', 'msg' => $msg.'ip限制成功']);
  133. }
  134. }
  135. // 生成按钮
  136. private function makeBtn($id)
  137. {
  138. $operate = '<a href="' . url('iplimit/edit', ['id' => $id]) . '">';
  139. $operate .= '<button type="button" class="btn btn-primary btn-sm"><i class="fa fa-paste"></i> 编辑</button></a> ';
  140. $operate .= '<a href="javascript:Del(' . $id . ')"><button type="button" class="btn btn-danger btn-sm">';
  141. $operate .= '<i class="fa fa-trash-o"></i> 删除</button></a> ';
  142. return $operate;
  143. }
  144. }