1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
| <?php
require_once ('MysqliDb.php'); require_once ('config.php');
define('S_ROOT', dirname(__FILE__).DIRECTORY_SEPARATOR);
$_SGLOBAL = array();
$mtime = explode(' ', microtime()); $_SGLOBAL['timestamp'] = $mtime[1]; $_SGLOBAL['supe_starttime'] = $_SGLOBAL['timestamp'] + $mtime[0];
$_REQUEST['auth'] = rawurldecode(req('auth'));
$db = new MysqliDb($_DBCONFIG);
function req($arg,$default=''){ return empty($_REQUEST[$arg])?$default:$_REQUEST[$arg]; }
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
$ckey_length = 4;
$key = md5($key ? $key : UC_KEY); $keya = md5(substr($key, 0, 16)); $keyb = md5(substr($key, 16, 16)); $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
$cryptkey = $keya.md5($keya.$keyc); $key_length = strlen($cryptkey);
$string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string; $string_length = strlen($string);
$result = ''; $box = range(0, 255);
$rndkey = array(); for($i = 0; $i <= 255; $i++) { $rndkey[$i] = ord($cryptkey[$i % $key_length]); }
for($j = $i = 0; $i < 256; $i++) { $j = ($j + $box[$i] + $rndkey[$i]) % 256; $tmp = $box[$i]; $box[$i] = $box[$j]; $box[$j] = $tmp; }
for($a = $j = $i = 0; $i < $string_length; $i++) { $a = ($a + 1) % 256; $j = ($j + $box[$a]) % 256; $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp; $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); }
if($operation == 'DECODE') { if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) { return substr($result, 26); } else { return ''; } } else { return $keyc.str_replace('=', '', base64_encode($result)); } }
function checkauth() { global $_SGLOBAL; $auth = req('auth'); if($auth) { $db = MysqliDb::getInstance(); @list($password, $uid) = explode("\t", authcode($auth, 'DECODE')); $_SGLOBAL['uid'] = intval($uid); if($password && $_SGLOBAL['uid']) { $db->where('uid', $_SGLOBAL['uid']); if($user = $db->getOne('users')) { if($user['password'] == $password) { $_SGLOBAL['usertype'] = $user['usertype']; $_SGLOBAL['username'] = $user['username']; return; } } } } showjson('to_login'); }
function showjson($message, $code=1, $data=array()){ ob_clean(); $r = array(); $r['code'] = $code; $r['msg'] = $message; $r['data'] = $data; header('Cache-Control: no-cache, must-revalidate'); header('Content-Type: text/json;'); echo json_encode($r); exit(); }
?>
|