Saya memuat turun kod sumber thinkphp5.3 dari Internet untuk belajar Memandangkan tiada fail pemasangan, ia hanya boleh dipasang melalui import pangkalan data Selepas mengimport pangkalan data dan mengkonfigurasi fail sambungan pangkalan data, cari
admin:admin dalam. jadual pentadbir dalam phpmydmin
kata laluan:12eefdf664f0e07e65a2c35e01e98d29
Saya menyahsulit kata laluan dan mendapat kata laluan teks yang jelas: o8889t
Apabila saya log masuk ke latar belakang akaun yang salah, ia menyimpan kod sumber dan kata laluan yang salah. Saya menukar kata laluan dalam jadual pentadbir kepada e10adc3949ba59abbe56e05 7f20f883e Teks yang jelas ialah: 123456
sekali lagi Apabila saya log masuk, saya masih mendapati akaun atau kata laluan itu salah Saya ingin tahu kaedah penyulitan yang digunakan oleh kata laluan di bahagian belakang. Atau bagaimana saya boleh berjaya log masuk ke latar belakang? Tiga fail disenaraikan, tolong beri saya nasihat, terima kasih banyak.
Backend login AdminController.class.php kod adalah seperti berikut:
-------------------------------- -------------- ------------------------------------ --------------
< ?php
namespace AdminController;
gunakan ThinkController;
class IndexController memanjangkan Controller
{
indeks fungsi awam()
{
susun atur(palsu);
$ ini ->paparan();
}
//Log masuk
fungsi awam log masuk()
{
susun atur(salah);
jika(salah);
'post.adminuser') dan I('post.adminpwd')) { $adminuser=I('post.adminuser'); $adminpwd=I('post.adminpwd'); //Ingat akaun $ingat=Saya('siaran.ingat' ); jika(!kosong($ingat)) { kuki('ingat',$ingat,3600*24*30) ; cookie('loginname',$adminuser,3600*24*30 ); cookie('loginpwd',$adminpwd,3600*24*30); }lain { , cookie('ingat' null); cookie('loginname',null); cookie ('loginpwd',null); } $auth=I('post.auth'); $verify = baru ThinkVerify(); $res=$verify->check($ auth, ''); if($res==false) { $this->assign('error',' Kod pengesahan tidak betul! '); $this->display('index'); exit(); } $admin=new AdminModelAdminModel(); $res=$admin->where("adminname ='$adminuser'")->find(); if($res) { $status=$res['status']; if($status==0) {$this->assign('error','This administrator has been disabled!');
$this->display('index');
exit();
} else {
$ kata laluan=$res['kata laluan'];
//penyulitan MD5
$pwd=$admin->encrypt($adminpwd);
if($password!=$pwd)
{
$ this ->tetapkan('error','Nama pengguna atau kata laluan salah!');
$this->display('index');
exit();
} else {
//Hakim Sama ada kumpulan pentadbir dilumpuhkan
$group_id=$res['group_id'];
$AdminGroup=new AdminModelAdminGroupModel();
$res_g=$AdminGroup->where("id=$group_id")-> medan('status')->find();
if($res_g['status']=='1')
{
//Kemas kini status log masuk
$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'=> ($res2) { //Simpan pengguna SESI $_SESSION['admin_id']=$res['uid']; [']_Sgroup =$res['group_id']; //Lompat halaman $this->redirect('System/index'); } else { $this->assign('error',' Daftar masuk gagal! '); $this->display('index'); } }lain { $this->assign('error','Kumpulan pentadbir yang anda sertai telah dilumpuhkan!' ; ' Pentadbir tidak wujud '); $this->display('index'); } }lain { $this->assign('error','Akaun nombor dan kata laluan tidak boleh Kosong! '); $this->display('index'); } } //Log keluar public function log out() $_SESSION['admin_id ']=null;S $ _Session ['a_group_id'] = null;
// lompat halaman $ this- & gt; ubah hala ('Indeks/Indeks'); = tatasusunan( 'tamat tempoh' => 1800, // Masa tamat tempoh kod pengesahan 'useImgBg' => palsu, // Gunakan imej latar belakang // Saiz fon kod pengesahan (px) > palsu, // Sama ada hendak menambah bunyi gt; sition tanpa tetapan 'bg' => tatasusunan(243, 251, 254), //Warna latar belakang ) ; $verify=new ThinkVerify($config); /** * Keluarkan kod pengesahan dan simpan nilai kod pengesahan dalam sesi * Format kod pengesahan yang disimpan dalam sesi ialah: array('verify_code' => 'Verification code value', 'verify_time' => ; 'Masa penciptaan Kod Pengesahan'); **/ $verify->entry(); } } -------- ------------------------- ------------------------- ------------------------- ------------------------- ------------------------- ------------------------- --- Fail kedua AdminController.class.php kod adalah seperti berikut: ----- ---------------------------- ---------------------- ---------------------------- - /** *Pengurusan pentadbir */ ruang nama AdminController ; gunakan AdminCommonControllerAuthController; class AdminController memanjangkan AuthController { indeks fungsi awam() { if('I('get.search')
=I('get.search')get.search');
$where="adminname='$search' or email='$search' or phone='$search'";
}
if(I('get.group_id'))
{
id $group =I('get.group_id');
$where="group_id='$group_id'";
}
if(I('get.group_name'))
{
= I $group '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')=='' dan I('get. group_id')=='' and I('get.group_name')=='')
{
$where='1';
}
$Admin=New AdminModelAdminModel(
$count $);=$Pentadbir->di mana($di mana)->kira();
$per = 15;
jika($_GET['p'])
{
$p=$_GET['p '].显示的记录数(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('tema','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% 第 '.I('p',1).' 页/共 %TOTAL_PAGE% 页 ('.$per.' 条/页 共 %TOTAL_ROW% 条)');
$show= $Page->show();// 分页显示输出
adminlist = $Admin->where($where)->page($p.','.$per)->select();
$this->assign('alist',$adminlist) ;// 赋值数据集
$this->assign('page',$show);
$this->display();
}
}
理员 awam fungsi tambah() {//Dapatkan senarai kumpulan pentadbir
$group=new AdminModelAdminGroupModel();
$grouplist=$group->getGroupList2();
$this->assign('glist',$grouplist);
if(I('post.'))
{
if(I('post.adminname'))
{
$adminname=I('post.adminname');
$Admin=new AdminModelAdminModel();
$res=$Admin->where("adminname='$adminname'")->find();
if($res)
{
$str='Xthe Username sudah wujud';
echo $str;
exit();
}lain {
$str='';
$a='a';
}
}
}
}
}I('post.password') dan I('post.password2'))
{
$password=I('post.password');
$password2=I('post.password2') ;
jika (strlen($password2)<=5)
{
$str='X kata laluan tidak kurang daripada 6 aksara';
echo $str;
keluar();
}lain {
if($password!=$password2)
{
$str='XKata laluan berbeza dua kali';
echo $str;
exit();
}lain {
=$str ;
$a.='a';
}
}
}
jika(saya('post.email'))
{
.=I (' $emel);
if(is_email($email))
{
$str='';
}lain {
$str='X format e-mel salah';
echo $str;
() ) { $str=''; }lain { $str='X format nombor mudah alih tidak betul'; echo $str; keluar(); //} Penyulitan 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,
=mail ,
'phone'=>$phone,
'province'=>trim(I('post.province')),
'city'=>trim(I('post.city') ),
'group_id'=>$group_id,
'status'=>$status,
'register_time'=>$register_time,
= 'register_
= 'register_p' masa '=>date('Y-m-d H:i:s') ); $res=$Admin->add($data); if($res) { '; }lain { gema '0'; } } }lain { $ini-&g;;
} //编辑管理员 public function edit($uid) { //获取管理员信息 $Admin=min.AdminModel baru(g=$Admin-Model(
);sg($uid);
$ this->assign('msg',$aMsg);
//获取管理员组列表
$group=D('admin_group');
$grouplist=;$group-get
$this->assign('glist',$grouplist); if(IS_POST) { //var_dump(I('post.') );exit;'post.adminname'))
{
$adminname=I('post.adminname');
$res=$Admin->where("adminname='$adminname' dan uid!='$uid '")->find();
if($res)
{
$error='X该用户名已存在';
;$this-&grort) ;
$ini->paparan();
keluar();
}
}
$email=saya(');
emel=saya(');.
.
if(is_phone($phone)!==true)
{
$error2='X手机号码格式不正确';
$this->'assign($error $this->this($error this) ->paparan();
keluar();
}
}
$group_id=I('post.group_id');
$numlogin_num=I('$ post. status=I('post.status');
$data=array(
'adminname'=>$adminname,
'email'=>$emel,
;= $telefon,
'province'=>trim(I('post.province')),
'city'=>trim(I('post.city')),
'group_id'=> ;$group_id,
'login_num'=>$login_num,
'status'=>$status,
);
if(I(
password')password')
=I('post.password'); //MD5加密 $pwd=$Admin->encrypt($password); $data['password']=$pwd; } $res=$Admin->where("uid=$uid")->save($data); if($res!==false) { susun atur(salah); $ ini->kejayaan('编辑管理员成功!',U('index'),3); }lain { susun atur(salah); $this->error(!) ); } }lain { $ini->paparan(); } }管用状态
fungsi awam bertukar status($id,$status) . id")->save($data);
if($res===false)
{
echo '0';
} else {
echo '1';
echo '1';
}//Padam pentadbir
fungsi awam del($id)
{
$Admin=New AdminModelAdminModel();
$res=$Admin->where("uid=$id")- & ;delete();
if($res===false)
{
echo '0';
} else {
echo '1';
}
}
}
}
}
Tukar kata laluan Public function changepwd() { if($_SESSION['admin_id']!='') { $admin_id=$_SESSION['admin_id' (];if(
'post.')) { $oldpwd=I('post.oldpwd'); if($oldpwd=='') { $this->assign('error1' , 'Kata laluan asal tidak boleh kosong! '); $this->display(); exit(); } $pwd1=I('post.pwd1'); $pwd2= Saya('post.pwd2'); if($pwd1=='') { $this->assign('error2','Kata laluan baharu tidak boleh kosong!'); $ ini ->display(); exit(); } if($pwd2=='') { $this->assign('error3','Ulang kata laluan tidak boleh kosong ! '); $ini->paparan(); keluar(); } jika($pwd1==$pwd2) { if(strlen)&pwd2 ) { //Sahkan sama ada kata laluan asal betul $Admin=new AdminModelAdminModel(); $res=$Admin->checkPwd($admin_id,$oldpwd);$
if($)
{
//Tukar kata laluan
$newpwd=$Admin->encrypt($pwd2);
$data=array(
'kata laluan'=>$newpwd );
$newpwd
res2=$ Admin->where("uid=$admin_id")->save($data);
susun atur(false);
if($res2===false)
{
$ini -> ralat('Gagal menukar kata laluan! ');
}lain {
$this->success('Berjaya kata laluan diedit!');
}
} else {
$this->assign(''error kata laluan asal) salah ! ');
$ini->paparan();
keluar();
} }lain {$this->assign('error3','Panjang kata laluan baharu mestilah tidak kurang daripada 5 aksara!');
$this->display();
exit();
}
}lain {
$this->assign('error3','Dua kata laluan berbeza!');
$this->display();
exit();
}
} lain {
$this->display();
}
}lain {
$this->redirect('Index/index');
}
}
}
}
}
}
---- ------------------------------------------------ ---- ------------------------------------------------ ---- ------------------------------------------------ ---- ------ Fail ketiga adalah seperti berikut: ruang nama AdminCommonController; use ThinkController; use ThinkAuth; Pengawalan kebenaran/
/
class AuthController extends Controller { protected function _initialize(){ //Apabila sesi tidak wujud, akses terus tidak dibenarkan if(!$_SESSION['admin_id']) {(
false)layout ; $this-> ;error('Belum log masuk, melompat ke halaman log masuk',U('Indeks/indeks')); } //Apabila sesi wujud, tiada kebenaran pengesahan diperlukan $not_check = tatasusunan ( 'Admin/changepwd','System/index','System/index_show','System/cleancache','System/clearrubbish',//Tukar kata laluan, halaman utama sistem, 'ArticleCat/deloldimg',' Article/deloldimg','Article/deloldbigimg','Article/deloldimg',//Padamkan imej asal kategori artikel, padamkan imej asal artikel, padamkan imej besar asal bagi artikel, padamkan fail asal artikel 'GoodsCat/deloldimg',// Padamkan imej asal kategori produk ); //Permintaan nama Modul operasi semasa/nama kaedah jika (dalam_array(CONTROLLER_NAME.'/'.ACTION_NAME, $not_check)) { return true; CONTROLLER_NAME.'/'.ACTION_NAME,$_SESSION['admin_id']) dan $_SESSION['a_group_id' ]!='1') { susun atur(salah); gema 'Tiada kebenaran!';mati (); $this->error('Tiada kebenaran'); } } }
Selesai, terima kasih