/novo/admin/phpSecurePages/checklogin.php

https://github.com/dericksaga/ibsite · PHP · 248 lines · 185 code · 18 blank · 45 comment · 94 complexity · 2d9a1f067cfd7aa816dd90c653e3cf4a MD5 · raw file

  1. <?PHP
  2. // loading functions and libraries
  3. function random($max) {
  4. // create random number between 0 and $max
  5. srand( (double)microtime() * 1000000 );
  6. $r = round(rand(0, $max));
  7. if ($r != 0) $r = $r - 1;
  8. return $r;
  9. }
  10. function rotateBg() {
  11. // rotate background login interface
  12. global $backgrounds, $bgImage, $i;
  13. $c = count($backgrounds);
  14. if ($c == 0) return;
  15. $r = random($c);
  16. if ($backgrounds[$r] == '' && $i < 10) {
  17. $i++;
  18. rotateBg();
  19. } elseif ($i >= 10) {
  20. if (!$bgImage || $bgImage == '') {
  21. $bgImage = 'bg_lock.gif';
  22. } else {
  23. $bgImage = $bgImage;
  24. } }
  25. else { $bgImage = $backgrounds[$r]; }
  26. return $bgImage;
  27. }
  28. function in_array_php3($needle, $haystack) {
  29. // check if the value of $needle exist in array $haystack
  30. // works for both php3 and php4
  31. if ($needle && $haystack) {
  32. if (phpversion() >= 4) {
  33. // phpversion = 4
  34. return(in_array($needle, $haystack));
  35. } else {
  36. // phpversion = 3
  37. for ($i = 0; $i <= count($haystack); $i++) {
  38. if ($haystack[$i] == $needle) {
  39. return(true);
  40. } }
  41. return(false);
  42. } }
  43. else return(false);
  44. }
  45. if ($noDetailedMessages == true) {
  46. $strUserNotExist = $strUserNotAllowed = $strPwNotFound = $strPwFalse = $strNoPassword = $strNoAccess;
  47. }
  48. if ($bgRotate == true) {
  49. $i = 0;
  50. $bgImage = rotateBg();
  51. }
  52. // Check if secure.php has been loaded correctly
  53. if ( !defined("LOADED_PROPERLY") || $HTTP_GET_VARS['cfgProgDir'] || $HTTP_POST_VARS['cfgProgDir']) {
  54. echo "Parsing of phpSecurePages has been halted!";
  55. exit();
  56. }
  57. // make post variables global
  58. $entered_login = $HTTP_POST_VARS['entered_login'];
  59. $entered_password = $HTTP_POST_VARS['entered_password'];
  60. // check if login is necesary
  61. if (!$entered_login && !$entered_password) {
  62. // use data from session
  63. if (phpversion() >= 4) {
  64. // phpversion = 4
  65. session_start();
  66. // session hack to make sessions on old php4 versions work
  67. if (phpversion() > 4.0) {
  68. $login = $HTTP_SESSION_VARS['login'];
  69. $password = $HTTP_SESSION_VARS['password'];
  70. }
  71. } else {
  72. // phpversion = 3
  73. session_start_php3();
  74. } }
  75. else {
  76. // use entered data
  77. if (phpversion() >= 4) {
  78. // phpversion = 4
  79. session_start();
  80. session_unregister("login");
  81. session_unregister("password");
  82. // encrypt entered login & password
  83. $login = $entered_login;
  84. if ($passwordEncryptedWithMD5 && function_exists(md5)) {
  85. $password = md5($entered_password);
  86. } else {
  87. $password = $entered_password;
  88. }
  89. // session hack to make sessions on old php4 versions work
  90. if (phpversion() > 4.0) {
  91. $HTTP_SESSION_VARS['login'] = $login;
  92. $HTTP_SESSION_VARS['password'] = $password;
  93. } else {
  94. session_register("login");
  95. session_register("password");
  96. }
  97. } else {
  98. // phpversion = 3
  99. session_destroy_php3();
  100. session_start_php3();
  101. // encrypt entered login & password
  102. $login = $entered_login;
  103. if ($passwordEncryptedWithMD5 && function_exists(md5)) {
  104. $password = md5($entered_password);
  105. } else {
  106. $password = $entered_password;
  107. }
  108. session_register_php3("login", "STRING", $login);
  109. session_register_php3("password", "STRING", $password);
  110. } }
  111. if (!$login) {
  112. // no login available
  113. include($cfgProgDir . "interface.php");
  114. exit;
  115. }
  116. if (!$password) {
  117. // no password available
  118. $message = $strNoPassword;
  119. include($cfgProgDir . "interface.php");
  120. exit;
  121. }
  122. // use phpSecurePages with Database
  123. if ($useDatabase == true) {
  124. // contact database
  125. if ( empty($cfgServerPort) ) {
  126. mysql_connect($cfgServerHost, $cfgServerUser, $cfgServerPassword)
  127. or die($strNoConnection);
  128. } else {
  129. mysql_connect($cfgServerHost . ":" . $cfgServerPort, $cfgServerUser, $cfgServerPassword)
  130. or die($strNoConnection);
  131. }
  132. $userQuery = mysql($cfgDbDatabase, "SELECT * FROM $cfgDbTableUsers WHERE $cfgDbLoginfield = '$login'")
  133. or die($strNoDatabase);
  134. // check user and password
  135. if (mysql_num_rows($userQuery) != 0) {
  136. // user exist --> continue
  137. $userArray = mysql_fetch_array($userQuery);
  138. if ($login != $userArray[$cfgDbLoginfield]) {
  139. // Case sensative user not present in database
  140. $message = $strUserNotExist;
  141. // include($cfgProgDir . "logout.php");
  142. include($cfgProgDir . "interface.php");
  143. exit;
  144. } }
  145. else {
  146. // user not present in database
  147. $message = $strUserNotExist;
  148. // include($cfgProgDir . "logout.php");
  149. include($cfgProgDir . "interface.php");
  150. exit;
  151. }
  152. if (!$userArray[$cfgDbPasswordfield]) {
  153. // password not present in database for this user
  154. $message = $strPwNotFound;
  155. include($cfgProgDir . "interface.php");
  156. exit;
  157. }
  158. if (stripslashes($userArray["$cfgDbPasswordfield"]) != $password) {
  159. // password is wrong
  160. $message = $strPwFalse;
  161. // include($cfgProgDir . "logout.php");
  162. include($cfgProgDir . "interface.php");
  163. exit;
  164. }
  165. if ( isset($userArray["$cfgDbUserLevelfield"]) && !empty($cfgDbUserLevelfield) ) {
  166. $userLevel = stripslashes($userArray["$cfgDbUserLevelfield"]);
  167. }
  168. if ( ( $requiredUserLevel && !empty($requiredUserLevel[0]) ) || $minUserLevel ) {
  169. // check for required user level and minimum user level
  170. if ( !isset($userArray["$cfgDbUserLevelfield"]) ) {
  171. // check if column (as entered in the configuration file) exist in database
  172. $message = $strNoUserLevelColumn;
  173. include($cfgProgDir . "interface.php");
  174. exit;
  175. }
  176. if ( empty($cfgDbUserLevelfield) || ( !in_array_php3($userLevel, $requiredUserLevel) && ( !isset($minUserLevel) || empty($minUserLevel) || $userLevel < $minUserLevel ) ) ) {
  177. // this user does not have the required user level
  178. $message = $strUserNotAllowed;
  179. include($cfgProgDir . "interface.php");
  180. exit;
  181. } }
  182. if ( isset($userArray["$cfgDbUserIDfield"]) && !empty($cfgDbUserIDfield) ) {
  183. $ID = stripslashes($userArray["$cfgDbUserIDfield"]);
  184. } }
  185. // use phpSecurePages with Data
  186. elseif ($useData == true && $useDatabase != true) {
  187. $numLogin = count($cfgLogin);
  188. $userFound = false;
  189. // check all the data input
  190. for ($i = 1; $i <= $numLogin; $i++) {
  191. if ($cfgLogin[$i] != '' && $cfgLogin[$i] == $login) {
  192. // user found --> check password
  193. if ($cfgPassword[$i] == '' || $cfgPassword[$i] != $password) {
  194. // password is wrong
  195. $message = $strPwFalse;
  196. include($cfgProgDir . "logout.php");
  197. include($cfgProgDir . "interface.php");
  198. exit;
  199. }
  200. $userFound = true;
  201. $userNr = $i;
  202. } }
  203. if ($userFound == false) {
  204. // user is wrong
  205. $message = $strUserNotExist;
  206. include($cfgProgDir . "logout.php");
  207. include($cfgProgDir . "interface.php");
  208. exit;
  209. }
  210. $userLevel = $cfgUserLevel[$userNr];
  211. if ( ( $requiredUserLevel && !empty($requiredUserLevel[0]) ) || $minUserLevel ) {
  212. // check for required user level and minimum user level
  213. if ( !in_array_php3($userLevel, $requiredUserLevel) && ( !isset($minUserLevel) || empty($minUserLevel) || $userLevel < $minUserLevel ) ) {
  214. // this user does not have the required user level
  215. $message = $strUserNotAllowed;
  216. include($cfgProgDir . "interface.php");
  217. exit;
  218. } }
  219. $ID = $cfgUserID[$userNr];
  220. }
  221. // neither of the two data inputs was chosen
  222. else {
  223. $message = $strNoDataMethod;
  224. include($cfgProgDir . "interface.php");
  225. exit;
  226. }
  227. // restore values
  228. if ($dbOld) $db = $dbOld;
  229. if ($messageOld) $message = $messageOld;
  230. ?>