pbootcms模板忘记后台密码怎么找回_

wdzsjl 1个月前 (10-10) 阅读数 15 #其它CMS

此工具用于忘记PbootCMS后台用户账号密码时进行重置。新建一个php文件,然后写入下面代码。稍后上传网站根目录,  访问文件就可以进入重置页面, 后续根据提示操作即可。 

<?php /**  * @copyright (C)2016-2099 Hnaoyun Inc.  * @author XingMeng  * @email hnxsh@foxmail.com  * @date 2017年3月13日  *  默认主页  */ namespace app\admin\controller;  use core\basic\Controller; use app\admin\model\IndexModel;  class IndexController extends Controller {      private $model;      public function __construct()     {         $this->model = new IndexModel();     }      // 登录页面     public function index()     {         if (session('sid')) {             location(url('admin/Index/home'));         }         $this->assign('admin_check_code', $this->config('admin_check_code'));         $this->display('index.html');     }      // 主页面     public function home()     {         // 手动修改数据名称         if (get('action') == 'moddb') {             if ($this->modDB()) {                 alert_back('修改成功!');             } else {                 alert_back('修改失败!');             }         }          // 删除修改后老数据库(上一步无法直接修改删除)         if (issetSession('deldb')) {             @unlink(ROOT_PATH . session('deldb'));             unset($_SESSION['deldb']);         }          $dbsecurity = true;         // 如果是sqlite数据库,并且路径为默认的,则标记为不安全         if (get_db_type() == 'sqlite') {             // 数据库配置含有默认名字则进行修改             if (strpos($this->config('database.dbname'), 'pbootcms') !== false) {                 if (get_user_ip() != '127.0.0.1' && $this->modDB()) { // 非本地测试时尝试自动修改数据库名称                     $dbsecurity = true;                 } else {                     $dbsecurity = false;                 }             } elseif (file_exists(ROOT_PATH . '/data/pbootcms.db')) { // 存在多余的默认数据库文件则改名                 rename(ROOT_PATH . '/data/pbootcms.db', ROOT_PATH . '/data/' . get_uniqid() . '.db');             }         } elseif (file_exists(ROOT_PATH . '/data/pbootcms.db')) {             rename(ROOT_PATH . '/data/pbootcms.db', ROOT_PATH . '/data/' . get_uniqid() . '.db');         }          $this->assign('dbsecurity', $dbsecurity);          if (!session('pwsecurity')) {             location(url('/admin/Index/ucenter'));         }          $this->assign('server', get_server_info());         $this->assign('branch', $this->config('upgrade_branch') == '3.X.dev' ? '3.X.dev' : '3.X');         $this->assign('revise', $this->config('revise_version') ?: '0');         $this->assign('snuser', $this->config('sn_user') ?: '0');         $this->assign('site', get_http_url());          $this->assign('user_info', $this->model->getUserInfo(session('ucode')));          $this->assign('sum_msg', model('admin.content.Message')->getCount());          // 内容模型菜单         $model = model('admin.content.Model');         $models = $model->getModelMenu();         foreach ($models as $key => $value) {             $models[$key]->count = $model->getModelCount($value->mcode)->count;         }          $this->assign('model_msg', $models);         $this->display('system/home.html');     }      // 异步登录验证     public function login()     {         if (!$_POST) {             return;         }          // 在安装了gd库时才执行验证码验证         if (extension_loaded("gd") && $this->config('admin_check_code') && strtolower(post('checkcode', 'var')) != session('checkcode')) {             json(0, '验证码错误!');         }          // 就收数据         $username = post('username');         $password = post('password');         $checkcode = post('checkcode');         $formcheck = post('formcheck');          if (!preg_match('/^[\x{4e00}-\x{9fa5}\w\-\.@]+$/u', $username)) {             json(0, '用户名含有不允许的特殊字符!');         }          if (!$username) {             json(0, '用户名不能为空!');         }          if (!$password) {             json(0, '密码不能为空!');         }            if (!$formcheck) {             json(0, '表单提交校验失败,请刷新后重试!');         }          if (!!$time = $this->checkLoginBlack()) {             $this->log('登录锁定!');             json(0, '您登录失败次数太多已被锁定,请' . $time . '秒后再试!');         }          // 执行用户登录         $where = array(             'username' => $username,             'password' => encrypt_string($password)         );          // 判断数据库写入权限         if ((get_db_type() == 'sqlite') && !is_writable(ROOT_PATH . $this->config('database.dbname'))) {             json(0, '数据库目录写入权限不足!');         }          if (!!$login = $this->model->login($where)) {              session_regenerate_id(true);             session('sid', encrypt_string(session_id() . $login->id)); // 会话标识             session('M', M);              session('id', $login->id); // 用户id             session('ucode', $login->ucode); // 用户编码             session('username', $login->username); // 用户名             session('realname', $login->realname); // 真实名字              if ($where['password'] != '14e1b600b1fd579f47433b88e8d85291') {                 session('pwsecurity', true);             }              session('acodes', $login->acodes); // 用户管理区域             if ($login->acodes) { // 当前显示区域                 session('acode', $login->acodes[0]);             } else {                 session('acode', '');             }              session('rcodes', $login->rcodes); // 用户角色代码表             session('levels', $login->levels); // 用户权限URL列表             session('menu_tree', $login->menus); // 菜单树             session('area_map', $login->area_map); // 区域代码名称映射表             session('area_tree', $login->area_tree); // 用户区域树              $this->log('登录成功!');             json(1, url('admin/Index/home'));         } else {             $this->setLoginBlack();             $this->log('登录失败!');             session('checkcode', mt_rand(10000, 99999)); // 登录失败,随机打乱原有验证码             json(0, '用户名或密码错误!');         }     }      // 退出登录     public function loginOut()     {         session_unset();         location(url('/admin/Index/index'));     }      // 用户中心,修改密码     public function ucenter()     {         if ($_POST) {             $username = post('username'); // 用户名             $realname = post('realname'); // 真实姓名             $cpassword = post('cpassword'); // 现在密码             $password = post('password'); // 新密码             $rpassword = post('rpassword'); // 确认密码              if (!$username) {                 alert_back('用户名不能为空!');             }             if (!$cpassword) {                 alert_back('当前密码不能为空!');             }              if (!preg_match('/^[\x{4e00}-\x{9fa5}\w\-\.@]+$/u', $username)) {                 alert_back('用户名含有不允许的特殊字符!');             }              $data = array(                 'username' => $username,                 'realname' => $realname,                 'update_user' => $username             );              // 如果有修改密码,则添加数据             if ($password) {                 if ($password != $rpassword) {                     alert_back('确认密码不正确!');                 }                 $data['password'] = encrypt_string($password);                 if ($data['password'] != '14e1b600b1fd579f47433b88e8d85291') {                     session('pwsecurity', true);                 } else {                     session('pwsecurity', false);                 }             }              // 检查现有密码             if ($this->model->checkUserPwd(encrypt_string($cpassword))) {                 if ($this->model->modUserInfo($data)) {                     session('username', post('username'));                     session('realname', post('realname'));                     $this->log('用户资料成功!');                     success('用户资料修改成功!', -1);                 }             } else {                 $this->log('用户资料修改时当前密码错误!');                 alert_location('当前密码错误!', -1);             }         }         $this->display('system/ucenter.html');     }      // 切换显示的数据区域     public function area()     {         if ($_POST) {             $acode = post('acode');             if (in_array($acode, session('acodes'))) {                 session('acode', $acode);                 cookie('lg', $acode); // 同步切换前台语言             }             location(url('admin/Index/home'));         }     }      // 清理缓存     public function clearCache()     {         if (get('delall')) {             $rs = path_delete(RUN_PATH);         } else {             $rs = (path_delete(RUN_PATH . '/cache') && path_delete(RUN_PATH . '/complile') && path_delete(RUN_PATH . '/config') && path_delete(RUN_PATH . '/upgrade'));         }         cache_config(); // 清理缓存后立即生成新的配置         if ($rs) {             if (extension_loaded('Zend OPcache')) {                 opcache_reset(); // 在启用了OPcache加速器时同时清理             }             $this->log('清理缓存成功!');             alert_back('清理缓存成功!', 1);         } else {             $this->log('清理缓存失败!');             alert_back('清理缓存失败!', 0);         }     } 	 	// 清理系统缓存     public function clearOnlySysCache()     {         if (get('delall')) {             $rs = path_delete(RUN_PATH);         } else {             $rs = (path_delete(RUN_PATH . '/complile') && path_delete(RUN_PATH . '/config') && path_delete(RUN_PATH . '/upgrade'));         }         cache_config(); // 清理缓存后立即生成新的配置         if ($rs) {             if (extension_loaded('Zend OPcache')) {                 opcache_reset(); // 在启用了OPcache加速器时同时清理             }             $this->log('清理缓存成功!');             alert_back('清理缓存成功!', 1);         } else {             $this->log('清理缓存失败!');             alert_back('清理缓存失败!', 0);         }     } 	     // 清理会话     public function clearSession()     {         ignore_user_abort(true); // 后台运行         set_time_limit(7200);         ob_start();         $output['code'] = 1;         $output['data'] = '执行成功,后台自动清理中!';         $output['tourl'] = '';         echo json_encode($output);         ob_end_flush();         flush();         $rs = path_delete(RUN_PATH . '/session', false, array(             'sess_' . session_id()         ));     }      // 文件上传方法     public function upload()     {         $upload = upload('upload');         if (is_array($upload)) {             json(1, $upload);         } else {             json(0, $upload);         }     }      // 检查是否在黑名单     private function checkLoginBlack()     {         // 读取黑名单         $ip_black = RUN_PATH . '/data/' . md5('login_black') . '.php';         if (file_exists($ip_black)) {             $data = require $ip_black;             $user_ip = get_user_ip();             $lock_time = $this->config('lock_time') ?: 900;             $lock_count = $this->config('lock_count') ?: 5;             if (isset($data[$user_ip]) && $data[$user_ip]['count'] >= $lock_count && time() - $data[$user_ip]['time'] < $lock_time) {                 return $lock_time - (time() - $data[$user_ip]['time']); // 返回剩余秒数             }         }         return false;     }      // 添加登录黑名单     private function setLoginBlack()     {         // 读取黑名单         $ip_black = RUN_PATH . '/data/' . md5('login_black') . '.php';         if (file_exists($ip_black)) {             $data = require $ip_black;         } else {             $data = array();         }          // 添加IP         $user_ip = get_user_ip();         $lock_time = $this->config('lock_time') ?: 900;         $lock_count = $this->config('lock_count') ?: 5;         if (isset($data[$user_ip]) && $data[$user_ip]['count'] < $lock_count && time() - $data[$user_ip]['time'] < $lock_time) {             $data[$user_ip] = array(                 'time' => time(),                 'count' => $data[get_user_ip()]['count'] + 1             );         } else {             $data[$user_ip] = array(                 'time' => time(),                 'count' => 1             );         }          // 写入黑名单         check_file($ip_black, true);         return file_put_contents($ip_black, "<?php\nreturn " . var_export($data, true) . ";");     }      // 修改数据库名称     private function modDB()     {         $file = CONF_PATH . '/database.php';         $sname = $this->config('database.dbname');         $dname = '/data/' . get_uniqid() . '.db';         $sconfig = file_get_contents($file);         $dconfig = str_replace($sname, $dname, $sconfig);         if (file_put_contents($file, $dconfig)) {             if (!copy(ROOT_PATH . $sname, ROOT_PATH . $dname)) {                 file_put_contents($file, $sconfig); // 回滚配置             } else {                 session('deldb', $sname);                 return true;             }         }         return false;     } }

 

wx.jpg ywfw.jpg
热门