login.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <?php
  2. define("CONFIG", 1);
  3. define("SQL", 1);
  4. require_once ($_SERVER['DOCUMENT_ROOT']."/cfg/config.php");
  5. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/sql.php");
  6. require_once ($_SERVER['DOCUMENT_ROOT']."/inc/common.php");
  7. function is_session_exists() {
  8. $sessionName = session_name();
  9. if (!empty($_COOKIE[$sessionName]) || !empty($_REQUEST[$sessionName])) {
  10. session_start();
  11. return !empty($_SESSION);
  12. }
  13. return false;
  14. }
  15. function auth()
  16. {
  17. header("WWW-Authenticate: Basic realm=\"Administration Panel\"");
  18. close_access();
  19. exit();
  20. }
  21. function close_access()
  22. {
  23. header('HTTP/1.1 401 Unauthorized');
  24. echo "You must enter a valid login and password to access this resource\n";
  25. exit();
  26. }
  27. function login($db)
  28. {
  29. session_start();
  30. //default timeout 8h in seconds
  31. $inactive = 3600*8;
  32. if (empty($_SESSION['timeout'])) { $_SESSION['timeout']=time(); }
  33. $session_life = time() - $_SESSION['timeout'];
  34. if($session_life > $inactive) { session_destroy(); header("Location: /logout.php"); }
  35. if (empty($_SERVER['PHP_AUTH_USER']) and empty($_SERVER['PHP_AUTH_PW'])) {
  36. auth();
  37. }
  38. if (! IsAuthenticated($db)) {
  39. close_access();
  40. exit();
  41. }
  42. }
  43. function Silentlogin($db)
  44. {
  45. session_start();
  46. if (! IsSilentAuthenticated($db)) {
  47. close_access();
  48. exit();
  49. }
  50. }
  51. function IsAuthenticated($db)
  52. {
  53. if (!empty($_SESSION['user_id'])) { return 1; }
  54. if (empty($auth_ip)) {
  55. $auth_ip = get_user_ip();
  56. $_SESSION['IP'] = $auth_ip;
  57. }
  58. if (!empty($_SERVER['PHP_AUTH_USER'])) {
  59. $login = trim($_SERVER['PHP_AUTH_USER']);
  60. }
  61. if (!empty($_SERVER['PHP_AUTH_PW'])) {
  62. $pass = trim($_SERVER['PHP_AUTH_PW']);
  63. }
  64. if (empty($login) or empty($pass)) {
  65. LOG_DEBUG($db, "login [$login] or password [$pass] undefined from $auth_ip: fail!");
  66. return false;
  67. }
  68. $login = htmlspecialchars(stripslashes(substr($login, 0, 20)));
  69. $pass = md5($pass);
  70. if ($login == '' or $pass == '') {
  71. LOG_DEBUG($db, "login [$login] or password [$pass] undefined from $auth_ip: fail!");
  72. return false;
  73. }
  74. // LOG_DEBUG($db,"Try login [$login] with password [$pass] from $auth_ip.");
  75. $query = "SELECT id FROM `Customers` WHERE Login='{$login}' AND `Pwd`='{$pass}' LIMIT 1";
  76. $auth_login = mysqli_query($db, $query);
  77. list ($auth_id) = mysqli_fetch_array($auth_login);
  78. if (!empty($auth_id) and $auth_id > 0) {
  79. if (empty($_SESSION['session_id'])) {
  80. session_regenerate_id();
  81. $_SESSION['session_id'] = session_id();
  82. }
  83. if (empty($_SESSION['user_id'])) {
  84. LOG_DEBUG($db, "login user [$login] from " . $_SESSION['IP'] . ": success.");
  85. }
  86. $_SESSION['user_id'] = $auth_id;
  87. $_SESSION['login'] = $login;
  88. return 1;
  89. }
  90. LOG_DEBUG($db, "login user [$login] from " . $_SESSION['IP'] . ": fail!");
  91. }
  92. function IsSilentAuthenticated($db)
  93. {
  94. if (!empty($_SESSION['user_id'])) {
  95. return 1;
  96. }
  97. if (empty($auth_ip)) {
  98. $auth_ip = get_user_ip();
  99. $_SESSION['IP'] = $auth_ip;
  100. }
  101. if (!empty($_GET['login'])) {
  102. $login = trim($_GET['login']);
  103. }
  104. if (!empty($_POST['login'])) {
  105. $login = trim($_POST['login']);
  106. }
  107. if (!empty($_GET['password'])) {
  108. $pass = trim($_GET['password']);
  109. }
  110. if (!empty($_POST['password'])) {
  111. $pass = trim($_POST['password']);
  112. }
  113. if (empty($login) or empty($pass)) {
  114. LOG_DEBUG($db, "login or password undefined from $auth_ip: fail!");
  115. return false;
  116. }
  117. $login = htmlspecialchars(stripslashes(substr($login, 0, 20)));
  118. $pass = $pass;
  119. if ($login == '' or $pass == '') {
  120. LOG_DEBUG($db, "login or password undefined from $auth_ip: fail!");
  121. return false;
  122. }
  123. // LOG_DEBUG($db,"Try silent login [$login] with password [$pass] from $auth_ip.");
  124. $query = "SELECT id FROM `Customers` WHERE Login='{$login}' AND `Pwd`='{$pass}' LIMIT 1";
  125. $auth_login = mysqli_query($db, $query);
  126. list ($auth_id) = mysqli_fetch_array($auth_login);
  127. if (!empty($auth_id) and $auth_id > 0) {
  128. if (empty($_SESSION['session_id'])) {
  129. session_regenerate_id();
  130. $_SESSION['session_id'] = session_id();
  131. }
  132. if (empty($_SESSION['user_id'])) {
  133. LOG_DEBUG($db, "login user [$login] from " . $_SESSION['IP'] . ": success.");
  134. }
  135. $_SESSION['user_id'] = $auth_id;
  136. $_SESSION['login'] = $login;
  137. return 1;
  138. }
  139. LOG_DEBUG($db, "Silent login user $login from " . $_SESSION['IP'] . ": fail!");
  140. }
  141. ?>