global.php
上传用户:gzy2002
上传日期:2010-02-11
资源大小:1785k
文件大小:9k
源码类别:

电子政务应用

开发平台:

Java

  1. <?php
  2. // +-------------------------------------------------------------+
  3. // | DeskPRO v [2.0.1 Production]
  4. // | Copyright (C) 2001 - 2004 Headstart Solutions Limited
  5. // | Supplied by WTN-WDYL
  6. // | Nullified by WTN-WDYL
  7. // | Distribution via WebForum, ForumRU and associated file dumps
  8. // +-------------------------------------------------------------+
  9. // | DESKPRO IS NOT FREE SOFTWARE
  10. // +-------------------------------------------------------------+
  11. // | License ID : Full Enterprise License =) ...
  12. // | License Owner : WTN-WDYL Team
  13. // +-------------------------------------------------------------+
  14. // | $RCSfile: global.php,v $
  15. // | $Date: 2004/02/10 01:34:25 $
  16. // | $Revision: 1.57 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Sessions management and global initialization for user
  20. // |   interface.
  21. // +-------------------------------------------------------------+
  22. ############################### INCLUDE FILES ###############################
  23. define('USERZONE', 1);
  24. define('INCLUDE_PATH', './includes/');
  25. include ('./includes/init.php');
  26. ############################### LICENSE CHECK ###############################
  27. if ($_REQUEST[checklicense]) {
  28. check_license();
  29. }
  30. ############################### LAYOUT TEMPLATES ###############################
  31. // replacement variables
  32. $db->query("SELECT name, value from template_replace");
  33. while ($result = $db->row_array()) {
  34. $r[$result[name]] = $result[value];
  35. }
  36. // some templates always used
  37. $template_cache = templatecache('HF_language_bit,HF_header,HF_footer,HF_head_include,HF_navbar_in,HF_navbar_out,HF_navbar_out_allow,HTML_notice_start,HTML_notice_end,HTML_midtable_start,HTML_midtable_end,HTML_content_start,HTML_error_start,HTML_tablebit_end,HTML_tablebit_start,HTML_tableelement_start,HTML_tableelement_end');
  38. eval(makeeval('css', 'HF_css'));
  39. // html bit templates
  40. eval(makeeval('t[tablebit_start]', 'HTML_tablebit_start'));
  41. eval(makeeval('t[tablebit_end]', 'HTML_tablebit_end'));
  42. eval(makeeval('t[tableelement_start]', 'HTML_tableelement_start'));
  43. eval(makeeval('t[tableelement_end]', 'HTML_tableelement_end'));
  44. eval(makeeval('t[bordertable_start]', 'HTML_bordertable_start'));
  45. eval(makeeval('t[bordertable_end]', 'HTML_bordertable_end'));
  46. eval(makeeval('t[tablebitall]', 'HTML_tablebitall'));
  47. eval(makeeval('t[row_spacer]', 'HTML_rowspacer'));
  48. ############################### SESSIONS / USER DATA ###############################
  49. // check if the user already has a cookie
  50. if ($_COOKIE[dp_user_sessionid] OR $_COOKIE[dp_user_userid] OR $_COOKIE[dp_user_password]) {
  51. $acceptcookies = 1;
  52. }
  53. // check if valid session
  54. $session = validate_session();
  55. // if session found get user details if user is logged in
  56. if ($session) {
  57. if ($session[userid]) {
  58. $user = $db->query_return("SELECT * FROM user WHERE id = '$session[userid]'");
  59. }
  60. // no session
  61. } else {
  62. // check if we are remembering this user
  63. if ($_COOKIE['dp_user_userid'] AND $_COOKIE['dp_user_password']) { 
  64. $user = $db->query_return("
  65. SELECT * FROM user 
  66. WHERE id = '" . mysql_escape_string($_COOKIE['dp_user_userid']) . "' 
  67. AND password_cookie = '" . mysql_escape_string($_COOKIE['dp_user_password']) . "'
  68. ");
  69. }
  70. // if user is not found, delete the cookies
  71. if (!$db->num_rows()) {
  72. dp_setcookie("dp_user_userid", "", -1);
  73. dp_setcookie("dp_user_password", "", -1);
  74. }
  75. // we make a session now independant of finding user or not. If a user is found the session is linked to the user
  76. $session = make_session($user[id], $user[language]);
  77. // Send headers unless we are making PDF
  78. if (!defined('PDF')) { 
  79. dp_setcookie('dp_user_sessionid', $session[sessionid]);
  80. }
  81. }
  82. // check there is a language in the session
  83. if (!$session[language]) {
  84. if ($_COOKIE['dp_language']) {
  85. $session[language] = $_COOKIE['dp_language'];
  86. } elseif ($settings[default_language]) {
  87. $session[language] = $settings[default_language];
  88. } else {
  89. $session[language] = 1;
  90. }
  91. }
  92. $dplang = get_words();
  93. // is user trying to login
  94. if ($_REQUEST['login_form'] == 'login' OR strtolower($_REQUEST['submit']) == 'login') { 
  95. $user = $db->query_return("
  96. SELECT * FROM user 
  97. WHERE 
  98. (
  99. username = '". mysql_escape_string($_POST[username]) . "' OR
  100. email = '". mysql_escape_string($_POST[username]) . "'
  101. )
  102. AND password = '".mysql_escape_string($_POST[password])."'
  103. ");
  104. if (($db->num_rows() > 0) AND ($_POST[username] != '')) {
  105. $session = update_session('user', $user[id]);
  106. $session = update_session('language', $user[language]);
  107. // if we are staying logged in, we remember the userid/password at this point
  108. if ($_REQUEST[remember]) {
  109. if (!defined('PDF') AND !defined('NOCOOKIES')) {
  110. dp_setcookie('dp_user_userid', $user[id], 'ever');
  111. dp_setcookie('dp_user_password', $user[password_cookie], 'ever');
  112. }
  113. }
  114. // Rebuild GET, POST and FILE data
  115. $_getvars = unserialize($_POST['_getvars']);
  116. $_GET = array_merge($_GET, $_getvars);
  117. $_postvars = unserialize($_POST['_postvars']);
  118. $_POST = array_merge($_POST, $_postvars);
  119. $_filevars = unserialize($_POST['_filevars']);
  120. $_FILES = array_merge($_FILES, $_filevars);
  121. $_REQUEST = array_merge($_GET,$_POST,$_COOKIE);
  122. // if we came from login page *or* index redirect to index again
  123. if (is_integer(strpos($_SERVER['PHP_SELF'], 'login.php'))
  124. OR is_integer(strpos($_SERVER['PHP_SELF'], 'index.php'))) {
  125. if (!$acceptcookies) { // Set the right URL params 
  126.  $session_url = '?s='.$session[sessionid]; 
  127.  $session_ampersand = '&'; 
  128. } else { 
  129.  $session_url = ''; 
  130.  $session_ampersand = '?'; 
  131. }
  132. jump('index.php', 'redirect_login');
  133. }
  134. } else { // display after template parseing
  135. unset($user);
  136. $login_error = 1;
  137. $error = $dplang['login_fail'];
  138. }
  139. }
  140. // Set the right URL params 
  141. if (!$acceptcookies) { 
  142.      $session_url = '?s='.$session[sessionid]; 
  143.      $session_ampersand = '&amp;'; 
  144. } else { 
  145.      $session_url = ''; 
  146.      $session_ampersand = '?'; 
  147. }
  148. // sort out usergroups
  149. if ($user[usergroup]) {
  150. $session[usergroup] = $user[usergroup];
  151. } elseif ($session[userid]) {
  152. $session[usergroup] = 2;
  153. } else {
  154. $session[usergroup] = 1;
  155. }
  156. ############################### WORDS / LANGUAGES ###############################
  157. // needs to be functionalised because needed for redirect above
  158. function get_words() {
  159. global $db, $settings, $session;
  160. $db->query("SELECT * FROM template_words WHERE language = '0' OR language = '$session[language]' OR language = '$settings[default_language]' ORDER BY cust DESC");
  161. while ($result = $db->row_array()) {
  162. if ($result[language] == '0') {
  163. $start_lang[$result[wordref]] = iff($start_lang[$result[wordref]], $start_lang[$result[wordref]], trim($result[text]));
  164. } elseif ($result[language] == $settings[default_language]) {
  165. $default_lang[$result[wordref]] = iff($default_lang[$result[wordref]], $default_lang[$result[wordref]], trim($result[text]));
  166. } else {
  167. $this_lang[$result[wordref]] = iff($this_lang[$result[wordref]], $this_lang[$result[wordref]], trim($result[text]));
  168. }
  169. }
  170. $dplang = array_merge($start_lang, $default_lang);
  171. $dplang = array_merge($dplang, $this_lang); 
  172. return $dplang;
  173. }
  174. // languages
  175. $db->query("SELECT * FROM languages WHERE is_selectable");
  176. $language = array();
  177. while ($result = $db->row_array()) {
  178. $language[$result[id]] = $result;
  179. }
  180. $this_language = $language[$session[language]];
  181. // need to make sure we have defined a charset etc
  182. give_default($this_language['isocode'], 'en');
  183. give_default($this_language['contenttype'], 'text/html; charset=ISO-8859-12');
  184. give_default($this_language['direction'], 'ltr');
  185. if ($this_language['direction'] == 'ltr') {
  186. $this_language['align'] = 'right';
  187. } else {
  188. $this_language['align'] = 'left';
  189. }
  190. $this_language['url'] = basename($_SERVER['SCRIPT_NAME']) . '?' . $_SERVER['QUERY_STRING'];
  191. eval(makeeval('language_html', 'HF_language'));
  192. ############################### UNSET VARIABLES ###############################
  193. // minor defense against XSS is unsettting any useful 'cracking' variables
  194. unset($_COOKIE);
  195. unset($user[password]);
  196. ############################### LOGIN ERROR / DISABLED ###############################
  197. // if user is disabled (we need to log the user out so they can go somewhere)
  198. if (is_array($user)) {
  199. if ($user[disabled]) {
  200. unset($user);
  201. delete_cookies();
  202. $session = make_session($userid='', $session[language]);
  203. error('error_user_disabled');
  204. }
  205. }
  206. // if the user attempte to login but with wrong username/password
  207. if ($login_error) {
  208. sleep(1);
  209. $page = 'login';
  210. login_form($error, $_POST['_getvars'], $_POST['_postvars'], $_POST['_filevars']);
  211. }
  212. ############################### OTHER ###############################
  213. // set user timezone
  214. $settings['timezone'] -= ($settings['timezone'] - $settings['timezone_offset']);
  215. if ($user['timezone'] != NULL) {
  216. $settings['timezone'] -= ($settings['timezone'] - $user['timezone']);
  217. }
  218. if ($user['timezone_dst']) {
  219. $settings['timezone']++;
  220. }
  221. if ($session[language] == 1) {
  222. $show_spellcheck = 1;
  223. }
  224. /*
  225. At this point every user has a sessionid
  226. */