刚开始用ThinkCMF的时候,在本地环境和数据库不停迁移测试的时候,经常忘记登陆密码。虽然可以使用MD5重新加密,再在数据库重置密码,但“懒惰”使人进步,每次找秘钥重新加密在改数据库毕竟麻烦,所以写一段代码来方便使用。

php代码
文件地址:复制进安装模板的首页index.html中记得加php标签
以下代码仅限于你拥有FTP权限,如果想做一些踩线的活动,早点洗洗睡吧!┑( ̄Д  ̄)┍
//获取 database 文件内容
$type = Config('database.type'); // 数据库类型
$hostname = Config('database.hostname'); // 服务器地址
$database = Config('database.database'); // 数据库名
$username = Config('database.username'); // 用户名
$password = Config('database.password'); // 密码
$hostport = Config('database.hostport'); // 端口
$charset = Config('database.charset'); // 数据库编码
$prefix = Config('database.prefix'); // 数据库表前缀
$authcode = Config('database.authcode'); // cookie前缀
// 建立 MySQL 服务器链接
$conn = mysqli_connect($hostname, $username, $password);
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
if(! $conn )
{
die("-----服务器连接失败: " . mysqli_error($conn) . "-----<br/>");
}else {
echo "-----服务器链接成功-----<br>".
"类型:" .$type. "<br>".
"地址:" .$hostname. "<br>".
"数据库名:" .$database. "<br>".
"用户名:" .$username. "<br>".
"密码:" .$password. "<br>".
"端口:" .$hostport. "<br>".
"编码:" .$charset. "<br>".
"表前缀:" .$prefix. "<br>".
"Cookie前缀:" .$authcode. "<br>";
}
// 链接数据表
mysqli_select_db( $conn, $database );
//重置账号密码
echo "-----重置账号密码-----<br>";
$an = "hydra";
$pw = "123456";
function cmf_pass($pw, $authcode)
{
$result = "###" . md5(md5($authcode . $pw));
return $result;
}
$psw = cmf_pass($pw, $authcode);
echo "账号:" . $an."<br>";
echo "密码:" . $pw."<br>";
echo "密文:" . $psw."<br>";
$user_id = 10001;
$id = 99;
// 创建新用户并赋予管理员权限
$create_sql = "INSERT INTO cmf_user (id, user_type, user_status, user_login, user_pass)
VALUES ('$user_id', '1', '1', '$an', '$psw')";
$create_sql2 = "INSERT INTO cmf_role_user (id, role_id, user_id)
VALUES ('$id', '1', '$user_id')";
echo "-----插入数据表-----<br/>";
if ($conn->query($create_sql) === TRUE) {
echo "创建新用户:OK!" . "<br>";
} else {
echo "错误: " . $conn->error . "<br>";
}
if ($conn->query($create_sql2) === TRUE) {
echo "管理员权限:OK!" . "<br>";
} else {
echo "错误: " . $conn->error . "<br>";
}
//读取数据
$sql = 'SELECT id, user_type,
user_status, user_login, user_pass
FROM cmf_user';
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('-----无法读取数据: ' . mysqli_error($conn) . "-----<br/>");
}else {
echo "-----读取数据表成功-----<br/>";
}
// 输出信息
if (mysqli_num_rows($retval) > 0) {
while($row = mysqli_fetch_assoc($retval)) {
if($row["user_type"]==1){
echo "ID: " . $row["id"].
" - Type: " . $row["user_type"].
" - 状态:" . $row["user_status"] .
" - 用户名:" . $row["user_login"] .
" - pass:" . $row["user_pass"]. "<br>";
}
}
}
mysqli_close($conn);
看完这段代码,有没有发现这种方式很危险,直接在模板中获取到database文件,所以个人建议下载网上的模板虽然方便,但毕竟安全性和熟悉程度不高。
所以建议初学者模板自己写,写的多了,对ThinkCMF也会更加了解。
星之书笔记