很久没登录,不出意外又忘了密码。搜了一圈,全是教你手动改 typecho_users 表的,不仅操作繁琐,由于 Hash 加密版本问题还不见得适合。

分享一个通过 Typecho 内置 Hash 方法重置密码的脚本。不操作数据库,直接调用程序内核,确保 100% 成功。
操作步骤:

将以下代码保存为 reset-pwd.php。上传至网站根目录。
访问 https://你的域名/reset-pwd.php?k=123,即可。

增加了安全访问 ?k=123,防止忘记删除还有被别人扫描并访问。
自动识别:变量 $user 填数字就是改 UID,填字符串就是改 用户名,一行代码自动切换。

【重要!重要!重要!】 用完一定记得立即删除该脚本。重置为简单密码后,立即登录修改为强密码,或者直接重置为一个强密码(生成密码工具)。最后不要长期保留任何运维脚本在公网目录。

<?php
/**
 * Typecho  1.2.1 重置管理员密码脚本
 * 用完请立即删除!
 */
<?php
include 'config.inc.php';
$key  = '123';        // 访问时加的后缀,如 ?k=123
$user = 1;            // 这里填 UID (如 1) 或 用户名 (如 'admin')
$pass = '123456';     // 新密码

if (($_GET['k'] ?? '') !== $key) die('Key Error');

$db  = Typecho_Db::get();
$col = is_numeric($user) ? 'uid' : 'name';
$pw  = Typecho_Common::hash($pass);

$db->query($db->update('table.users')->rows(['password' => $pw])->where("$col = ?", $user));

//echo "Success! New Password: $pass. DELETE ME NOW!";
--- EOF ---
订阅本站:feed
声明:博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

标签: none

添加新评论