is_registered) { $json['errno'] = 1; $json['msg'] = "Non-existent user."; } else { if ($user -> checkPasswd($_POST['passwd'])) { $json['errno'] = 0; $json['msg'] = 'Logging in succeed!'; $json['token'] = $user -> getToken(); $_SESSION['token'] = $user -> getToken(); } else { $json['errno'] = 1; $json['msg'] = "Incorrect usename or password."; } } } } else if ($action == "register") { if (checkInput()) { if (!$user -> is_registered) { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip = $_SERVER['REMOTE_ADDR']; } if (!utils::select('ip', $ip)) { // use once md5 to encrypt password if ($user -> register(md5($_POST['passwd']), $ip)) { $json['errno'] = 0; $json['msg'] = "Registered successfully."; } else { $json['errno'] = 1; $json['msg'] = "Uncaught error."; } } else { $json['errno'] = 1; $json['msg'] = "It seems that you have already register a account with this IP address."; } } else { $json['errno'] = 1; $json['msg'] = "User already existed."; } } } else if ($action == "upload") { if ($_SESSION['token'] == $user -> getToken()) { if (checkFile()) { if ($file = $_FILES['skin_file']) { if ($user -> setTexture('skin', $file)) { $json[0]['errno'] = 0; $json[0]['msg'] = "Skin uploaded successfully."; } else { $json[0]['errno'] = 1; $json[0]['msg'] = "Uncaught error."; } } if ($file = $_FILES['cape_file']) { if ($user -> setTexture('cape', $file)) { $json[1]['errno'] = 0; $json[1]['msg'] = "Cape uploaded successfully."; } else { $json[1]['errno'] = 1; $json[1]['msg'] = "Uncaught error."; } } } } else { $json['errno'] = 1; $json['msg'] = "Invalid token."; } } else if ($action == "logout") { if (getValue('token', $_SESSION)) { session_destroy(); $json['errno'] = 0; $json['msg'] = 'Session destroyed.'; } else { $json['errno'] = 1; $json['msg'] = 'No available session.'; } } function checkInput() { global $json; if (!$_POST['uname']) { $json['errno'] = 1; $json['msg'] = 'Empty username!'; return false; } if (!$_POST['passwd']) { $json['errno'] = 1; $json['msg'] = "Empty password!"; return false; } return true; } function checkFile() { global $json; if (!($_FILES['skin_file'] || $_FILES['cape_file'])) { $json['errno'] = 1; $json['msg'] = "No input file selected."; return false; } /** * Check for skin_file */ if (($_FILES["skin_file"]["type"] == "image/png") || ($_FILES["skin_file"]["type"] == "image/x-png")) { // if error occured while uploading file if ($_FILES["skin_file"]["error"] > 0) { $json['errno'] = 1; $json['msg'] = $_FILES["skin_file"]["error"]; return false; } } else { if ($_FILES["skin_file"]) { $json['errno'] = 1; $json['msg'] = 'Skin file type error.'; return false; } } /** * Check for cape_file */ if (($_FILES["cape_file"]["type"] == "image/png") || ($_FILES["cape_file"]["type"] == "image/x-png")) { // if error occured while uploading file if ($_FILES["cape_file"]["error"] > 0) { $json['errno'] = 1; $json['msg'] = $_FILES["cape_file"]["error"]; return false; } } else { if ($_FILES["cape_file"]) { $json['errno'] = 1; $json['msg'] = 'Cape file type error.'; return false; } } return true; } echo json_encode($json);