微赞忘记管理密码的解决方法

微信开发 CN-P5 14760℃ 0评论

2016-04-21更新:顺手改了endtime过期的问题 判断时间已到期会设置到期时间为2026-01-01。

使用微赞经常因为更改后台管理密码、升级微赞等等原因造成忘记后台管理密码,还有的用户因为使用记住密码而忘记了自己的密码而微赞又没有找回密码的功能加上密码算法使用的密钥有两部分造成修改密码要小费事点,于是自己写了一个修改密码的php文件,复制下面的代码保存为getroot.php放到微赞的根目录访问 http://你的域名/getroot.php  输入要改密码的用户名和新的密码就行  。

code如下:

<?php
/*微秀修改密码工具1.0版
**使用后记得删除文件
**因为使用造成的安全问题 本人概不负责
**转载请注明保留版权信息、网址和作者
**BY:http://www.des8.com CN-P5 QQ:378779555
*/
require './framework/bootstrap.inc.php';
$tpl1=<<<EOF
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>微秀改密码</title>
    <link href="./web/resource/css/bootstrap.min.css" rel="stylesheet">
    <link href="./web/resource/css/font-awesome.min.css" rel="stylesheet">
    <link href="./web/resource/css/common.css" rel="stylesheet">
    <script src="./web/resource/js/lib/jquery-1.11.1.min.js"></script>
    <script src="./web/resource/js/app/util.js"></script>
    <script src="./web/resource/js/require.js"></script>
    <script src="./web/resource/js/app/config.js"></script>
    <!--[if lt IE 9]>
        <script src="./resource/js/html5shiv.min.js"></script>
        <script src="./resource/js/respond.min.js"></script>
    <![endif]-->
    <script type="text/javascript">
    if(navigator.appName == 'Microsoft Internet Explorer'){
        if(navigator.userAgent.indexOf("MSIE 5.0")>0 || navigator.userAgent.indexOf("MSIE 6.0")>0 || navigator.userAgent.indexOf("MSIE 7.0")>0) {
            alert('您使用的 IE 浏览器版本过低, 推荐使用 Chrome 浏览器或 IE8 及以上版本浏览器.');
        }
    }
    </script>
</head>
<body>
<style>
    @media screen and (max-width:767px){.login .panel.panel-default{width:90%; min-width:300px;}}
    @media screen and (min-width:768px){.login .panel.panel-default{width:70%;}}
    @media screen and (min-width:1200px){.login .panel.panel-default{width:50%;}}
</style>
<div>
    <div>
        <a href="./?refresh" ></a>
    </div>
    <div style="margin-bottom:5em;">
        <div class="panel panel-default container">
            <div>
EOF;
$tpl2=<<<EOF
                <form action="getroot.php" method="post" role="form" onsubmit="return formcheck();">
                    <label class="inline input-lg">请输入要修改的管理用户名</label>
                    <div class="form-group input-group">                        
                        <div><i class="fa fa-user"></i></div>
                        <input name="username" type="text" class="form-control input-lg" placeholder="请输入管理用户名">
                    </div>
                    <label class="inline input-lg">请输入新密码</label>
                    <div class="form-group input-group">
                        <div><i class="fa fa-unlock-alt"></i></div>
                        <input name="password" type="password" class="form-control input-lg" placeholder="请输入新的登录密码">
                    </div>
                    <div>
                        <div>
                                <input name="do" value="ck" type="hidden" />
                                <input type="submit" name="submit" value="修改密码" class="btn btn-primary btn-lg" />
                        </div>
                    </div>
                </form>
EOF;
$tpl3=<<<EOF
            </div>
        </div>
    </div>
    <div class="center-block footer" role="footer">
        <div>
            <a href="http://www.des8.com">黑白的自留地</a>&nbsp;&nbsp;</div>
        <div>
            powered by www.des8.com        </div>
    </div>
</div>
<script>
function formcheck() {
    if($('#remember:checked').length == 1) {
        cookie.set('remember-username', $(':text[name="username"]').val());
    } else {
        cookie.del('remember-username');
    }
    return true;
}
require(['jquery'],function($){
    var h = document.documentElement.clientHeight;
    $(".login").css('min-height',h);
});
</script>
</body>
</html>
EOF;

function user_single2($user_or_uid) {
    $user = $user_or_uid;
    if (empty($user)) {
        return false;
    }
    if (is_numeric($user)) {
        $user = array('uid' => $user);
    }
    if (!is_array($user)) {
        return false;
    }
    $where = ' WHERE 1 ';
    $params = array();
    if(!empty($user['uid'])) {
        $where .= ' AND `uid`=:uid';
        $params[':uid'] = intval($user['uid']);
    }
    if(!empty($user['username'])) {
        $where .= ' AND `username`=:username';
        $params[':username'] = $user['username'];
    }
    if(!empty($user['email'])) {
        $where .= ' AND `email`=:email';
        $params[':email'] = $user['email'];
    }
    if(!empty($user['status'])) {
        $where .= " AND `status`=:status";
        $params[':status'] = intval($user['status']);
    }
    if (empty($params)) {
        return false;
    }
    $sql = 'SELECT * FROM ' . tablename('users') . " $where LIMIT 1";
    $record = pdo_fetch($sql, $params);
    if(empty($record)) {
        return false;
    }
    if(!empty($user['password'])) {
        $password = user_hash($user['password'], $record['salt']);
        if($password != $record['password']) {
            return false;
        }
    }
    return $record;
}
function user_update2($user) {
    if(empty($user['uid']) || !is_array($user)) {
        return false;
    }
    $record = array();
    if(!empty($user['uid'])) {
        $record['uid'] = intval($user['uid']);
    }
    if(!empty($user['username'])) {
        $record['username'] = $user['username'];
    }
    if(!empty($user['salt'])) {
        $record['salt'] = $user['salt'];
    }
    if(!empty($user['password'])) {
        $record['password'] = user_hash2($user['password'], $user['salt']);
    }
    if(!empty($user['lastvisit'])) {
        $record['lastvisit'] = (strlen($user['lastvisit']) == 10) ? $user['lastvisit'] : strtotime($user['lastvisit']);
    }
    if(!empty($user['lastip'])) {
        $record['lastip'] = $user['lastip'];
    }
    if(isset($user['joinip'])) {
        $record['joinip'] = $user['joinip'];
    }
    if(isset($user['remark'])) {
        $record['remark'] = $user['remark'];
    }
    $time = time();
    if($user['endtime'] <= $time) {
        $record['endtime'] = '1767200461';
    }
    if($user['starttime'] == 0) {
        $record['starttime'] = $time;
    }
    if(isset($user['status'])) {
        $status = intval($user['status']);
        if (!in_array($status, array(1,2))) {
            $status = 2;
        }
        $record['status'] = $status;
    }
    if (isset($user['groupid'])) {
        $record['groupid'] = $user['groupid'];
    }
    if(empty($record)) {
        return false;
    }
    return pdo_update('users', $record, array('uid' => intval($user['uid'])));
}
function user_hash2($passwordinput, $salt) {
    global $_W;
    $passwordinput = "{$passwordinput}-{$salt}-{$_W['config']['setting']['authkey']}";
    return sha1($passwordinput);
}

if( $_GPC['submit']=='修改密码'){
    $user=array('username'=>$_GPC['username']);
    $user=user_single2($user);
    $user['salt'] = random(8);
    $user['password'] = $_GPC['password'];
    $user2=user_update2($user);
    if($user2==1){
        $message = '<div class="alert alert-success">恭喜您!密码修改成功,您现在可以:<a style="margin-left: 10px;" class="btn btn-success" href="./web/index.php?c=user&a=login&">登陆</a><a style="margin-left: 10px;" class="btn btn-success" href="./web/index.php">访问网站首页</a><br /></div>';
    }else{
        $message = '<div class="alert alert-danger">密码修改失败!请联系维护人员:QQ 378779555</div>';
    }
    echo $tpl1.$message.$tpl3;
}else{
    echo $tpl1.$tpl2.$tpl3;
}
?>


转载请注明:黑白的自留地 » 微赞忘记管理密码的解决方法

喜欢 (2)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(12)个小伙伴在吐槽
  1. 输入按确认后,提示找不到getroot.php~
    Lit2015-12-17 14:07 回复
    • 如果你的文件名不是getroot.php需要修改54行那个提交地址为你当前的文件名
      CN-P52015-12-29 08:52 回复
  2. 新版微赞添加了到期时间 如果修改密码后显示账号到期 请自行去数据库修改下endtime
    CN-P52015-12-29 08:53 回复
    • 在哪修改endtime
      在哪修改2016-02-24 14:00 回复
    • 新版微赞添加了到期时间 如果修改密码后显示账号到期 请自行去数据库修改下endtime,请问下在哪张表
      Sj2016-03-18 08:06 回复
    • 怎么改,我这提示已到期 修改后
      liking2016-04-01 17:33 回复
  3. 问下,endtime在那张表?找了半天没找到
    waini2016-03-18 15:26 回复
  4. 2016-04-21更新:顺手改了endtime过期的问题 判断时间已到期会设置到期时间为2026-01-01
    CN-P52016-04-21 15:41 回复
  5. 不管用是怎么回事呢
    since2016-06-24 10:41 回复
    • 有可能你使用的时候文件名写错了或者微赞升级到更新的版本了
      CN-P52016-07-18 16:19 回复
  6. 感谢,正在到处找呢
    WEWFS2016-12-29 21:25 回复
  7. [强] [强]
    WEWFS2016-12-29 21:26 回复