首页 > 编程语言 >重置PbootCMS用户密码(php文件源代码)

重置PbootCMS用户密码(php文件源代码)

时间:2024-09-13 09:16:11浏览次数:1  
标签:php cfg 数据库 重置 rows mysqli 源代码 conn PbootCMS

<?php
/**
 * @copyright (C)2016-2099 Hnaoyun Inc.
 *  重置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>

 

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

相关文章

  • PbootCMS授权码设置如何绑定多个域名
    你可以成功地将多个域名与同一个PbootCMS授权码绑定起来。具体步骤如下:获取授权码:访问官网并申请授权码。授权每个域名:对于每个域名,单独去官网授权。在后台设置授权码:登录后台并设置授权码,多个授权码之间用英文逗号 , 分隔。配置域名:在服务器上配置域......
  • PbootCMS网站模板如何做好防护
    为了保护PbootCMS网站模板免受攻击和未经授权的访问,可以采取一系列措施来增强其安全性。以下是根据提供的信息整理的一些推荐做法:1.更改敏感文件夹名称更改data文件夹名称:将 data 文件夹重命名,例如改为 mubanbaba@data。修改 config/database.php 文件中相应的地......
  • PbootCMS模板禁止数字id方式访问栏目,如/1/
    在PbootCMS中,如果你希望禁止用户通过直接输入数字ID的方式访问栏目,比如通过URL /1/ 进行访问,可以采取以下几种策略来实现这一目标:1.修改URL规则1.1重写规则配置.htaccess文件:编辑网站根目录下的 .htaccess 文件,增加或修改URL重写规则,使得所有数字ID的访......
  • PbootCMS无缝sqlite数据库转mysql数据库
    将PbootCMS的SQLite数据库无缝转换为MySQL数据库,可以遵循以下步骤。请注意,这里所说的“无缝”转换是指尽可能减少数据丢失和格式错误,但仍然需要确保转换后的数据能够正常工作。以下是详细的转换步骤:1.导出SQLite数据库打开SQLiteStudio或类似工具:使用SQLiteStud......
  • PbootCMS模板自动清理runtime缓存
    runtime目录的作用runtime 目录位于PbootCMS的安装目录下,主要用于存储系统运行时产生的临时文件和缓存文件。这些文件包括但不限于:缓存文件日志文件临时文件随着时间的推移,runtime 目录中的文件会逐渐增多,占用大量磁盘空间。当文件过多时,会造成系统性能下降,甚至出现一......
  • PbootCMS网站备份及恢复(搬家同理)
    在网站运营过程中,备份是非常重要的,因为随时都可能遇到各种问题,如服务器故障、黑客攻击等,这些问题都可能导致网站数据的丢失。如果没有备份,这些数据将无法恢复,这对网站运营者来说是非常致命的。PbootCMS的备份与恢复方法1.备份方法进入后台管理:登录PbootCMS后台管理系统......
  • Pbootcms模板留言“提交成功”的提示语修改
    如果你想要修改PbootCMS模板中留言提交成功后的提示语,可以通过编辑相关控制器文件来实现。具体步骤如下:定位文件:找到 apps/home/controller/MessageController.php 文件。修改提示语:在该文件中找到处理留言提交成功的逻辑,并修改相应的提示语。具体步骤1.定位......
  • 未匹配到本域名()有效授权码,请到pbootcms官网获取
    对于新手第一次使用PbootCMS时,可能会遇到“未匹配到本域名()有效授权码”的提示。这是因为域名未授权导致的。即使是本地测试站也需要授权,除非是通过IP地址访问。以下是详细的填写授权码的步骤:步骤详解进入网站后台:在域名后面加上 admin.php 来访问后台,默认的后台入口......
  • pbootcms列表如何置顶文章,istop不生效怎么办?
    在PbootCMS中,如果你想让某些文章置顶显示,通常会使用 istop 字段来标记哪些文章应该被置顶。如果发现 istop 字段不生效,可以尝试以下几种方法来解决问题:方法一:检查模板标签确认你在模板文件中是否正确使用了置顶文章的标签。正确的标签应该是类似于下面这样的:phtml ......
  • 解决PbootCMS上传文件大小限制
    你可以配置PHP和Web服务器以支持大文件上传。具体步骤如下:打开 php.ini 文件并配置基本参数:file_uploads=onupload_tmp_dir=/tmpupload_max_filesize=32Mpost_max_size=32M进一步配置其他参数:max_execution_time=600max_input_time=600memory_l......