Advertisement
Guest User

Untitled

a guest
Apr 8th, 2019
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.88 KB | None | 0 0
  1. <?php
  2. session_start();
  3.  
  4. class Funzioni
  5. {
  6. protected $config;
  7. function __construct()
  8. {
  9. $config = new Config();
  10. $this->config = $config;
  11. }
  12. public function mysql_connection()
  13. {
  14. $connessione = null;
  15. try
  16. {
  17. $connessione = new PDO('mysql:host=' . $this->config->config('host') . ';port=3306;dbname=' . $this->config->config('db'), $this->config->config('user'), $this->config->config('pass'));
  18. $connessione->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  19. }
  20. catch(PDOException $exception)
  21. {
  22. die('Errore MySQL: '.$exception->getMessage().'');
  23. }
  24.  
  25. return $connessione;
  26. }
  27.  
  28.  
  29. public function RunSql($sql)
  30. {
  31. $stmt = $this->mysql_connection()->prepare($sql);
  32. return $stmt;
  33. }
  34. public function hash($password)
  35. {
  36.  
  37. $password1 = sha1($password . "xCg532%@%gdvf^5DGaa6&*rFTfg^FD4\$OIFThrR_gh(ugf*/");
  38. return $password1;
  39.  
  40. //$password = md5(sha1(sha1(md5($password))));
  41.  
  42. //return $password;
  43. }
  44.  
  45. public function mus($header, $data=''){
  46. $musData = $header . chr(1) . $data;
  47. $sock = @socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
  48. @socket_connect($sock, '158.69.112.236', '30001');
  49. @socket_send($sock, $musData, strlen($musData), MSG_DONTROUTE);
  50. @socket_close($sock);
  51. }
  52.  
  53. public function data($a)
  54. {
  55. $H = date('H');
  56. $i = date('i');
  57. $s = date('s');
  58. $m = date('m');
  59. $d = date('d');
  60. $Y = date('Y');
  61. $j = date('j');
  62. $n = date('n');
  63. $today = $d;
  64. $month = $m;
  65. $year = $Y;
  66. $getmoney_date = date('d/m/Y',mktime($m,$d,$Y));
  67. $birthday_date = date('d/m', mktime($m,$d));
  68. $date_normal = date('d/m/Y',mktime($m,$d,$Y));
  69. $date_full = date('d/m/Y - H:i:s',mktime($H,$i,$s,$m,$d,$Y));
  70.  
  71. $data = array('normal' => $date_normal, 'completa' => $date_full);
  72.  
  73. return $data[$a];
  74. }
  75.  
  76. public function getlast($a)
  77. {
  78. if(!empty($a) || !$a == ''){
  79. if(is_numeric($a)){
  80. $date = $a;
  81. $date_now = time();
  82. $difference = $date_now - $date;
  83. if($difference <= '59'){ $echo = ''. $difference .' secondi fa'; }
  84. elseif($difference <= '3599' && $difference >= '60'){
  85. $minutos = date('i', $difference);
  86. if($minutos[0] == 0) { $minutos = $minutos[1]; }
  87. if($minutos == 1) { $minutos_str = 'minuto'; }
  88. else { $minutos_str = 'minuti'; }
  89. $echo = 'Ultima connessione: '.$minutos.' '.$minutos_str;//Minutos
  90. }elseif($difference <= '86399' && $difference >= '3600') {
  91. $horas = floor(date('H', $difference));
  92. if($horas == 1) { $horas_str = 'ora fa'; }
  93. else { $horas_str = 'ore fa'; }
  94. $echo = 'Ultima connessione: '.$horas.' '.$horas_str;//Minutos
  95. }elseif($difference <= '518399' && $difference >= '86400'){
  96. $dias = floor(date('d', $difference));
  97. if($dias == 1) { $dias_str = 'giorno'; }
  98. else { $dias_str = 'giorni'; }
  99. $echo = 'Ultima connessione: '.$dias.' '.$dias_str;//Minutos
  100. }elseif($difference <= '2678399' && $difference >= '518400'){
  101. $semana = floor(date('d', $difference) / 7).'<!-- WTF -->';
  102. if($semana == 1) { $semana_str = 'settimana'; }
  103. else { $semana_str = 'settimane'; }
  104. $echo = 'Ultima connessione: '.floor($semana).' '.$semana_str;//Minutos
  105. }else { $echo = 'Ultima connessione: '.floor(date('m', $difference)).' mese'; }
  106. return $echo;
  107. }else{ return $a; }
  108. }else{ return 'Non si &egrave; ancora connesso!'; }
  109. }
  110.  
  111. public function datenews($date)
  112. {
  113. $tiempo = time();
  114. $diferencia = $tiempo - $date;
  115. if($diferencia >= '0' && $diferencia <= '86400')
  116. {
  117. $cuando = 'Adesso';
  118. }
  119. elseif($diferencia > '86400' && $diferencia <= '172800')
  120. {
  121. $cuando = 'Ieri';
  122. }
  123. elseif($diferencia > '172800' && $diferencia <= '604800')
  124. {
  125. $cuando = 'Questa settimana';
  126. }
  127. elseif($diferencia > '604800' && $diferencia <= '1209600')
  128. {
  129. $cuando = 'Settimana scorsa';
  130. }
  131. elseif($diferencia > '1209600' && $diferencia <= '2592000')
  132. {
  133. $cuando = 'Questo mese';
  134. }
  135. elseif($diferencia > '2592000')
  136. {
  137. $cuando = 'Pi&ugrave; di un mese fa';
  138. }
  139.  
  140. return $cuando;
  141. }
  142. public function count($tbl)
  143. {
  144. $asd = $this->RunSql('SELECT * FROM '.$tbl.'');
  145. $asd->execute();
  146. $count = $asd->rowCount();
  147. return $count;
  148. }
  149. public function ip()
  150. {
  151. if($_SERVER) {
  152. if($_SERVER["HTTP_X_FORWARDED_FOR"]) {
  153. $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
  154. } elseif ($_SERVER["HTTP_CLIENT_IP"]) {
  155. $realip = $_SERVER["HTTP_CLIENT_IP"];
  156. } else {
  157. $realip = $_SERVER["REMOTE_ADDR"];
  158. }
  159. } else {
  160. if(getenv("HTTP_X_FORWARDED_FOR")) {
  161. $realip = getenv("HTTP_X_FORWARDED_FOR");
  162. } elseif(getenv("HTTP_CLIENT_IP")) {
  163. $realip = getenv("HTTP_CLIENT_IP");
  164. } else {
  165. $realip = getenv("REMOTE_ADDR");
  166. }
  167. }
  168. return $realip;
  169. }
  170.  
  171. public function connessi() {
  172. $sql_onlines = $this->RunSql("SELECT * FROM users WHERE online = '1'");
  173. $sql_onlines->execute();
  174. $ons = $sql_onlines->rowCount();
  175.  
  176. $onlines = '<img src="'.$this->config->sito('www').'/app/images/online.gif" /> Ci sono <b>'.$ons.'</b> Habs in Hotel!';
  177.  
  178. return $onlines;
  179. }
  180.  
  181. public function adduser()
  182. {
  183.  
  184. if(isset($_POST['reg_username']) && isset($_POST['reg_mail']) && isset($_POST['reg_pass']) && isset($_POST['reg_rippass']))
  185. {
  186.  
  187. $checkUsername = $this->RunSql("SELECT * FROM users WHERE username = :uname");
  188. $checkUsername->execute(array(':uname' => $_POST['reg_username']));
  189. $checkMail = $this->RunSql("SELECT * FROM users WHERE mail = :mail");
  190. $checkMail->execute(array(':mail' => $_POST['reg_mail']));
  191. //CHECK CLONI
  192. $query = $this->RunSql('SELECT * FROM users WHERE ip_reg = :ip');
  193. $query->execute(array('ip' => $this->ip()));
  194. $query->fetch(PDO::FETCH_ASSOC);
  195. if(isset($_POST['g-recaptcha-response'])){
  196. $captcha = $_POST['g-recaptcha-response'];
  197. }
  198.  
  199. $look = substr($_POST['habbo-avatar'], 0, -9);
  200. $gender = substr($_POST['habbo-avatar'], -1);
  201.  
  202. if(empty($_POST['reg_username']) || empty($_POST['reg_mail']) || empty($_POST['reg_pass']) || empty($_POST['reg_rippass']))
  203. {
  204. $_SESSION['reg_error'] = 'Riempi tutti i campi!';
  205. return false;
  206. }
  207. elseif($checkUsername->rowCount())
  208. {
  209. $_SESSION['reg_error'] = 'Username occupato!';
  210. return false;
  211. }
  212. elseif($checkMail->rowCount())
  213. {
  214. $_SESSION['reg_error'] = 'E-mail occupata!';
  215. return false;
  216. }
  217. elseif($_POST['reg_pass'] !== $_POST['reg_rippass'])
  218. {
  219. $_SESSION['reg_error'] = 'Le password non coincidono!';
  220. return false;
  221. }
  222. elseif(strlen($_POST['reg_username']) > 12 || strlen($_POST['reg_username']) < 3)
  223. {
  224. $_SESSION['reg_error'] = 'L<sup></sup>username deve contenere dai 3 ai 12 catattersi!';
  225. return false;
  226. }
  227. elseif(strrpos($_POST['reg_username'], "MOD-") !== false)
  228. {
  229. $_SESSION['reg_error'] = 'Non puoi registrarti col prefisso MOD-';
  230. return false;
  231. }
  232. elseif(strrpos($_POST['reg_username'], " ") || strrpos($_POST['reg_username'], " ") !== false)
  233. {
  234. $_SESSION['reg_error'] = 'Non puoi contenere spazi nel nome!';
  235. return false;
  236. }
  237. elseif(strrpos($_POST['reg_username'], ".") || strrpos($_POST['reg_username'], ".") !== false)
  238. {
  239. $_SESSION['reg_error'] = 'Non puoi contenere punti nel nome!';
  240. return false;
  241. }
  242. elseif($query->rowCount() >= 2){
  243. $_SESSION['reg_error'] = 'Oops massimo 2 account per IP';
  244. }
  245. elseif (!$captcha)
  246. {
  247. $_SESSION['reg_error'] = 'Verifica di non essere un robot!';
  248. return false;
  249. }
  250. else
  251. {
  252. $inserisci = $this->RunSql("INSERT INTO users (username, password, mail, look, gender, motto, ip_reg, account_created,home_room) VALUES (:username, :psw, :mail, :look, :gender, :motto, :ip, :tempo, '24469')");
  253. $inserisci->execute(array(':username' => $_POST['reg_username'], ':psw' => $this->hash($_POST['reg_pass']), ':mail' => $_POST['reg_mail'], ':look' => $look, ':gender' => $gender, ':motto' => $this->config->sito('motto'), ':ip' => $this->ip(), ':tempo' => time()));
  254. $_SESSION['username'] = $_POST['reg_username'];
  255. $_SESSION['password'] = $_POST['reg_pass'];
  256. $_SESSION['user_id'] = $this->user('id');
  257. return true;
  258. }
  259. }
  260. }
  261.  
  262. public function checkinfo()
  263. {
  264.  
  265. $sql_user = $this->RunSql("SELECT * FROM users WHERE username = :uname AND password = :psw LIMIT 1");
  266. $sql_user->execute(array(':uname' => $_POST['username'], ':psw' => $this->hash($_POST['password'])));
  267.  
  268. if(isset($_POST['username']) && isset($_POST['password']))
  269. {
  270. if(empty($_POST['username']) || empty($_POST['password']))
  271. {
  272. $loginerror = 'Non lasciare spazi bianchi!';
  273. $_SESSION['login_error'] = $loginerror;
  274. return false;
  275. }
  276. elseif(!$sql_user->rowCount())
  277. {
  278. $loginerror = 'Dati incorretti!';
  279. $_SESSION['login_error'] = $loginerror;
  280. return false;
  281. }
  282. elseif($sql_user->rowCount())
  283. {
  284. $_SESSION['username'] = $_POST['username'];
  285. $_SESSION['password'] = $_POST['password'];
  286. $_SESSION['user_id'] = $this->user('id');
  287. return true;
  288. }
  289. }
  290. }
  291.  
  292. public function checklogged($a) {
  293. if($a == 'yes')
  294. {
  295. if(isset($_SESSION['username']) && isset($_SESSION['password']))
  296. {
  297. header("Location: /me");
  298. }
  299. }
  300. elseif($a == 'no')
  301. {
  302. if(empty($_SESSION['username']) && empty($_SESSION['password']))
  303. {
  304. header("Location: /");
  305. }
  306. }
  307. }
  308.  
  309. public function stats($fields)
  310. {
  311. $stmt = $this->RunSql("SELECT ".$fields." FROM user_stats WHERE id = :id LIMIT 1");
  312. $stmt->execute(array(':id' => $this->user('id')));
  313. $row = $stmt->fetch(PDO::FETCH_ASSOC);
  314. return $row[$fields];
  315. }
  316.  
  317. public function user($a) {
  318. $user = $this->RunSql("SELECT * FROM users WHERE username = :uname AND password = :pass LIMIT 1");
  319. $user->execute(array(':uname' => $_SESSION['username'], ':pass' => $this->hash($_SESSION['password'])));
  320. if($user->rowCount())
  321. {
  322. $usr = $user->fetch(PDO::FETCH_ASSOC);
  323. return $usr[$a];
  324. }
  325. }
  326.  
  327. public function checkrank($a) {
  328.  
  329. if($a == 'senza-accesso')
  330. {
  331. if($this->user('rank') < $this->config->sito('hkmin'))
  332. {
  333. header("Location: /");
  334. }
  335. }
  336. elseif($a == 'maxrank')
  337. {
  338. if($this->user('rank') < $this->config->sito('hkmax'))
  339. {
  340. header("Location: ".$this->config->sito('www').$this->config->sito('AdminCP')."");
  341. }
  342. }
  343. }
  344.  
  345. public function banned() {
  346.  
  347. $checkban = $this->RunSql("SELECT * FROM bans WHERE value = :a OR value = :b LIMIT 1");
  348. $checkban->execute(array(':a' => $this->user('username'), ':b' => $this->ip()));
  349.  
  350. if($checkban->rowCount())
  351. {
  352. header("Location: /logout");
  353. }
  354.  
  355. }
  356.  
  357. public function salva_modello($code)
  358. {
  359. $random = "model_".rand(555,999999);
  360. try{
  361.  
  362. $stmt = $this->RunSql("INSERT INTO room_models(id,door_x,door_y,door_dir,heightmap)
  363. VALUES(:id, '0', '10', '2', :code)");
  364. $stmt->bindparam(":code", $code);
  365. $stmt->bindparam(":id", $random);
  366.  
  367.  
  368. $stmt->execute();
  369. $room = $this->RunSql("INSERT INTO rooms(caption,owner,owner_id,model_name)
  370. VALUES('Stanza Creata con il Floor!', :owner, :usrid, :roomid)");
  371. $room->execute(array(':owner' => $this->user('username'),':usrid' => $_SESSION['user_id'], ':roomid' => $random));
  372. $this->mus("update_model");
  373. return $stmt;
  374. }
  375. catch(PDOException $e)
  376. {
  377. echo $e->getMessage();
  378. }
  379. }
  380.  
  381. public function GeneraTicket()
  382. {
  383. $data = "";
  384. for ($i=1; $i<=6; $i++){
  385. $data = $data . rand(0,10000000);
  386. }
  387. $data = $data . "";
  388. for ($i=1; $i<=20; $i++){
  389. $data = $data . rand(0,1000000);
  390. }
  391. $data = $data . "";
  392. $data = $data . rand(0,100000);
  393. return $data;
  394. }
  395.  
  396. public function SSO()
  397. {
  398. $stmt = $this->RunSql("UPDATE users SET auth_ticket = :ticket, ip_last = :ip , last_online = UNIX_TIMESTAMP() WHERE id = :sessione");
  399. $stmt->execute(array(':ticket' => md5(sha1(md5($this->GeneraTicket()))), ':ip' => $this->ip(), ':sessione' => $this->user('id')));
  400. }
  401.  
  402. public function hk_login() {
  403.  
  404. if(isset($_POST['hk_submit']))
  405. {
  406. if(empty($_POST['hk_username']) || empty($_POST['hk_password']) || empty($_POST['hk_pin']))
  407. {
  408. $_SESSION['hk_error'] = 'Non lasciare spazi bianchi!';
  409. return false;
  410. }
  411. elseif($_POST['hk_username'] != $_SESSION['username'])
  412. {
  413. $_SESSION['hk_error'] = 'Username inesistente';
  414. return false;
  415. }
  416. elseif($_POST['hk_password'] != $_SESSION['password'])
  417. {
  418. $_SESSION['hk_error'] = 'Password incorretta';
  419. return false;
  420. }
  421. elseif($_POST['hk_pin'] != $this->config->sito('hk_pin'))
  422. {
  423. $_SESSION['hk_error'] = 'Il codice di sicurezza &egrave; errato!';
  424. return false;
  425. }
  426. elseif($this->user('rank') < $this->config->sito('hkmin'))
  427. {
  428. $_SESSION['hk_error'] = 'Non hai i permessi per entrare :(';
  429. return false;
  430. }
  431. else
  432. {
  433. $asd = $this->RunSql("INSERT INTO stafflogs (action, message, note, userid, timestamp) VALUES ('Login',:uname,:rank, :id, :tempo)");
  434. $asd->execute(array(':uname' => $this->user('username'), ':rank' => $this->user('rank'), ':id' => $this->user('id'), ':tempo' => time()));
  435. $_SESSION['hk_loged'] = 'loggato';
  436. return true;
  437. }
  438. }
  439. }
  440. }
  441.  
  442. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement