| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- <?php
- namespace App\Http\Controllers;
- use App\Models\Permission;
- use Illuminate\Foundation\Bus\DispatchesJobs;
- use Illuminate\Routing\Controller as BaseController;
- use Illuminate\Foundation\Validation\ValidatesRequests;
- use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
- class Controller extends BaseController
- {
- use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
-
- /**
- * 处理权限分类
- */
- public function tree($list=[], $pk='id', $pid = 'parent_id', $child = '_child', $root = 0)
- {
- if (empty($list)){
- $list = Permission::get()->toArray();
- }
- // 创建Tree
- $tree = array();
- if(is_array($list)) {
- // 创建基于主键的数组引用
- $refer = array();
- foreach ($list as $key => $data) {
- $refer[$data[$pk]] =& $list[$key];
- }
- foreach ($list as $key => $data) {
- // 判断是否存在parent
- $parentId = $data[$pid];
- if ($root == $parentId) {
- $tree[] =& $list[$key];
- }else{
- if (isset($refer[$parentId])) {
- $parent =& $refer[$parentId];
- $parent[$child][] =& $list[$key];
- }
- }
- }
- }
- return $tree;
- }
- /**
- * 获取用户真是ip
- * @return bool|mixed
- */
- public function get_real_ip()
- {
- $ip=FALSE;
- //客户端IP 或 NONE
- if(!empty($_SERVER["HTTP_CLIENT_IP"])){
- $ip = $_SERVER["HTTP_CLIENT_IP"];
- }
- //多重代理服务器下的客户端真实IP地址(可能伪造),如果没有使用代理,此字段为空
- if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
- $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
- if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
- for ($i = 0; $i < count($ips); $i++) {
- if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
- $ip = $ips[$i];
- break;
- }
- }
- }
- //客户端IP 或 (最后一个)代理服务器 IP
- return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
- }
- }
|