首页 > 编程语言 >忘记PbootCMS后台用户账号密码时进行重置resetpw.php

忘记PbootCMS后台用户账号密码时进行重置resetpw.php

时间:2024-09-06 21:37:18浏览次数:9  
标签:rows cfg 数据库 重置 resetpw mysqli php conn PbootCMS

<?php
/**
 * @copyright (C)2016-2099 Hnaoyun Inc.
 * @license This is not a freeware, use is subject to license terms
 * @author XingMeng
 * @email [email protected]
 * @date 2018年11月17日
 *  重置PbootCMS用户密码
 */
// 设置字符集编码、IE文档模式
header('Content-Type:text/html; charset=utf-8');
header('X-UA-Compatible:IE=edge,chrome=1');

// 设置中国时区
date_default_timezone_set('Asia/Shanghai');

// 引入配置文件
$db = require __DIR__.'/config/database.php';


//执行修改	
if ($_POST) {
    
    // 数据库配置文件
    $db_path = __DIR__ . @$_POST['config'];
	
	//纠正路径
	$db = require $db_path;
    
    // 检查配置文件是否存在
    if (! file_exists($db_path)) {
        die('数据库配置文件不存在,请检查路径是否填写正常!');
    }
    
    // 要重置的用户名
    $username = @$_POST['username'];
    
    // 要设置的密码
    $password = @$_POST['password'];
    
    if (! $username) {
        exit('需要重置密码的用户名不能为空!');
    }
    
    if (! $password) {
        exit('请输入需要设置的新密码!');
    }
    
    // 修改密码
    $sql = "UPDATE ay_user SET password='" . md5(md5($password)) . "' where username='$username'";
    if ($db['database']['type'] == 'sqlite' || $db['database']['type'] == 'pdo_sqlite') {
        $conn = get_sqlite(__DIR__ . $db['database']['dbname']);
        $result = $conn->exec($sql) or $conn->lastErrorMsg();
        if ($conn->changes()) {
            echo '恭喜您,重置成功!';
        } else {
            echo '不好意思,重置失败,请核对用户名!(sqlite)';
        }
    } else {
        $conn = get_mysql($db['database']);
        $result = $conn->query($sql) or mysqli_error($conn);
        if ($conn->affected_rows > 0) {
            echo '恭喜您,重置成功!';
        } else {
            echo '不好意思,重置失败,请核对用户名!(mysql)';
        }
    }
}

// 连接数据库,接受数据库连接参数,返回数据库连接对象
function get_sqlite($dbfile)
{
    if (extension_loaded('SQLite3')) {
        try {
            $conn = new SQLite3($dbfile);
            $conn->busyTimeout(15 * 1000); // 设置繁忙延迟时间
        } catch (Exception $e) {
            die("读取数据库文件失败:" . iconv('gbk', 'utf-8', $e->getMessage()));
        }
    } else {
        error('未检测到您服务器环境的SQLite3数据库扩展,请检查php.ini中是否已经开启该扩展!');
    }
    return $conn;
}

// 连接数据库,接受数据库连接参数,返回数据库连接对象
function get_mysql($cfg)
{
    if (! extension_loaded('mysqli')) {
        die('未检测到您服务器环境的mysqli数据库扩展,请检查php.ini中是否已经开启该扩展!');
    }
    // 优化>php5.3版本 在win2008以上服务器连接
    if ($cfg['host'] == 'localhost') {
        $cfg['host'] = '127.0.0.1';
    }
    
    $conn = @new Mysqli($cfg['host'], $cfg['user'], $cfg['passwd'], $cfg['dbname'], $cfg['dbport']);
    if (mysqli_connect_errno()) {
        die("连接数据库服务器失败:" . iconv('gbk', 'utf-8', mysqli_connect_error()));
    }
    $conn->set_charset('utf8'); // 设置编码
    return $conn;
}

// 获取用户名
$sql = 'select username from ay_user';
if ($db['database']['type'] == 'sqlite' || $db['database']['type'] == 'pdo_sqlite') {
	$conn = get_sqlite(__DIR__ . $db['database']['dbname']);
	$result = $conn->query($sql) or $conn->lastErrorMsg();
	$rows = array();
	while (! ! $row = $result->fetchArray(1)) {
		if ($row) {
			$out = new \stdClass();
			foreach ($row as $key => $value) {
				$out->$key = $value;
			}
			$row = $out;
		}
		$rows[] = $row;
	}
} else {
	$conn = get_mysql($db['database']);
	$result = $conn->query($sql) or mysqli_error($conn);
	$rows = array();
	if ($conn->affected_rows > 0) {
		 while (! ! $objects = $result->fetch_object()) {
			$rows[] = $objects;
		}
	} 
}
?>

<!doctype html>
<html lang="zh">
<head>
	<meta charset="utf-8">
	<title>PbootCMS-密码重置工具</title>
</head>
<body>

<form class="mb-5" action=""  method="post">
 <p>配置文件:<input type="text" name="config" value="/config/database.php"  placeholder="请填写数据库配置文件路径"></p>
 <p>用 户 名 :
 <select name="username">
 <?php
	foreach($rows as $k=>$v){
		echo "<option value='".$v->username."'>".$v->username."</option>";
	}
 ?>
 </select>
 </p>
 <p>新 密 码 :<input type="text" name="password" placeholder="请输入新密码"> </p>
 <p><button type="submit" class="btn btn-info mb-2">提交</button></p>
</form>

</body>
</html>

 

标签:rows,cfg,数据库,重置,resetpw,mysqli,php,conn,PbootCMS
From: https://www.cnblogs.com/hwrex/p/18401047

相关文章

  • PbootCms内页打不开的常见情况汇总
    当遇到PbootCMS内页无法正常访问的情况,例如点击任何链接都跳转到首页或内页访问报错,这些问题大多数情况下是由于伪静态配置不当造成的。以下是一些解决方案,可以帮助你解决这些问题:解决方案方案一:关闭伪静态,使用兼容模式如果你不想处理伪静态配置的复杂性,可以选择关闭伪静态功能......
  • pbootcms后台登入密码忘记,如何重置管理密码
    当你使用PbootCMS搭建的网站忘记后台登录密码时,可以通过PbootCMS官方提供的重置密码工具来重置密码。以下是详细的步骤和注意事项:1.下载重置工具下载重置工具解压包:访问PbootCMS官网,下载重置密码工具解压包。通常可以在官网的支持或文档部分找到这个工具。2.解压并上......
  • pbootcms手机访问不解决办法
    如果PbootCMS网站在手机设备上访问时出现问题,比如显示404错误或者布局错乱等问题,可以采取以下措施来解决:1.明确站点结构首先需要确定你的站点是采用哪种结构:PC+WAP结构:即分别有电脑版和手机版两个版本。响应式设计:一个版本自动适应不同设备。单一PC版:只有电脑版,没有专门......
  • PbootCMS网站出现登录失败,表单提交校验失败等情况怎么办?
    1.登录请求发生错误,表单提交校验失败问题描述:登录时提示“登录失败:pbootcms登录请求发生错误,表单提交校验失败”。解决方法:检查服务器环境:确认服务器环境配置正确。检查PHP版本是否合适。删除 runtime 文件夹:使用FTP客户端连接到服务器。找到 runtime 文件......
  • PHP8面向对象快速入门五 接口 抽象类
    在PHP中,接口是一种定义方法但不实现它们的方式。接口可以被类实现,使得这些类承诺实现接口中定义的所有方法。接口主要用于定义类的共同行为,而不涉及具体的实现细节。以下是PHP接口的基本用法:定义接口interfaceAnimal{publicfunctionmakeSound();publicfunct......
  • pbootcms网站后台编辑器加载不出来怎么办?
    设你使用的是Notepad++或VSCode编辑器,具体步骤如下:打开文件:使用FTP客户端连接到服务器。找到文件 foot.html 并下载到本地。删除JS脚本引用:打开 foot.html 文件。找到第12行的JS脚本引用:删除这一行。保存文件:保存修改后的 foot.html 文件。上传文件......
  • pbootcms提示:“未检测到您服务器环境的sqlite3数据库扩展...”
    解决方法主要有两种,需根据具体情况进行选择。 第一种方法是将数据库配置连接驱动改为pdo_sqlite。首先,按照相关提示,把数据库配置连接驱动修改为pdo_sqlite。随后,可依照图文进行操作。具体而言,打开数据库配置文件,即位于/config/database.php的文件。在该文件中,找到'type'这......
  • pbootcms出现登录失败,表单提交校验失败等情况怎么办?
    针对PbootCMS登录失败的不同情况,可以采取相应的解决措施。以下是针对三种常见登录失败情况的具体解决方案:1.表单提交校验失败如果你遇到“表单提交校验失败”,可以尝试以下方法:解决方案:刷新页面重试:直接刷新当前页面,尝试重新登录。删除 runtime 文件夹:使用FTP客户......
  • pbootcms后台登录验证码看不清怎么回事?没有图片
    原因分析验证码看不清的问题通常是由于PHP版本不支持某些图像处理函数所致。PbootCMS对PHP版本有一定的要求,特别是在处理图像验证码时。解决方法修改PHP版本推荐使用PHP7.3、7.2或5.6,这三个版本经过广泛测试,表现良好。首选PHP7.3,因为它提供了更好的性能和安全性。其......
  • pbootcms网站后台突然登录不了怎么解决
    如果你使用的是PbootCMSV3.2.5之前的版本,并且遇到了无法登录后台的情况,可以按照以下步骤进行排查和修复:步骤1:删除 runtime 文件夹找到 runtime 文件夹:通常 runtime 文件夹位于网站根目录下。如果找不到,可以尝试搜索整个项目目录中的 runtime 文件夹。删除......