public function user() { $_DCOOKIE = array(); $this->cookiepre = $this->cookiepre . substr(md5($this->cookiepath . '|' . $this->cookiedomain), 0, 4) . '_'; $prelength = strlen($this->cookiepre); foreach ($_COOKIE as $key => $val) { if (substr($key, 0, $prelength) == $this->cookiepre) { $_DCOOKIE[substr($key, $prelength)] = Lua::clean($val); } } unset($prelength); if (isset($_DCOOKIE['auth'])) { $authkey = md5($this->authkey . $_SERVER['HTTP_USER_AGENT']); $auth = Lua::clean(explode("\t", $this->authcode($_DCOOKIE['auth'], 'DECODE', $authkey))); list($discuz_pw, $discuz_uid) = empty($auth) || count($auth) < 2 ? array('', '') : $auth; if ($discuz_uid) { Doo::db()->reconnect('X15'); $query = "select u.uid,u.username,u.password,p.gender from pre_common_member u left join pre_common_member_profile p on p.uid=u.uid where u.uid='{$discuz_uid}'"; $query = str_replace('pre_', $this->tablepre, $query); $user = Lua::get_one($query); Doo::db()->reconnect('dev'); if (!empty($user) && $user['password'] == $discuz_pw) { unset($user['password']); return $user; } } } return array(); }
public function user() { $_DCOOKIE = array(); $prelength = strlen($this->cookiepre); foreach ($_COOKIE as $key => $val) { if (substr($key, 0, $prelength) == $this->cookiepre) { $_DCOOKIE[substr($key, $prelength)] = Lua::clean($val); } } unset($prelength); $discuz_auth_key = md5($this->authkey . $_SERVER['HTTP_USER_AGENT']); list($discuz_pw, $discuz_secques, $discuz_uid) = isset($_DCOOKIE['auth']) ? Lua::clean(explode("\t", $this->authcode($_DCOOKIE['auth'], 'DECODE', $discuz_auth_key)), 1) : array('', '', 0); $discuz_uid = intval($discuz_uid); Doo::db()->reconnect('dz7'); $query = "select m.uid,m.username,m.password,m.gender as sex,mf.avatar as icon from cdb_members m left join cdb_memberfields mf on mf.uid=m.uid where m.uid='{$discuz_uid}'"; $query = str_replace('cdb_', $this->tablepre, $query); $user = Lua::get_one($query); Doo::db()->reconnect('dev'); if ($user && $discuz_pw == $user['password']) { unset($user['password']); $user['hash'] = substr(md5(substr(TIMESTAMP, 0, -7) . iconv('utf-8', 'gbk', $user['username']) . $discuz_uid . $discuz_pw . $discuz_auth_key), 8, 8); return $user; } return array(); }
public function beforeRun($resource, $action) { $this->dir = ADMIN_ROOT . '/moban/'; $this->img = '/' . ADMIN_ROOT . '/static/'; $session = Doo::session('Lua'); $auth = $session->get('auth'); if (empty($auth)) { $sets = Doo::cache('php')->get('loginset'); if ($sets && $sets['cardit'] == 1) { $xxxx = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'); $nums = range(1, 9); shuffle($xxxx); shuffle($nums); $aaaa = $xxxx[0] . $nums[0]; $bbbb = $xxxx[1] . $nums[1]; $session->cardcode = $aaaa . '@' . $bbbb; } include Lua::display('login', $this->dir); exit; } $auth = empty($auth) ? array(0, '') : Lua::clean(explode("\t", Lua::authcode($auth, 'DECODE')), 1); $user = Lua::get_one("select * from lua_admin where uid='" . intval($auth[0]) . "' and password='******' and gid='1'"); if (empty($user) || $user && $this->clientIP() != $user['loginip']) { $session->auth = ''; Lua::admin_msg('操作提示', '请先登录', '/' . ADMIN_ROOT); } $rs = $this->acl()->process($user['perm'], $resource, $action); if ($rs) { return $rs; } $this->user = $user; $this->page = Lua::get_post('p') ? intval(Lua::get_post('p')) : 1; // 图片识别码, 借鉴自 supesite define('FILE_HASH', substr(md5($user['uid'] . '/' . time() . Lua::random(6)), 8, 16)); }
public function logout() { $session = Doo::session('Lua'); $auth = $session->get('auth'); $auth = empty($auth) ? array(0, '') : Lua::clean(explode("\t", Lua::authcode($auth, 'DECODE')), 1); $user = Lua::get_one("select * from lua_admin where uid='" . intval($auth[0]) . "' and password='******' and gid='1'"); if ($user) { Lua::write_log($user, '退出系统', '---', $user['channel']); } $session->auth = ''; Lua::admin_msg('操作提示', '成功退出系统', '/' . ADMIN_ROOT); }
public function _doit() { $dirs = date('Y-m-d'); $path = $this->cache . $dirs . '/'; $configFile = $path . 'config.php'; Doo::loadHelper('DooFile'); $fileManager = new DooFile(0777); if (!file_exists($configFile)) { if (!file_exists($path)) { $fileManager->create($path); } $tables = Doo::db()->fetchAll("SHOW TABLE STATUS"); $b_table = $d_table = ''; foreach ($tables as $row) { $b_table .= $row['Name'] . ","; $d_table .= "\$tb['" . $row['Name'] . "']=0;\r\n"; } $b_table = substr($b_table, 0, strlen($b_table) - 1); $string = "<?php\r\n\$b_table=\"" . $b_table . "\";\r\n" . $d_table . "?>"; $fileManager->create($configFile, $string); $this->jsonp('写入配置文件 ...'); } else { include $configFile; } $btb = explode(",", $b_table); $count = count($btb); $t = intval(Lua::post('t')); $s = intval(Lua::post('s')); $p = intval(Lua::post('p')); $alltotal = intval(Lua::post('alltotal')); $fnum = intval(Lua::post('fnum')); $dumpsql = ''; if ($t >= $count) { echo 'success'; exit; } if (empty($s)) { $num = Doo::db()->fetchRow("SHOW TABLE STATUS LIKE '" . $btb[$t] . "';"); $num = $num['Rows']; $dumpsql .= "self::query(\"DROP TABLE IF EXISTS `" . $btb[$t] . "`;\");\r\n"; Doo::db()->query("SET SQL_QUOTE_SHOW_CREATE=1"); $r = Doo::db()->fetchRow("SHOW CREATE TABLE `" . $btb[$t] . "`;"); $create = str_replace("\"", "\\\"", $r['Create Table']); $dumpsql .= "self::create(\"" . $create . "\");\r\n"; } else { $num = (int) $alltotal; } $fields = Doo::db()->fetchAll("SHOW FIELDS FROM `" . $btb[$t] . "`"); if (empty($fnum)) { $field_num = count($fields); } else { $field_num = $fnum; } $b = 0; $list = Doo::db()->fetchAll("select * from `" . $btb[$t] . "` limit {$s},{$num}"); if ($list) { foreach ($list as $v) { $b = 1; $s++; $dumpsql .= "self::query(\"replace into `" . $btb[$t] . "` values("; $first = 1; for ($i = 0; $i < $field_num; $i++) { if (empty($first)) { $dumpsql .= ','; } else { $first = 0; } $_field_name = $fields[$i]['Field']; if (!isset($v[$_field_name])) { $dumpsql .= 'NULL'; } else { $dumpsql .= '\'' . Lua::clean($v[$_field_name]) . '\''; } } $dumpsql .= ");\");\r\n"; if (strlen($dumpsql) >= 2048 * 1024) { $p++; $sfile = $path . "/" . $btb[$t] . "_" . $p . ".php"; $fileManager->create($sfile, "<?php\r\n" . $dumpsql . "?>"); $this->jsonp('Table Name : <b>' . $btb[$t] . '</b><br />Table : <b>' . ($t + 1) . '/' . $count . '</b><br />Record : <b>' . $s . '/' . $num . '</b><br />备份一组数据成功,正在进入下一组......', $s, $p, $t, $alltotal, $fnum); } } } if (empty($p) || $b == 1) { $p++; $sfile = $path . "/" . $btb[$t] . "_" . $p . ".php"; $fileManager->create($sfile, "<?php\r\n" . $dumpsql . "?>"); } if (empty($p)) { $p = 0; } $text = $fileManager->readFileContents($configFile); $rep1 = "\$tb['" . $btb[$t] . "']=0;"; $rep2 = "\$tb['" . $btb[$t] . "']=" . $p . ";"; $text = str_replace($rep1, $rep2, $text); $fileManager->create($configFile, $text); $t++; $this->jsonp('备份' . $btb[$t - 1] . '表成功,正在进入下一个表备份......', 0, 0, $t, 0, 0); }