thinkphp3 获取登录用户ip定位,并通过session 保存到数据库中

get_client_ip()

然后可以将其保存到session
session('userip',get_client_ip());

模板中

public function login()
    {    
        $password=$this->ad_password;

        $info=$this->where("ad_name='$this->ad_name'")->find();
        
        if($info)
        {
            if(md5($password)==$info['ad_password'])
            {
                session('id',$info['ad_id']);
                session('username',$info['ad_name']);
                session('userip',get_client_ip());
                
                
                /*ip 定位*/
                $Ip = new \Org\Net\IpLocation('UTFWry.dat'); // 实例化类 参数表示IP地址库文件
                // 获取某个IP地址所在的位置
                $area = $Ip->getlocation($_SESSION['userip']) ;
                
                
                /*保存获取的ip定位信息*/
                session('country',$area['country']);
                session('area',$area['area']);
            
        
                $data['username'] = $_SESSION['username'];
                $data['ip'] = $_SESSION['userip'];
                $data['logintime'] = time();
                $data['country'] = $area['country'];
                $data['area'] = $area['area'];


                $log = M("log"); // 实例化Userlog对象

                $add = $log->data($data)->add();

                return true;
            }
        }
        else
        {
        
        return false;
        }
    }

控制器中

<?php
namespace Admin\Controller;
use Think\Controller;
class UserloginController extends Controller {

    public function lst()
   {
        $userlog = M('log'); // 实例化User对象
        $count= $userlog->count();// 查询满足要求的总记录数
        $Page= new \Think\Page($count,3);// 实例化分页类 传入总记录数和每页显示的记录数(25)
        $Page->setConfig('prev', '上一页');
        $Page->setConfig('next', '下一页');

        $show = $Page->show();// 分页显示输出
        $list = $userlog->order('id desc')->limit($Page->firstRow.','.$Page->listRows)->select();
        $this->assign('list',$list);// 赋值数据集
        $this->assign('page',$show);// 赋值分页输出
        $this->display();

   }



    public function del($id){
        $userlog=D('log');
        if($userlog->delete($id)){
            $this->success('日志删除成功!',U('lst'));
        }else{
            $this->error('日志删除失败!');
        }

    }

    public function bdel(){
        $userlog=D('log');
        $bdel=I('bdel');

        $bdel=implode(',',$bdel);

        if($userlog->delete($bdel)){
            $this->success('日志批量删除成功!',U('lst'));
        }else{
            $this->error('日志批量删除失败!');
        }

    }


}

前台

<tr>
    <td><table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#a8c7ce" onmouseover="changeto()"  onmouseout="changeback()">
      <tr>
        <td width="4%" height="20" bgcolor="d3eaef" class="STYLE10"><div align="center">
          <input type="checkbox" name="checkbox" id="selall" />
        </div></td>
        <td width="10%" height="20" bgcolor="d3eaef" class="STYLE6"><div align="center"><span class="STYLE10">id</span></div></td>
        <td width="27%" height="20" bgcolor="d3eaef" class="STYLE6"><div align="center"><span class="STYLE10">登录用户名</span></div></td>
        <td width="10%" height="20" bgcolor="d3eaef" class="STYLE6"><div align="center"><span class="STYLE10">用户ip</span></div></td>
        <td width="10%" height="20" bgcolor="d3eaef" class="STYLE6"><div align="center"><span class="STYLE10">登录ip地址</span></div></td>
        <td width="10%" height="20" bgcolor="d3eaef" class="STYLE6"><div align="center"><span class="STYLE10">登录时间</span></div></td>

        <td width="14%" height="20" bgcolor="d3eaef" class="STYLE6"><div align="center"><span class="STYLE10">基本操作</span></div></td>
      </tr>
       <volist name="list" id="vo">
      <tr>
        <td height="20" bgcolor="#FFFFFF"><div align="center">
          <input type="checkbox" class="selall" name="bdel[]" value="{$vo.id}" />
        </div></td>
        <td height="20" bgcolor="#FFFFFF" class="STYLE6"><div align="center"><span class="STYLE19">{$vo.id}</span></div></td>
        <td height="20" bgcolor="#FFFFFF" class="STYLE19" align="center" style="padding-left:5px;"><?php echo str_repeat('-',$vo[level]*8);?>{$vo.username}</td>
        <td height="20" bgcolor="#FFFFFF" class="STYLE6"><div align="center"><span class="STYLE19">{$vo.ip}</span></div></td>
        <td height="20" bgcolor="#FFFFFF" class="STYLE6"><div align="center"><span class="STYLE19">{$vo.country}{$vo.area}</span></div></td>
        <td height="20" bgcolor="#FFFFFF" class="STYLE6"><div align="center"><span class="STYLE19">{$vo.logintime|date='Y-m-d H:i:s',###}</span></div></td>
        <td height="20" bgcolor="#FFFFFF">
          <div align="center" class="STYLE21">
            <a href="__CONTROLLER__/del/id/{$vo.id}" onclick="return confirm('您确定要删除该登陆日志吗?');">删除</a>
          </div>
        </td>
      </tr>
      </volist>
      
    </table></td>
  </tr>

<td height="20" valign="bottom">
                <span class="STYLE1">当前登录用户:<?php echo I('session.username')?> </span>
                <span class="STYLE1" style="margin-left: 2rem;">用户ip:<?php echo get_client_ip();?> </span>
                <span class="STYLE1" style="margin-left: 2rem;">用户ip地址:<?php echo I('session.country')?> </span>
                <span class="STYLE1"><?php echo I('session.area')?> </span>
            </td>

注意:获取ip 定位 需要下载 IP地址库文件  

IP地址库文件和IpLocation类库位于同一目录即可。

猜你喜欢

转载自blog.csdn.net/qq_40270754/article/details/86013847
今日推荐