刚开始用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也会更加了解。