exit; } //проверяем среди простых смертных if ($token and $_POST['pwd']) { //необычный логин //вытащили всех $sql = "SELECT * FROM `mandarinko_admins`"; $r = mysql_query($sql); for ($data = array(); $row = mysql_fetch_assoc($r); $data[] = $row) { } //проверяем, совпадет ли хоть с кем-нибудь foreach ($data as $el) { $cnt = $el['token_cnt']; $secret = $el['token_seed']; $pass = $_POST['pwd']; $hotp = new cHotp(); $cur_cnt = $hotp->authOTP($secret, $pass, $cnt, $token); if ($cur_cnt) { //зашли, круто, блин $loggedin['asuser'] = $el['id']; $cnt = $cur_cnt; break; } } if ($loggedin['asuser']) { //обновили пользователю счетчик в базе, все довольны и машут флажками $sql = "UPDATE `mandarinko_admins` SET `token_cnt` = '" . $cnt . "' WHERE `id` = '" . $el['id'] . "'"; mysql_query($sql); } } if ($loggedin['asuser'] || ($_POST['login'] and $_POST['pwd'])) {
<?php if ($_POST['savestatic']) { if ($_POST['seed'] && $_POST['cnt'] && $_POST['number']) { $seed = mysql_real_escape_string($_POST['seed']); $cnt = mysql_real_escape_string($_POST['cnt']) - 2; $hotp = new cHotp(); $cur_cnt = $hotp->authOTP($seed, $_POST['number'], $cnt, $admin_data['tokenAuth']); if (!$cur_cnt) { $ERROR[] = 'Введеные для токена данные неверны. Система категорически отказывается что-либо делать при таком раскладе.'; } } foreach ($_POST['right'] as $k => $el) { if ($el == 'on') { $RIGHTS[] = $k; } } $RIGHTS = implode(',', $RIGHTS); if (strlen($_POST['pwd']) > 1) { $newpwd = "`pass` = '" . mysql_real_escape_string($_POST['pwd']) . "',"; } if ($seed && $cnt) { $newtoken = "`token_seed`='" . $seed . "', `token_cnt`='" . $cur_cnt . "',"; } if (!$ERROR) { $sql = "UPDATE `mandarinko_admins` SET\n\t\t\t" . $newtoken . "\n\t\t\t" . $newpwd . "\r\n\t\t\t`rights` = '" . $RIGHTS . "'\n\t\tWHERE `id`= '" . mysql_real_escape_string($_GET['edit']) . "'"; mysql_query($sql) or die('DB ERROR: CAN\'T UPDATE ADMIN'); header('Location: /' . $URL[1] . '/' . $URL[2] . '/' . $URL[3]); exit; } }
<?php if ($_GET['pwd'] && $_GET['token']) { include $_SERVER['DOCUMENT_ROOT'] . '/_config.php'; include $_SERVER['DOCUMENT_ROOT'] . '/admin/inc/hotp.class.php'; $admin_seeds = explode("\r", file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/control/tokens')); foreach ($admin_seeds as $k => $el) { $admin_seeds[$k] = trim($el); } $sql = "SELECT `value` FROM `mandarinko_base` WHERE `param`='admin_cnt1' OR `param`='admin_cnt2'"; $r = mysql_query($sql); for ($data = array(); $row = mysql_fetch_assoc($r); $data[] = $row) { } $hotp = new cHotp(); foreach ($admin_seeds as $k => $el) { $cur = $k + 1; //какой админ $cur_cnt = $hotp->authOTP($el, $_GET['pwd'], $data[$k]['value'], $_GET['token']); if ($cur_cnt) { //зашли под админом $loggedin['asadmin'] = $cur; $cnt = $cur_cnt; break; } } if ($loggedin['asadmin']) { //обновили ему счетчик в базе $sql = "UPDATE `mandarinko_base` SET `value`='" . $cnt . "' WHERE `param`='admin_cnt" . $loggedin['asadmin'] . "'"; mysql_query($sql); } echo $loggedin['asadmin'];