PBOOTCMS 忘记密码重置方法

    本文地址:http://tongxinmao.com/Article/Detail/id/399

    <?php

    /**

     * @copyright (C)2016-2099 Hnaoyun Inc.

     * @license This is not a freeware, use is subject to license terms

     * @author XingMeng

     * @email hnxsh@foxmail.com

     * @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');


    if ($_POST) {

        

        // 数据库配置文件

        $db_path = __DIR__ . @$_POST['config'];

        

        // 检查配置文件是否存在

        if (! file_exists($db_path)) {

            die('数据库配置文件不存在,请检查路径是否填写正常!');

        }

        

        // 要重置的用户名

        $username = @$_POST['username'];

        

        // 要设置的密码

        $password = @$_POST['password'];

        

        if (! $username) {

            exit('需要重置密码的用户名不能为空!');

        }

        

        if (! $password) {

            exit('请输入需要设置的新密码!');

        }

        

        // 引入配置文件

        $db = require $db_path;

        

        // 修改密码

        $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;

    }


    ?>


    <!doctype html>

    <html>

    <head>

    <meta charset="utf-8">

    <title>PbootCMS-密码重置工具</title>

    </head>

    <body>


    <form action=""  method="post">

     <p>配置文件:<input type="text" name="config" value="/config/database.php"  placeholder="请填写数据库配置文件路径"></p>

     <p>用 户 名 :<input type="text" name="username" placeholder="请输入用户名"></p>

     <p>新 密 码 :<input type="text" name="password" placeholder="请输入新密码"> </p>

     <p><button type="submit" class="btn btn-info mb-2">提交</button></p>

    </form>


    </body>

    </html>


    上一篇:268条PCB Layout设计规范
    下一篇:IBEACON技术及应用场景