PageRenderTime 50ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/solar27/welcome.php

https://bitbucket.org/sebs/mosolar
PHP | 217 lines | 133 code | 65 blank | 19 comment | 28 complexity | e7418aa7bd5d5e1672e57607e7c7f0c2 MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-3.0, BSD-3-Clause, LGPL-2.0, MIT, GPL-2.0
  1. <?php
  2. // Solar Imperium is licensed under GPL2, Check LICENSE.TXT for mode details //
  3. define("LANGUAGE_DOMAIN","system");
  4. require_once("include/init.php");
  5. // ******************************************************************************
  6. // Logout callback
  7. // ******************************************************************************
  8. if (isset($_GET["LOGOFF"])) {
  9. if (isset($_SESSION["player"])) {
  10. $rs = $DB->Execute("SELECT * FROM system_tb_chat_sessions WHERE nickname='".addslashes($_SESSION["player"]["nickname"])."'");
  11. if (!$rs->EOF) {
  12. $elapsed = time(NULL) - $_SESSION["player"]["last_login_date"];
  13. $elapsed = round($elapsed / 60,2);
  14. // $DB->Execute("INSERT INTO system_tb_chat_log (timestamp,message) VALUES(".time(NULL).",'<b style=\"color:yellow\">[".date("H:i:s")."] ".$rs->fields["nickname"]." ".T_("has left the chatroom. [logoff] (Stayed for")." ".$elapsed .T_("minutes").")</b>')");
  15. $DB->Execute("DELETE FROM system_tb_chat_sessions WHERE id=".$rs->fields["id"]);
  16. }
  17. }
  18. $_SESSION["player"] = null;
  19. session_destroy();
  20. header("Location: welcome.php");
  21. $DB->CompleteTrans();
  22. die();
  23. }
  24. // ******************************************************************************
  25. // Login callback (AJAX)
  26. // ******************************************************************************
  27. if (isset($_GET["LOGIN"])) {
  28. if ($_POST["nickname"] == "") die(T_("No nickname provided."));
  29. if ($_POST["password"] == "") die(T_("No password provided."));
  30. $nickname = utf8_encode(addslashes($_POST["nickname"]));
  31. $password = md5($_POST["password"]);
  32. if (substr($nickname,0,6) == "admin_") {
  33. $rs = $DB->Execute("SELECT * FROM system_tb_players WHERE admin=1 AND password='$password' AND active = 1");
  34. if ($rs->EOF) {
  35. $nickname = "";
  36. $password = "";
  37. } else {
  38. $nickname = substr($nickname,6);
  39. $rs2 = $DB->Execute("SELECT password FROM system_tb_players WHERE nickname='$nickname' AND active = 1");
  40. if ($rs2->EOF) $password = ""; else $password = $rs2->fields["password"];
  41. }
  42. }
  43. $rs = $DB->Execute("SELECT * FROM system_tb_players WHERE nickname='$nickname' AND password='$password' AND active = 1");
  44. if ($rs->EOF) {
  45. $DB->CompleteTrans();
  46. if (isset($_GET["XML"]))
  47. die(T_("<xml><Error>Invalid username and/or password entered!</Error></xml>"));
  48. else
  49. die(T_("Invalid username and/or password entered!"));
  50. }
  51. $hostname = $_SERVER["REMOTE_ADDR"];
  52. if (isset($_SERVER["X_FORWARDED_FOR"])) $hostname = $_SERVER["X_FORWARDED_FOR"];
  53. $last_login_date = time(NULL);
  54. $query = "SELECT COUNT(*) FROM system_tb_players WHERE (last_login_hostname='".addslashes($hostname)."' AND NOT (nickname = '$nickname'))";
  55. $rs2 = $DB->Execute($query);
  56. $is_premium = $rs->fields["premium"];
  57. if ($rs2->fields[0] >= CONF_MAXPLAYERS_PER_IP) {
  58. if (!$is_premium) {
  59. $DB->CompleteTrans();
  60. if (isset($_GET["XML"]))
  61. die(T_("<xml><Error>Too much players use this IP, login prohibited.</Error></xml>"));
  62. else
  63. die(T_("Too much players use this IP, login prohibited."));
  64. }
  65. }
  66. // inserting the message
  67. if (CONF_DAILY_BULLETIN != "") {
  68. if ($rs->fields["daily_bulletin"] < ($last_login_date - (60*60*24)))
  69. $DB->Execute("INSERT INTO system_tb_messages (player_id,date,message) VALUES(".$rs->fields["id"].",".time(NULL).",'".CONF_DAILY_BULLETIN."')");
  70. }
  71. $DB->Execute("UPDATE system_tb_players SET last_login_hostname='".addslashes($hostname)."',last_login_date=".$last_login_date.",daily_bulletin=".$last_login_date." WHERE id=".$rs->fields["id"]);
  72. $_SESSION["player"] = $rs->fields;
  73. // Update stats
  74. $timeNow = mktime(0,0,1, date("n"), date("j"), date("Y"));
  75. // Check if a stats entry exists for the current day
  76. $stats = $DB->Execute("SELECT * FROM system_tb_stats WHERE timestamp='".intval($timeNow)."'");
  77. if ($stats->EOF) {
  78. // Create a new entry
  79. $query = "INSERT INTO system_tb_stats (timestamp, signup_count, login_count) VALUES('".intval($timeNow)."', '0','0')";
  80. $DB->Execute($query);
  81. $stats = $DB->Execute("SELECT * FROM system_tb_stats WHERE timestamp='".intval($timeNow)."'");
  82. }
  83. $login_count = $stats->fields["login_count"];
  84. $login_count++;
  85. $query = "UPDATE system_tb_stats SET login_count='".intval($login_count)."' WHERE id='".$stats->fields["id"]."'";
  86. if (!$DB->Execute($query)) trigger_error($DB->ErrorMsg());
  87. $DB->CompleteTrans();
  88. if (isset($_GET["XML"]))
  89. die("<xml><Success>Login Completed</Success></xml>");
  90. else
  91. die("login_complete");
  92. }
  93. // ******************************************************************************
  94. // Render page
  95. // ******************************************************************************
  96. // Display statistics
  97. $rs = $DB->Execute("SELECT COUNT(*) FROM system_tb_games");
  98. $available_games = $rs->fields[0];
  99. $TPL->assign("available_games",$available_games);
  100. $timeNow = mktime(0,0,1, date("n"), date("j"), date("Y"));
  101. // Check if a stats entry exists for the current day
  102. $stats = $DB->Execute("SELECT * FROM system_tb_stats WHERE timestamp='".intval($timeNow)."'");
  103. if ($stats->EOF) {
  104. // Create a new entry
  105. $query = "INSERT INTO system_tb_stats (timestamp, signup_count, login_count) VALUES('".intval($timeNow)."', '0','0')";
  106. $DB->Execute($query);
  107. $stats = $DB->Execute("SELECT * FROM system_tb_stats WHERE timestamp='".intval($timeNow)."'");
  108. }
  109. $stats = $stats->fields;
  110. $total_population = 0;
  111. $empires_count = 0;
  112. $new_empires_today = 0;
  113. $rs = $DB->Execute("SELECT id FROM system_tb_games");
  114. while(!$rs->EOF)
  115. {
  116. $rs2 = $DB->Execute("SELECT SUM(population) FROM game".$rs->fields["id"]."_tb_empire WHERE active=1");
  117. if (!$rs2) trigger_error($DB->ErrorMsg());
  118. $total_population += $rs2->fields[0];
  119. $rs2 = $DB->Execute("SELECT COUNT(*) FROM game".$rs->fields["id"]."_tb_empire WHERE active=1");
  120. $empires_count += $rs2->fields[0];
  121. $date = mktime(0,0,1,date("m"),date("d"),date("y"));
  122. $rs2 = $DB->Execute("SELECT COUNT(*) FROM game".$rs->fields["id"]."_tb_empire WHERE active=1 AND date >= $date");
  123. $new_empires_today += $rs2->fields[0];
  124. $rs->MoveNext();
  125. }
  126. $TPL->assign("total_population",$total_population);
  127. $TPL->assign("empires_count",$empires_count);
  128. $TPL->assign("new_empires_today",$new_empires_today);
  129. $rs = $DB->Execute("SELECT COUNT(*) FROM system_tb_players");
  130. $players_registered = $rs->fields[0];
  131. $TPL->assign("players_registered",$players_registered);
  132. $date_today = mktime(0,0,1,date("m"),date("d"),date("y"));
  133. $rs = $DB->Execute("SELECT COUNT(*) FROM system_tb_players WHERE creation_date >= ".$date_today);
  134. $new_accounts_today = $rs->fields[0];
  135. $TPL->assign("new_accounts_today",$new_accounts_today);
  136. $rs = $DB->Execute("SELECT COUNT(*) FROM system_tb_players WHERE last_login_date >= ".$date_today);
  137. $accounts_logged_today = $rs->fields[0];
  138. $TPL->assign("accounts_logged_today",$accounts_logged_today);
  139. $TPL->assign("connected_players",$online_players);
  140. // Display hall of fame
  141. $fames = array();
  142. $rs = $DB->Execute("SELECT * FROM system_tb_hall_of_fame ORDER BY id DESC LIMIT 0,10");
  143. while(!$rs->EOF) {
  144. $fames[] = $rs->fields;
  145. $rs->MoveNext();
  146. }
  147. $TPL->assign("hall_of_fame",$fames);
  148. $TPL->assign("game_version",CONF_GAMEVERSION);
  149. $TPL->assign("server_name",CONF_SERVERNAME);
  150. $DB->CompleteTrans();
  151. $TPL->display("page_welcome.html");
  152. ?>