<?php class user{ // Set default system vars private $core, $db, $config, $lng; // Set default user vars public $email, $login, $group, $group_desc, $password, $salt, $tmp, $ip, $ip_create, $data, $permissions, $permissions_v2, $gender; public $id = 0; public $is_auth = false; public $is_skin = false; public $is_cloak = false; public $skin = '.default'; public $cloak = ''; public $money= 0; public $realmoney = 0; public $bank = 0; public $gid = -1; public function get_default_permissions(){ $query = $this->db->query("SELECT `value`, `type`, `default` FROM `mcr_permissions`"); if(!$query || $this->db->num_rows($query)<=0){ return; } $array = array(); while($ar = $this->db->fetch_assoc($query)){ switch($ar['type']){ case 'integer': $array[$ar['value']] = intval($ar['default']); break; case 'float': $array[$ar['value']] = floatval($ar['default']); break; case 'string': $array[$ar['value']] = $this->db->safesql($ar['default']); break; default: $array[$ar['value']] = ($ar['default']=='true') ? true : false; break; } } $permissions = json_encode($array); return array(json_decode($permissions), json_decode($permissions, true)); } public function __construct($core){ $this->core = $core; $this->db = $core->db; $this->config = $core->config; $this->lng = $core->lng; $this->login = $this->lng['u_group_def']; $this->group = $this->lng['u_group_def']; $this->group_desc = $this->lng['u_group_desc_def']; // Set now ip $this->ip = $this->ip(); // Check cookies if(!isset($_COOKIE['mcr_user'])){ $perm_ar = @$this->get_default_permissions(); $this->permissions = $perm_ar[0]; $this->permissions_v2 = $perm_ar[1]; return false; } $cookie = explode("_", $_COOKIE['mcr_user']); if(!isset($cookie[0], $cookie[1])){ $this->set_unauth(); $this->core->notify(); } $uid = intval($cookie[0]); $hash = $cookie[1]; $query = $this->db->query("SELECT `u`.gid, `u`.login, `u`.email, `u`.password, `u`.`salt`, `u`.`tmp`, `u`.ip_create, `u`.`data`, `u`.`is_skin`, `u`.`is_cloak`, `g`.title, `g`.`description`, `g`.`permissions`, `i`.`money`, `i`.realmoney, `i`.bank FROM `mcr_users` AS `u` INNER JOIN `mcr_groups` AS `g` ON `g`.id=`u`.gid LEFT JOIN `mcr_iconomy` AS `i` ON `i`.login=`u`.login WHERE `u`.id='$uid'"); if(!$query || $this->db->num_rows($query)<=0){ $this->set_unauth(); $this->core->notify(); } $ar = $this->db->fetch_assoc($query); $tmp = $this->db->HSC($ar['tmp']); $password = $this->db->HSC($ar['password']); $new_hash = $uid.$tmp.$this->ip.md5($this->config->main['mcr_secury']); $ar_hash = $uid.'_'.md5($new_hash); // Check security auth if($_COOKIE['mcr_user'] !== $ar_hash){ $this->set_unauth(); $this->core->notify(); } // Identificator $this->id = $uid; // Group identificator $this->gid = intval($ar['gid']); // Username $this->login = $this->db->HSC($ar['login']); // E-Mail $this->email = $this->db->HSC($ar['email']); // Password hash $this->password = $password; // Salt of password $this->salt = $ar['salt']; // Temp hash $this->tmp = $tmp; // Register ip $this->ip_create = $this->db->HSC($ar['ip_create']); // Other information $this->data = json_decode($ar['data']); // Group title $this->group = $this->db->HSC($ar['title']); // Group description $this->group_desc = $this->db->HSC($ar['description']); // Permissions $this->permissions = @json_decode($ar['permissions']); // Permissions $this->permissions_v2 = @json_decode($ar['permissions'], true); // Is auth status $this->is_auth = true; // Is default skin $this->is_skin = (intval($ar['is_skin'])==1) ? true : false; // Is isset cloak $this->is_cloak = (intval($ar['is_cloak'])==1) ? true : false; $this->skin = ($this->is_skin || $this->is_cloak) ? $this->login : '.default'; $this->cloak = ($this->is_cloak) ? $this->login : ''; // Gender $this->gender = (intval($this->data->gender)==1) ? $this->lng['gender_w'] : $this->lng['gender_m']; // Game money balance $this->money = floatval($ar['money']); // Real money balance $this->realmoney = floatval($ar['realmoney']); // Bank money balance (for plugins) $this->bank = floatval($ar['bank']); } public function set_unauth(){ if(isset($_COOKIE['mcr_user'])){ setcookie("mcr_user", "", time()-3600, '/'); } return true; } private function ip(){ if(!empty($_SERVER['HTTP_CF_CONNECTING_IP'])){ $ip = $_SERVER['HTTP_CF_CONNECTING_IP']; }elseif(!empty($_SERVER['HTTP_X_REAL_IP'])){ $ip = $_SERVER['HTTP_X_REAL_IP']; }elseif(!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']; } return mb_substr($ip, 0, 16, "UTF-8"); } } ?>