PageRenderTime 36ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/includes/sessions.php

https://bitbucket.org/capi/ogspy
PHP | 256 lines | 167 code | 28 blank | 61 comment | 33 complexity | d19c1bc0efebe352c2cadb3cfc5583ab MD5 | raw file
  1. <?php
  2. /**
  3. * Fichier de gestion des sessions utilisateurs sur OGSpy
  4. * @package OGSpy
  5. * @subpackage Main
  6. * @copyright Copyright &copy; 2007, http://ogsteam.fr/
  7. * @created 06/12/2005
  8. * @modified $Date: 2012-08-29 00:22:35 +0200 (Wed, 29 Aug 2012) $
  9. * @author Kyser
  10. * @link $HeadURL: http://svn.ogsteam.fr/trunk/ogspy/includes/sessions.php $
  11. * @version 3.04b ( $Rev: 7700 $ )
  12. * $Id: sessions.php 7700 2012-08-28 22:22:35Z darknoon $
  13. */
  14. /**
  15. * Interdiction de l'appel direct
  16. */
  17. if (!defined('IN_SPYOGAME')) {
  18. die("Hacking attempt");
  19. }
  20. /**
  21. * Stating an user Session
  22. * @todo Query : "insert into ".TABLE_SESSIONS." (session_id, session_user_id, session_start, session_expire, session_ip) values (";
  23. $request .="'".$cookie_id."', 0, ".time().", ".$cookie_expire.", '".$user_ip."')";
  24. * @todo Query : "delete from ".TABLE_SESSIONS." where session_ip = '".$user_ip."' and session_ogs = '1'"
  25. * @todo Query : "insert into ".TABLE_SESSIONS." (session_id, session_user_id, session_start, session_expire, session_ip, session_ogs) values (";
  26. $request .="'".$cookie_id."', 0, ".time().", ".$cookie_expire.", '".$user_ip."', '1')";
  27. */
  28. function session_begin($user_ip) {
  29. global $db, $cookie_id, $server_config;
  30. $cookie_name = COOKIE_NAME;
  31. $cookie_time = ( $server_config["session_time"] == 0 ) ? 525600:$server_config["session_time"];
  32. $cookie_id = md5(uniqid(mt_rand(), true));
  33. $cookie_expire = time()+$cookie_time*60;
  34. if (strstr($_SERVER['HTTP_USER_AGENT'],"OGSClient") === false) {
  35. $request = "insert into ".TABLE_SESSIONS." (session_id, session_user_id, session_start, session_expire, session_ip) values (";
  36. $request .="'".$cookie_id."', 0, ".time().", ".$cookie_expire.", '".$user_ip."')";
  37. $db->sql_query($request, true, false) or die("Impossible d'initialiser la session");
  38. }
  39. else {
  40. $request = "delete from ".TABLE_SESSIONS." where session_ip = '".$user_ip."' and session_ogs = '1'";
  41. $db->sql_query($request, true, false) or die("Impossible d'initialiser la session");
  42. $request = "insert into ".TABLE_SESSIONS." (session_id, session_user_id, session_start, session_expire, session_ip, session_ogs) values (";
  43. $request .="'".$cookie_id."', 0, ".time().", ".$cookie_expire.", '".$user_ip."', '1')";
  44. $db->sql_query($request, true, false) or die("Impossible d'initialiser la session");
  45. }
  46. setcookie($cookie_name, $cookie_id, 0);
  47. }
  48. /**
  49. * Gets the current session and creates it if the session for the current user does not exists
  50. * @todo Query : "delete from ".TABLE_SESSIONS." where session_expire < ".time()
  51. * @todo Query : "select session_id from ".TABLE_SESSIONS.
  52. " where session_id = '".$cookie_id."'".
  53. " and session_ip = '".$user_ip."'";
  54. * @todo Query : "select session_id from ".TABLE_SESSIONS." left join ".TABLE_USER.
  55. " on session_user_id = user_id".
  56. " where session_id = '".$cookie_id."'".
  57. " and disable_ip_check = '1'";
  58. * @todo Query : "update ".TABLE_SESSIONS." set session_ip = '".$user_ip."' where session_id = '".$cookie_id."'"
  59. * @todo Query : "update ".TABLE_SESSIONS." set session_expire = ".$cookie_expire." where session_id = '".$cookie_id."'"
  60. */
  61. function session() {
  62. global $db, $user_ip, $cookie_id, $server_config;
  63. global $HTTP_COOKIE_VARS, $link_css;
  64. $cookie_id = "";
  65. $cookie_name = COOKIE_NAME;
  66. $cookie_time = ( $server_config["session_time"] == 0 ) ? 525600:$server_config["session_time"];
  67. //Purge des sessions expirées
  68. if ($server_config["session_time"] != 0) {
  69. $request = "delete from ".TABLE_SESSIONS." where session_expire < ".time();
  70. $db->sql_query($request, true, false);
  71. }
  72. $link_css = $server_config["default_skin"];
  73. //Récupération de l'id de session si cookie présent
  74. if (isset($HTTP_COOKIE_VARS[$cookie_name])) {
  75. $cookie_id = $HTTP_COOKIE_VARS[$cookie_name];
  76. //Vérification de la validité de le session
  77. $request = "select session_id from ".TABLE_SESSIONS.
  78. " where session_id = '".$cookie_id."'".
  79. " and session_ip = '".$user_ip."'";
  80. $result = $db->sql_query($request);
  81. if ($db->sql_numrows($result) != 1) {
  82. if ( isset ( $server_config["disable_ip_check"] ) && $server_config["disable_ip_check"] == 1) {
  83. //Mise ŕ jour de l'adresse ip de session si le contrôle des ip est désactivé
  84. $request = "select session_id from ".TABLE_SESSIONS." left join ".TABLE_USER.
  85. " on session_user_id = user_id".
  86. " where session_id = '".$cookie_id."'".
  87. " and disable_ip_check = '1'";
  88. $result = $db->sql_query($request);
  89. if ($db->sql_numrows($result) > 0) {
  90. $request = "update ".TABLE_SESSIONS." set session_ip = '".$user_ip."' where session_id = '".$cookie_id."'";
  91. $db->sql_query($request, true, false);
  92. }
  93. else {
  94. $cookie_id = "";
  95. }
  96. }
  97. else {
  98. $cookie_id = "";
  99. }
  100. }
  101. }
  102. if ($cookie_id == "") {
  103. session_begin($user_ip);
  104. }
  105. else {
  106. $cookie_expire = time()+$cookie_time*60;
  107. $request = "update ".TABLE_SESSIONS." set session_expire = ".$cookie_expire." where session_id = '".$cookie_id."'";
  108. $db->sql_query($request, true, false);
  109. }
  110. session_set_user_data($cookie_id);
  111. }
  112. /**
  113. * Updates the session in the database and the cookie
  114. * @param int $user_id The current user
  115. * @param int $lastvisit Lastvisit timestamp
  116. * @todo Query : "update ".TABLE_SESSIONS." set session_user_id = ".$user_id.
  117. ", session_lastvisit = ".$lastvisit.
  118. " where session_id = '".$cookie_id."'";
  119. */
  120. function session_set_user_id($user_id, $lastvisit=0) {
  121. global $db, $user_ip, $cookie_id, $server_config;
  122. global $HTTP_COOKIE_VARS;
  123. $request = "update ".TABLE_SESSIONS." set session_user_id = ".$user_id.
  124. ", session_lastvisit = ".$lastvisit.
  125. " where session_id = '".$cookie_id."'";
  126. if ( isset ( $server_config["disable_ip_check"] ) && $server_config["disable_ip_check"] != 1 )
  127. $request .= " and session_ip = '".$user_ip."'";
  128. $db->sql_query($request);
  129. session_set_user_data($cookie_id);
  130. }
  131. /**
  132. * Set the user_data array according to the user parameters in the database
  133. * @param int $cookie_id The cookie id of the user
  134. * @todo Y a comme un probleme dans cette fonction... ne semble pas prendre de parametres alors que la fonction precedente lui en donne un...
  135. * @todo Query : "select user_id, user_name, user_admin, user_coadmin, user_galaxy, user_system, user_skin, session_lastvisit, user_stat_name, ";
  136. $request .= "management_user, management_ranking, disable_ip_check, off_amiral, off_ingenieur, off_geologue, off_technocrate";
  137. $request .= " from ".TABLE_USER." u, ".TABLE_SESSIONS." s";
  138. $request .= " where u.user_id = s.session_user_id";
  139. $request .= " and session_id = '".$cookie_id."'";
  140. $request .= " and session_ip = '".$user_ip."'";
  141. */
  142. function session_set_user_data($cookie_id) {
  143. global $db, $user_ip, $user_data, $user_auth, $server_config;
  144. global $link_css;
  145. $request = "select user_id, user_name, user_admin, user_coadmin, user_galaxy, user_system, user_skin, session_lastvisit, user_stat_name, ";
  146. $request .= "management_user, management_ranking, disable_ip_check, off_amiral, off_ingenieur, off_geologue, off_technocrate";
  147. $request .= " from ".TABLE_USER." u, ".TABLE_SESSIONS." s";
  148. $request .= " where u.user_id = s.session_user_id";
  149. $request .= " and session_id = '".$cookie_id."'";
  150. $request .= " and session_ip = '".$user_ip."'";
  151. $result = $db->sql_query($request);
  152. if ($db->sql_numrows($result) == 1) {
  153. $user_data = $db->sql_fetch_assoc($result);
  154. if ($user_data["user_skin"] != "") $link_css = $user_data["user_skin"];
  155. else
  156. $link_css = $server_config["default_skin"];
  157. $user_auth = user_get_auth($user_data["user_id"]);
  158. }
  159. else {
  160. unset($user_data);
  161. unset($user_auth);
  162. }
  163. }
  164. /**
  165. * Closing an user session
  166. * @param boolean $user_id ID user session
  167. * @todo Query: "delete from ".TABLE_SESSIONS.
  168. " where session_id = '".$cookie_id."'";
  169. if ( isset ( $server_config["disable_ip_check"] ) && $server_config["disable_ip_check"] != 1 )
  170. $request .= " and session_ip = '".$user_ip."'";
  171. * @todo Query: "delete from ".TABLE_SESSIONS." where session_user_id = ".$user_id;
  172. */
  173. function session_close($user_id = false) {
  174. global $db, $user_ip, $cookie_id;
  175. if (!$user_id) {
  176. global $HTTP_COOKIE_VARS;
  177. $cookie_name = COOKIE_NAME;
  178. $cookie_id = $HTTP_COOKIE_VARS[$cookie_name];
  179. $request = "delete from ".TABLE_SESSIONS.
  180. " where session_id = '".$cookie_id."'";
  181. if ( isset ( $server_config["disable_ip_check"] ) && $server_config["disable_ip_check"] != 1 )
  182. $request .= " and session_ip = '".$user_ip."'";
  183. $db->sql_query($request, true, false);
  184. }
  185. else {
  186. $request = "delete from ".TABLE_SESSIONS.
  187. " where session_user_id = ".$user_id;
  188. $db->sql_query($request, true, false);
  189. }
  190. }
  191. /**
  192. * Who is Online ?
  193. *
  194. * @todo Query $request = "select user_name, session_start, session_expire, session_ip, session_ogs";
  195. $request .= " from ".TABLE_SESSIONS." left join ".TABLE_USER;
  196. $request .= " on session_user_id = user_id";
  197. $request .= " order by user_name";
  198. */
  199. function session_whois_online() {
  200. global $db, $server_config;
  201. $cookie_time = ( $server_config["session_time"] == 0 ) ? 525600:$server_config["session_time"];
  202. $request = "select user_name, session_start, session_expire, session_ip, session_ogs";
  203. $request .= " from ".TABLE_SESSIONS." left join ".TABLE_USER;
  204. $request .= " on session_user_id = user_id";
  205. $request .= " order by user_name";
  206. $result = $db->sql_query($request);
  207. $guests = $members = array();
  208. while (list($user_name, $session_start, $session_expire, $session_ip, $session_ogs) = $db->sql_fetch_row($result)) {
  209. $time_lastactivity = $session_expire - $cookie_time*60;
  210. $session_ip = decode_ip($session_ip);
  211. if (is_null($user_name)) {
  212. $user_name = "Visiteur non identifié";
  213. $guests[] = array("user" => $user_name, "time_start" => $session_start, "time_lastactivity" => $time_lastactivity, "ip" => $session_ip, "ogs" => 0);
  214. }
  215. else {
  216. $members[] = array("user" => $user_name, "time_start" => $session_start, "time_lastactivity" => $time_lastactivity, "ip" => $session_ip, "ogs" => $session_ogs);
  217. }
  218. }
  219. $online = array_merge($members, $guests);
  220. return $online;
  221. }
  222. ?>