TP5 バックエンドにログインできません。アドバイスをお願いします。よろしくお願いします。
A
A 2021-11-09 23:07:05
0
5
1106

thinkphp5.3 のソース コード スタディをインターネットからダウンロードしました。インストール ファイルがないため、データベースのインポートを通じてのみインストールできます。データベースをインポートし、データベース接続ファイルを構成した後、 phpmydmin の admin テーブル。

admin:admin

password:12eefdf664f0e07e65a2c35e01e98d29

パスワードを復号化し、クリアテキストのパスワードを取得しました: o8889t

ソースにログインするときコード バックエンドでは、間違ったパスワードまたはアカウント番号の入力を求めるプロンプトが表示され続けます。その後、管理テーブルのパスワードを e10adc3949ba59abbe56e057f20f883e に変更しました。プレーン テキストは: 123456

再度ログインしても、アカウントがまたはパスワードが間違っています バックエンドパスワードの暗号化方式を知りたいです。または、バックグラウンドで正常にログインするにはどうすればよいですか? 3つのファイルがリストされています。アドバイスをお願いします。よろしくお願いします。

バックエンド ログイン AdminController.class.php コードは次のとおりです:

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

<?php

namespace Admin\Controller;

use Think\Controller;

class IndexController extends Controller

{

public functionindex()

{

layout(false);

$this->display();

}

//Login

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->gt; assign(' エラー','確認コードが間違っています! ');

$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関数loginout()

{

$_SESSION['admin_id']=null;

$_SESSION['a_group_id']=null;

//ページに移動

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

}

//検証コードを生成

public function verify()

{

ob_end_clean();

$config = array(

'expire' => 1800, // 検証コードの有効期限 (秒)

'useImgBg' => false, //背景画像を使用します

'fontsize' = & gt; 10, // コードのフォント サイズ (PX) を確認します

'usecurve' = & gt; // 混同曲線を描画するかどうか

'usenoise '= & Gt; false, // その他の点を追加するかどうか

' Imageh '= & GT; 30, // 認証コード画像の高さ

' Imagew '= & gt; 80, // 検証コード 画像幅

'length' = & gt; 4, // 検証コード番号

'fontttf' = & gt

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

);

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

/**

* 認証コードを出力し、認証コードの値をセッションに保存します

* 認証コードをセッションに保存する形式は次のとおりです: array('verify_code' => '認証コードvalue', 'verify_time' => '検証コード作成時刻');

**/

$verify->entry();

}

}

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

2 番目のファイル AdminController.class.php コードは次のとおりです:

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

#<?php

#/**

* 管理者管理

*/

名前空間 Admin \Controller;

Use Admin\Common\Controller\AuthController;

クラス AdminController は AuthController を拡張します

{

パブリック関数 Index()

{

if(I('get.search'))

{

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

$where="adminname='$search' または email='$search' または Telephone='$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')== '' and I('get.group_id')=='' and 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('next','下一页');

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

$Page -> setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% 第 '.I('p',1).' 页/共 %TOTAL_PAGE% 页 (<font color="red ">'.$per.'</font> 条/页 共 %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') および 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='X2 つのパスワードは同じではありません';

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,

'province'=>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- >assign('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'=>$ email,

'phone'=>$phone,

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

'city' =>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->encrypt($password);

$data['パスワード']=$pwd;

}

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

if($res!==false)

{

layout(false);

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

}else {

layout(false);

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

}

}else {

$this->display();

}

}

## //修改管理员禁用状態态

public functionchangestatus($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 functionchangepwd()

{

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(

'パスワード'=>$newpwd

);

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

レイアウト(false);

if($res2===false)

{

$this->error('パスワードの変更に失敗しました! ');

}else {

} $this->success('パスワード編集成功!');

}

}else {

$this->assign('error1','元のパスワードが間違っています!');

$this->display();

exit() ;# ##### }###### }それ以外 {###

$this->assign('error3','新しいパスワードの長さは 5 文字以上である必要があります!');

$this->display();

exit( );

}

}else {

$this->assign('error3','2 つのパスワードは同じではありません!') ;

$this->display();

exit();

}

}else {

$this ->display() ;

}

}else {

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

}

}

}

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

3 番目のファイルは次のとおりです:

<?php

namespace Admin\Common\Controller;

use Think\Controller;

use Think\ Auth;

//権限認証

class AuthController extends Controller {

protected function _initialize(){

//Whenセッションが存在しません。直接アクセスは許可されていません

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

{

layout(false);

$this->error('まだログインしていません。ログイン ページにジャンプします', U('インデックス/インデックス'));

}

//セッションが存在する場合、検証は必要ありません

$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']) および $_SESSION[' a_group_id']!='1')

{

layout(false);

echo '許可がありません!';die();

$this->error('許可がありません') ;

}

}

}

A
A

全員に返信(1)
A

解決しました、ありがとうございます

いいねを押す +1
  • 返事 私もまったく同じ問題に遭遇しました。元の投稿者はどのように解決しましたか?教えていただけますか、よろしくお願いします!
    初学编程 著者 2021-11-28 00:07:00
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート