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

电子政务应用

开发平台:

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: register.php,v $
  15. // | $Date: 2004/02/10 01:34:25 $
  16. // | $Revision: 1.33 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - User registration pages.
  20. // +-------------------------------------------------------------+
  21. error_reporting(E_ALL & ~E_NOTICE);
  22. require_once('./global.php');
  23. //Nullify WTN-WDYL Team
  24. $template_cache = templatecache('REG_register,HF_footer,HF_header');
  25. // default do
  26. $_REQUEST['do'] = trim($_REQUEST['do']);
  27. if (!isset($_REQUEST['do']) or $_REQUEST['do'] == "") {
  28. $_REQUEST['do'] = "start";
  29. }
  30. $page = 'register';
  31. $navigation = ' // ' . "<a class="light" href="register.php">$dplang[register]</a>";
  32. ############################### BASIC CHECKS ###############################
  33. // check registering is enabled
  34. if (!($settings['allow_registration'])) {
  35. error("error_no_registration");
  36. }
  37. user_p_checks();
  38. if ($user) {
  39. error("error_already_registered");
  40. }
  41. ###############################  PROCESS FORM ###############################
  42. if ($_REQUEST['do'] == "submit") {
  43. //////////////// password ////////////////
  44. // check non match / too short
  45. if ($_REQUEST[password] != $_REQUEST[password2]) {
  46. $error_match_password = 1;
  47. $error_password = 1;
  48. $stop = 1;
  49. unset($_REQUEST[password], $_REQUEST[password2]);
  50. } elseif (strlen($_REQUEST[password]) < 5) {
  51. $error_short_password = 1;
  52. $error_password = 1;
  53. $stop = 1;
  54. unset($_REQUEST[password], $_REQUEST[password2]);
  55. }
  56. //////////////// username ////////////////
  57. // check length/invalid characters and current use
  58. if (!validate_username($_REQUEST[username])) {
  59. $stop = 1;
  60. $error_bad_username = 1;
  61. $error_username = 1;
  62. } elseif (!unique_username($_REQUEST[username])) {
  63. // $stop = 1;
  64. $error_duplicate_username = 1;
  65. $error_username = 1;
  66. $stop = 1;
  67. }
  68. //////////////// email ////////////////
  69. // check valid email, non duplicated and not banned
  70. if (!validate_email($_REQUEST[email])) {
  71. $stop = 1;
  72. $error_bad_email = 1;
  73. $error_email = 1;
  74. } elseif (!unique_email($_REQUEST[email])) {
  75. $stop = 1;
  76. $error_duplicate_email = 1;
  77. $error_email = 1;
  78. } elseif (banned_email($_REQUEST[email])) {
  79. $stop = 1;
  80. $error_banned_email = 1;
  81. $error_email = 1;
  82. }
  83. //////////////// custom fields ////////////////
  84. // get the fields that we are expecting to be created
  85. $db->query("SELECT * from user_def WHERE user_start");
  86. while ($result = $db->row_array()) {
  87. $data = field_def_val($result, $_REQUEST[custom_fields][$result[name]], $_REQUEST[custom_fields]["extra" . $result[name]]);
  88. if ($data === NULL) {
  89. $tmp = unserialize($result[error_message]);
  90. $error_message = $tmp[$session[language]];
  91. // form errors;
  92. $custom_error[] = array('error' => $error_message);
  93. // for form design
  94. $custom_errors[] = $result[name];
  95. $stop = 1;
  96. } else {
  97. $query2 .= " $result[name] = '" . mysql_escape_string($data) . "', ";
  98. }
  99. }
  100. if ($stop) {
  101. $_REQUEST['do'] = "start";
  102. $redo = 1;
  103. } else {
  104. $create_user = 1;
  105. }
  106. }
  107. ############################### PAGE 1: START PAGE ###############################
  108. if ($_REQUEST['do'] == "start") {
  109. // get user data
  110. $db->query("SELECT * from user_def WHERE user_start ORDER BY displayorder");
  111. $custom = array();
  112. while ($result = $db->row_array()) {
  113. unset($name, $description, $error, $html);
  114. $tmp = unserialize($result[display_name]);
  115. $name = $tmp[$session[language]];
  116. $tmp = unserialize($result[description]);
  117. $description = $tmp[$session[language]];
  118. if ($stop) {
  119. $html = field_def($result, iff($redo, 'redo', 'default'), $_REQUEST[custom_fields][$result[name]], $_REQUEST[custom_fields]["extra" . $result[name]]);
  120. } else {
  121. $html = field_def($result);
  122. }
  123. $tmp = unserialize($result[error_message]);
  124. $error_message = $tmp[$session[language]];
  125. if (@in_array($result[name], $custom_errors)) {
  126. $error = $tmp[$session[language]];
  127. give_default($error, ' ');
  128. }
  129. // two arrays, one for loop and one to allow custom form design
  130. $custom[] = array(
  131. 'name' => $name,
  132. 'description' => $description,
  133. 'html' => $html,
  134. 'error' => $error
  135. );
  136. ${$result[name]} = array(
  137. 'name' => $name,
  138. 'description' => $description,
  139. 'html' => $html,
  140. 'error' => $error
  141. );
  142. }
  143. // sanitize variables
  144. $_REQUEST['email'] = htmlspecialchars($_REQUEST['email']);
  145. $_REQUEST['username'] = htmlspecialchars($_REQUEST['username']);
  146. $_REQUEST['password'] = htmlspecialchars($_REQUEST['password1']);
  147. $_REQUEST['password'] = htmlspecialchars($_REQUEST['password2']);
  148. // display the page
  149. eval(makeeval('header', 'HF_header'));
  150. eval(makeeval('footer', 'HF_footer'));
  151. eval(makeeval('echo', 'REG_register'));
  152. }
  153. ############################### CREATE THE USER ###############################
  154. if ($create_user == '1') {
  155. // start the sql statment
  156. $query = "INSERT into user SET
  157. password = '" . mysql_escape_string($_REQUEST[password]) . "' ,
  158. name = '" . mysql_escape_string($_REQUEST[name]) . "',
  159. username = '" . mysql_escape_string($_REQUEST[username]) . "',
  160. email = '" . mysql_escape_string($_REQUEST[email]) . "',
  161. timezone = '" . mysql_escape_string($settings['timezone']) . "',
  162. date_registered = '" . mktime() . "',
  163. ";
  164. // add custom fields
  165. $query .= $query2;
  166. // passwords
  167. $password_cookie = md5($session[sessionid] . $_REQUEST['password1'] . uniqid(rand(),1));
  168. $password_cookie = substr($password_cookie, 0, 8);
  169. $password_url = md5($_REQUEST['password1'] . uniqid(rand(),1) . $session[sessionid]);
  170. $password_url = substr($password_url, 0, 8);
  171. $query .= "password_url = '" . mysql_escape_string($password_url) . "', password_cookie = '" . mysql_escape_string($password_cookie) . "',";
  172. $validate_number = substr(md5(time()),0,6);
  173. $query .= " validate_key = '" . mysql_escape_string($validate_number) . "', ";
  174. // require email validation
  175. if ($settings[validate_email]) {
  176. $query .= " awaiting_validation = '1', ";
  177. }
  178. if ($settings[manual_validation]) {
  179. $query .= " awaiting_manual_validation = '1', ";
  180. }
  181. // language
  182. $query .= " language = '$session[language]' ";
  183. // add new user to database and get back id
  184. $db->query($query);
  185. $id = $db->last_id();
  186. // get user information into array for emailing
  187. $user_details = $db->query_return("SELECT * FROM user WHERE id = '$id'");
  188. // update session
  189. $session = update_session('user', $id);
  190. $user_details = update_user_details($user_details);;
  191. // need to validate email
  192. if ($settings[validate_email]) {
  193. eval(makeemaileval('message', 'BODY_register_confirm', $subject));
  194. dp_mail($_REQUEST['email'], $subject, $message);
  195. } elseif ($settings[manual_validation]) {
  196. eval(makeemaileval('message', 'BODY_register', $subject));
  197. dp_mail($_REQUEST['email'], $subject, $message);
  198. // general email welcome
  199. } elseif ($settings[register_welcome]) {
  200. eval(makeemaileval('message', 'BODY_register', $subject));
  201. dp_mail($_REQUEST['email'], $subject, $message);
  202. }
  203. // email admins if wanted
  204. $send_emails = explode(',', $settings[email_registeradmin]);
  205. if (is_array($send_emails)) {
  206. foreach ($send_emails AS $key => $var) {
  207. $var = trim($var);
  208. if (validate_email($var)) {
  209. $toemail = $var;
  210. eval(makeemaileval('message', 'TECHBODY_newuser', $subject));
  211. dp_mail($var, $subject, $message);
  212. }
  213. }
  214. }
  215. // redirect to control panel
  216. jump("newticket.php", "redirect_registered");
  217. }
  218. ?>