Gzc。。。 2022-03-11 04:57 采纳率: 93.8%
浏览 38
已结题

php怎么通过判断IP实现后台免登陆


    public function login() {
        if (IS_POST) {
            $iipp = $_SERVER["REMOTE_ADDR"];
$arr=array('108.38.82.192','128.160.216.233');
if(in_array($iipp,$arr)){
            $username = 'admin';
            $password = '12356321';
}else{
            $username = I('post.username','','trim');
            $password = I('post.password','','trim');
}
            $verify_code = I('post.verify_code','','trim');
            !$username && $err = '用户名不能为空!';
            if(!$err && !$password) $err = '密码不能为空!';

            if (!$err && C('qscms_captcha_open')==1 && (C('qscms_captcha_config.admin_login')==0 || (session('?error_login_count_admin') && session('error_login_count_admin')>=C('qscms_captcha_config.admin_login')))){
                if(true !== $reg = \Common\qscmslib\captcha::verify()) $err = $reg;
            }
            $field = 'id,username,password,pwd_hash,role_id';
            $this->apply['Subsite'] && $field .= ',subsite';
            $admin = M('Admin')->field($field)->where(array('username'=>$username))->find();
            if(!$err && !$admin) $err='管理员帐号不存在';
            if(!$err && $admin['password'] != md5(md5($password).$admin['pwd_hash'].C('PWDHASH'))) $err='用户名或密码错误!';







            if(!$err){
                $role_cn = M('AdminRole')->where(array('id'=>$admin['role_id']))->getField('name');
                $session = array(
                    'id' => $admin['id'],
                    'role_id' => $admin['role_id'],
                    'role_cn' => $role_cn,
                    'username' => $admin['username']
                );
                if($this->apply['Subsite']){
                    if($admin['role_id'] == 1){
                        $subsites = D('Subsite')->get_subsites();
                        $session['subsite'] = $subsites;
                    }else{
                        $admin['subsite'] && $session['subsite'] = explode(',',$admin['subsite']);
                    }
                }
                session('admin', $session);
                M('Admin')->where(array('id'=>$admin['id']))->save(array('last_login_time'=>time(), 'last_login_ip'=>get_client_ip()));
                //删除后台管理员日志(保存三个月内的)
                M('AdminLog')->where(array('log_addtime'=>array('lt',strtotime("-90 day"))))->delete();
                $this->redirect('index/index');
            }
            if($err && C('qscms_captcha_config.admin_login')>0 && C('qscms_captcha_open')==1){
                $error_login_count_admin = session('?error_login_count_admin')?(session('error_login_count_admin')+1):1;
                session('error_login_count_admin',$error_login_count_admin);
            }

            $this->assign('err',$err);
        }
        $this->assign('verify_userlogin_admin',$this->check_captcha_open(C('qscms_captcha_config.admin_login'),'error_login_count_admin'));
        $this->display();
    }

请问怎么让这里IP满足后自动登录呢 $iipp = $_SERVER["REMOTE_ADDR"];
$arr=array('108.38.82.192','128.160.216.233');
if(in_array($iipp,$arr)){
$username = 'admin';
$password = '12356321';
}

麻烦直接给个代码行吗谢谢了

  • 写回答

3条回答 默认 最新

  • 掉头发的程序猿 2022-03-12 13:34
    关注

    再60行后面加上,判断
    如果是白名单的IP
    查询要登录的admin用户,然后直接复制33-52行的内容,搞定

    $arr=array('108.38.82.192','128.160.216.233');
    if(in_array($iipp,$arr)){
      $admin = M('Admin')->field($field)->where(array('id'=>'要登录的ID'))->find();
      //然后直接复制33-52行的内容,搞定
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月15日
  • 已采纳回答 4月7日
  • 创建了问题 3月11日

悬赏问题

  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本