搜索

首页  >  问答  >  正文

TP5后台登录不了,请大佬赐教,谢谢

在网上下载了个thinkphp5.3的源码学习,因为没有安装文件,只能通过数据库导入的方式安装,数据库导入和配置好数据库连接文件后,在phpmydmin里面的admin表里找到

admin:admin

password:12eefdf664f0e07e65a2c35e01e98d29

我把password解密后得到明文密码:o8889t

在登录源码后台的时候一直提示密码或者账号错误,然后我把admin表里面的password改成e10adc3949ba59abbe56e057f20f883e 明文是:123456

再次登录还是发现提示账号或者密码错误,我想知道这个后台的密码是什么加密方式。或者要怎么样后台才能登录成功。列出了三个文件,请大佬赐教,感激不尽。

后台登录AdminController.class.php代码如下:

----------------------------------------------------------------------------------

<?php

namespace Admin\Controller;

use Think\Controller;

class IndexController extends Controller

{

    public function index()

    {

    layout(false);

        $this->display();

    }

    

    //登录

    public function loginin()

    {

    layout(false);

    if(I('post.adminuser') and I('post.adminpwd'))

    {

    $adminuser=I('post.adminuser');

    $adminpwd=I('post.adminpwd');

   

    //记住账号

    $remember=I('post.remember');

    if(!empty($remember))

    {

    cookie('remember',$remember,3600*24*30);

    cookie('loginname',$adminuser,3600*24*30);

    cookie('loginpwd',$adminpwd,3600*24*30);

    }else {

    cookie('remember',null);

    cookie('loginname',null);

    cookie('loginpwd',null);

    }

   

    $auth=I('post.auth');

    $verify = new \Think\Verify();

    $res=$verify->check($auth, '');

    if($res==false)

    {

    $this->assign('error','验证码不正确!');

    $this->display('index');

    exit();

    }

    $admin=new \Admin\Model\AdminModel();

    $res=$admin->where("adminname='$adminuser'")->find();

    if($res)

    {

    $status=$res['status'];

    if($status==0)

    {

    $this->assign('error','该管理员已被禁用!');

    $this->display('index');

    exit();

    }else {

    $password=$res['password'];

    //MD5加密

    $pwd=$admin->encrypt($adminpwd);

    if($password!=$pwd)

    {

    $this->assign('error','用户名或密码错误!');

    $this->display('index');

    exit();

    }else {

    //判断管理员组是否被禁用

    $group_id=$res['group_id'];

    $AdminGroup=new \Admin\Model\AdminGroupModel();

    $res_g=$AdminGroup->where("id=$group_id")->field('status')->find();

    if($res_g['status']=='1')

    {

    //更新登录状态

    $ip=getIP();

    $login_num=$res['login_num']+1;

    $data=array(

    'last_login_time'=>date('Y-m-d H:i:s'),

    'last_login_ip'=>$ip,

    'login_num'=>$login_num

    );

    $res2=$admin->where("adminname='$adminuser'")->save($data);

    if($res2)

    {

    //保存用户SESSION

    $_SESSION['admin_id']=$res['uid'];

    $_SESSION['a_group_id']=$res['group_id'];

    //跳转页面

    $this->redirect('System/index');

    }else {

    $this->assign('error','登录失败!');

    $this->display('index');

    }

    }else {

    $this->assign('error','您所在的管理员组已被禁用!');

    $this->display('index');

    exit();

    }

    }

    }

    }else {

    $this->assign('error','该管理员不存在!');

    $this->display('index');

    }

    }else {

    $this->assign('error','账号、密码不能为空!');

    $this->display('index');

    }

    }

    

    //退出登录

    public function loginout()

    {

    $_SESSION['admin_id']=null;

    $_SESSION['a_group_id']=null;

    //跳转页面

    $this->redirect('Index/index');

    }

    

    //生成验证码

    public function verify()

    {

    ob_end_clean();

    $config = array(

    'expire'    =>  1800,            // 验证码过期时间(s)

    'useImgBg'  =>  false,           // 使用背景图片

    'fontSize'  =>  10,              // 验证码字体大小(px)

    'useCurve'  =>  false,            // 是否画混淆曲线

    'useNoise'  =>  false,            // 是否添加杂点

    'imageH'    =>  30,               // 验证码图片高度

    'imageW'    =>  80,               // 验证码图片宽度

    'length'    =>  4,               // 验证码位数

    'fontttf'   =>  '5.ttf',              // 验证码字体,不设置随机获取

    'bg'        =>  array(243, 251, 254),  // 背景颜色

    );

    $verify=new \Think\Verify($config);

    /**

    * 输出验证码并把验证码的值保存的session中

    * 验证码保存到session的格式为: array('verify_code' => '验证码值', 'verify_time' => '验证码创建时间');

    **/

    $verify->entry();

    }

}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

第二个文件AdminController.class.php代码如下:

----------------------------------------------------------------------------------

<?php

/**

 * 管理员管理

 */

namespace Admin\Controller;

use Admin\Common\Controller\AuthController;

class AdminController extends AuthController 

{

    public function index()

    {

    if(I('get.search'))

    {

    $search=I('get.search');

    $where="adminname='$search' 或电子邮件='$search' 或电话='$search'";

    }

    if(I('get.group_id '))

    {

    $group_id=I('get.group_id');

    $where="group_id='$group_id'";

    }

    if(I('get.group_name'))

    {

    $group_name=I('get.group_name');

    $res_ag=D('AdminGroup')->where("title='$group_name'")->field('id')->find();

    $group_id=$ res_ag['id'];

    $where="group_id='$group_id'";

    }

    if(I('get.search')== '' 和 I('get.group_id')=='' 和 I('get.group_name')=='')

    {

    $where='1';

    }

    $Admin=new \Admin\Model\AdminModel();

    $count=$Admin->where($where)->count() ;

    $per = 15;

    if($_GET['p'])

    {

    $p=$_GET['p' ];

    }else {

    $p=1;

    }

    $Page= new \Think\Page($count,$per) ;//实例化分页类确定总记录数和每页显示的记录数(25)

    $Page->rollPage=10; // 分页栏 每页显示的页数

    $Page -> setConfig('header','共%TOTAL_ROW%条');

    $Page -> setConfig('first','首页');

    $Page ->; setConfig('last','共%TOTAL_PAGE%页');

    $Page -> setConfig('prev','上一页');

    $Page ->; setConfig('下一页','下一页');

    $Page -> setConfig('link','indexpagenumb');//pagenumb 会替换成页码

    $Page -> setConfig('主题','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% 第 '.I('p',1).' 页/共 %TOTAL_PAGE% 页 (<font color="red ">'.$per.'条/页共%TOTAL_ROW%条)');

    $show= $Page->show();//分页显示输出

     

    $adminlist = $Admin->where($where)->page($p.','.$per)->select();

    $this->assign('alist',$adminlist);//分配数据集

    $this->assign('page',$show);

        $ this->display();

    }

    

    //新增管理员

    public function add()

{

#

    //获取管理员组列表

    $group=new \Admin\Model\AdminGroupModel();

    $grouplist=$group->getGroupList2();

    $this->assign('glist',$grouplist);

    if(I('post.'))

    {

    if(I('post.adminname'))

    {

    $adminname=I('post.adminname');

    $Admin=new \Admin\Model\AdminModel();

    $res=$Admin->where("adminname='$adminname'")->find();

    if($res)

    {

    $str='X该用户名已存在';

    echo $str;

    exit();

    }else {

    $str='';

    $a='a';

    }

    }

   

    if(I('post.password') and I('post.password2'))

    {

    $password=I('post.password');

    $password2=I('post.password2');

    if (strlen($password2)<=5)

    {

    $str='X密码不少于6位';

    echo $str;

    exit();

    }else {

    if($password!=$password2)

    {

    $str='X两次密码不相同';

    echo $str;

    exit();

    }else {

    $str='';

    $a.='a';

    }

    }

    }

   

    if(I('post.email'))

    {

    $email=I('post.email');

    if(is_email($email))

    {

    $str='';

    }else {

    $str='X邮箱格式不正确';

    echo $str;

    exit();

    }

    }

   

    if(I('post.phone'))

    {

    $phone=I('post.phone');

    if(is_phone($phone))

    {

    $str='';

    }else {

    $str='X手机号码格式不正确';

    echo $str;

    exit();

    }

    }

   

    if($a=='aa')

    {

    $adminname=I('post.adminname');

    $password2=I('post.password2');

    //MD5加密

    $pwd=$Admin->encrypt($password2);

    $email=I('post.email');

    $phone=I('post.phone');

    $group_id=I('post.group_id');

    $status=I('post.status') ;

    $register_time=date('Y-m-d H:i:s');

    //php获取ip的算法

    $ip = ($_SERVER["HTTP_VIA “])? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];

    $ip = ($ip) ? $ip : $_SERVER["REMOTE_ADDR"];

    $data=array(

    'adminname'=>$adminname,

    'password'=>$ pwd,

    'email'=>$email,

    'phone'=>$phone,

    '省份'=>trim(I('post .province')),

    'city'=>trim(I('post.city')),

    'group_id'=>$group_id,

    'status'=>$status,

    'register_time'=>$register_time,

    'register_ip'=>$ip,

    'last_login_time'= >date('Y-m-d H:i:s')

    );

    $res=$Admin->add($data);

    if($ res)

    {

    echo '1';

    }else {

    echo '0';

    }

    }

    }else {

    $this->display();

    }

    }

    

    //编辑管理员

    public function edit($uid)

    {

    //获取管理员信息

    $Admin= new \Admin\Model\AdminModel();

    $aMsg=$Admin->getAdminMsg($uid);

    $this->assign('msg',$aMsg) ;

    //获取管理员组列表

    $group=D('admin_group');

    $grouplist=$group->getGroupList2();

    $this->assign('glist',$grouplist);

   

    if(IS_POST)

    {

    // var_dump(I('post.'));exit;

    if(I('post.adminname'))

    {

    $adminname=I('post .adminname');

    $res=$Admin->where("adminname='$adminname' and uid!='$uid'")->find();

    if($res)

    {

    $error='X该用户名存在';

已   $this->assign('error',$error );

    $this->display();

    exit();

    }

    }

   

    $email=I('post.email');

    if($email)

    {

    if(is_email($email)!==true)

    {

    $error1='X邮箱格式不正确';

    $this->assign('error1',$error1);

    $this->display();

    exit();

    }

    }

   

    $phone=I('post.phone');

    if($phone)

    {

    if(is_phone($phone)!==true)

    {

    $error2='X手机号码格式不正确';

    $this- >分配('error2',$error2);

    $this->display();

    exit();

    }

}

    $group_id=I('post.group_id');

    $login_num=I('post.login_num');

    $status=I('post .status');

   

    $data=array(

    'adminname'=>$adminname,

    'email'=>$电子邮件,

    '电话'=>$电话,

    '省'=>trim(I('post.province')),

    '城市' =>trim(I('post.city')),

    'group_id'=>$group_id,

    'login_num'=>$login_num,

    'status'=>$status,

    );

    if(I('post.password'))

    {

    $password =I('post.password');

    //MD5加密

    $pwd=$Admin->加密($password);

    $data['密码']=$pwd;

    }

    $res=$Admin->where("uid=$uid")->save($data);

    if($res!==false)

    {

    layout(false);

    $this->success('编辑管理员成功!', U('index'),3);

    }else {

    布局(false);

    $this->error('操作失败!');

    }

    }else {

    $this->display();

    }

    }

    

    //修改管理员取消状态

    public function changestatus($id,$status)

    {

    $data=array(

    'status'=>$status

    );

    $Admin=new \Admin\Model\AdminModel();

    $res=$Admin ->where("uid=$id")->save($data);

    if($res===false)

    {

    echo '0';

    }else {

    echo '1';

    }

    }

    

    //删除管理员

    public function del($id)

    {

    $Admin=new \Admin\Model\AdminModel();

    $res=$Admin->where("uid=$id")->delete();

    if($res===false)

    {

    echo '0';

    }else {

    echo '1';

    }

    }

    

    //修改密码

    public function changepwd()

    {

    if($_SESSION['admin_id']!='')

    {

    $admin_id=$_SESSION['admin_id'];

    if(I('post.'))

    {

    $oldpwd=I('post.oldpwd');

    if($oldpwd=='')

    {

    $this->assign('error1','原密码不能为空!');

    $this->display();

    exit();

    }

    $pwd1=I('post.pwd1');

    $pwd2=I('post.pwd2');

    if($pwd1=='')

    {

    $this->assign('error2','新密码不能为空!');

    $this->display();

    exit();

    }

    if($pwd2=='')

    {

    $this->assign('error3','重复密码不能为空!');

    $this->display();

    exit();

    }

    if($pwd1==$pwd2)

    {

    if(strlen($pwd2)>5)

    {

    //验证原密码是否正确

    $Admin=new \Admin\Model\AdminModel();

    $res=$Admin->checkPwd($admin_id,$oldpwd);

    if($res)

    {

    //修改密码

    $newpwd=$Admin->encrypt($pwd2);

    $data=array(

    'password'=>$newpwd

    );

    $res2=$Admin->where("uid=$admin_id")->save($data);

    layout(false);

    if($res2===false)

    {

    $this->error('修改密码失败!');

    }else {

    $this->success('编辑密码成功!');

    }

    }else {

    $this->assign('error1','原密码错误!');

    $this->display();

    exit();

    }

    }else {

    $this->assign('error3','新密码长度不少于5位!');

    $this->display();

    exit();

    }

    }else {

    $this->assign('error3','两次密码不相同!');

    $this->display();

    exit();

    }

    }else {

    $this->display();

    }

    }else {

    $this->redirect('Index/index');

    }

    }

}

------------------------------------------------------------------------------------------------------------------------------------------------------------------

第三个文件如下:

<?php

namespace Admin\Common\Controller;

use Think\Controller;

use Think\Auth;

//权限认证

class AuthController extends Controller {

protected function _initialize(){

//session不存在时,不允许直接访问

if(!$_SESSION['admin_id'])

{

layout(false);

$this->error('还没有登录,正在跳转到登录页',U('Index/index'));

}

//session存在时,不需要验证的权限

$not_check = array(

   'Admin/changepwd','System/index','System/index_show','System/cleancache','System/clearrubbish',//修改密码、系统首页、

'ArticleCat/deloldimg','Article/deloldimg','Article/deloldbigimg','Article/deloldfile',//删除文章分类原图片、删除文章原图片、删除文章原大图片、删除文章原文件

'GoodsCat/deloldimg',//删除商品分类原图片

);

//当前操作的请求                 模块名/方法名

if(in_array(CONTROLLER_NAME.'/'.ACTION_NAME, $not_check))

{

return true;

}

$auth = new Auth();

if(!$auth->check(CONTROLLER_NAME.'/'.ACTION_NAME,$_SESSION['admin_id']) and $_SESSION['a_group_id']!='1')

{

layout(false);

echo '没有权限!';die();

$this->error('没有权限');

}

}

}

AA1171 天前1139

全部回复(5)我来回复

  • A

    A2021-11-09 23:26:42

    已经解决,谢谢

    回复
    1
  • 初学编程

    我遇到完全相同的问题,请问楼主是怎么解决的?有劳告知一下,非常感谢!

    初学编程 · 2021-11-28 00:07:00
  • 取消回复