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日

悬赏问题

  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图