function loginFromDatabase($_uid) { global $mysql; $user = $mysql->query('select * from users where ID=' . $_uid)->fetch(); if (!$user) { return -1; } set_cookie($user['cookie']); if (isset($user['bduss'])) { //删除数据库里的无用列 $mysql->query('ALTER TABLE `users` DROP `bduss`'); } global $cookie_jar, $bduss; if (!isset($cookie_jar['BDUSS'])) { return false; } $bduss = $cookie_jar['BDUSS']; //原本想把bdstoken存进数据库,想到需要检验cookie是否合法,还是改成动态获取 global $bdstoken; $bdstoken = validateCookieAndGetBdstoken(); if (!$bdstoken) { $bduss = false; return false; } global $uid, $username, $md5; $uid = $_uid; $username = $user['username']; $md5 = $user['newmd5'] === '' ? false : $user['newmd5']; return true; }
if (!isset($_POST['name']) || $_POST['name'] == '') { echo '<h1>错误:请输入用户名</h1>'; } else { if (!isset($_POST['password']) || $_POST['password'] == '') { echo '<h1>错误:请输入密码</h1>'; } else { if (isset($_POST['code_string'])) { $result = login($_POST['name'], $_POST['password'], $_POST['code_string'], $_POST['captcha']); } else { $result = login($_POST['name'], $_POST['password']); } if (!$result['errno']) { global $bduss; $mysql->prepare('insert into users values (null,?,?,"") on duplicate key update cookie=?')->execute([$_POST['name'], get_cookie(), get_cookie()]); wlog('添加用户:' . $_POST['name']); $check = validateCookieAndGetBdstoken(); //应对百度的新登录机制 if (!$check) { ?> <h1>登录成功,但访问百度云失败,可能百度改了验证机制,请联系开发者!</h1> <p>您可以参照 <a href="https://github.com/NijiharaTsubasa/BaiduPanAutoReshare/issues/15">https://github.com/NijiharaTsubasa/BaiduPanAutoReshare/issues/15</a> 手动更新此用户的cookies。<br /><a href="switch_user.php">返回</a></p> <?php die; } alert_error('用户【' . $_POST['name'] . '】添加成功!', 'switch_user.php'); } if ($result['errno'] == 4) { echo '<h1>密码错误</h1>'; } else { if ($result['errno'] == 257) { echo '<h1>请输入验证码</h1>';