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

电子政务应用

开发平台:

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: profile.php,v $
  15. // | $Date: 2004/02/10 01:34:25 $
  16. // | $Revision: 1.57 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - User profile editing pages.
  20. // +-------------------------------------------------------------+
  21. error_reporting(E_ALL & ~E_NOTICE);
  22. require_once('./global.php');
  23. //Nullify WTN-WDYL Team
  24. $template_cache = templatecache('PROFILE_emails,PROFILE_password,PROFILE_profile,HF_footer,HF_header');
  25. // default do
  26. $_REQUEST['do'] = trim($_REQUEST['do']);
  27. if (!isset($_REQUEST['do']) or $_REQUEST['do'] == "") {
  28. $_REQUEST['do'] = "view_profile";
  29. }
  30. check_user(1);
  31. $page = 'settings';
  32. ############################### UPDATE THE DEFAULT EMAIL ###############################
  33. if ($_REQUEST['do'] == "defaultemail") {
  34. // check that the email is valid
  35. $result = $db->query_return("
  36. SELECT COUNT(*) AS total 
  37. FROM user_email 
  38. WHERE email = '" . mysql_escape_string($_REQUEST[email]) . "'
  39. AND userid = '$session[userid]'
  40. ");
  41. if ($db->num_rows()) {
  42. // insert the current default email into user_email
  43. $authcode = substr(md5(rand()), 20);
  44. $db->query("
  45. INSERT INTO user_email SET
  46. userid = '$session[userid]',
  47. email = '" . mysql_escape_string($user['email']) . "',
  48. authcode = '" . mysql_escape_string($authcode) . "',
  49. validated = 1
  50. ");
  51. // update current default email
  52. $db->query("UPDATE user SET
  53. email = '" . mysql_escape_string($_REQUEST['defaultemail']) ."'
  54. WHERE id = '$session[userid]'
  55. ");
  56. // delete new default email
  57. $db->query("DELETE FROM user_email WHERE
  58. email = '" . mysql_escape_string($_REQUEST['defaultemail']) . "'
  59. ");
  60. jump('profile.php?do=view_emails', 'redirect_email_verified');
  61. } else {
  62. jump('profile.php?do=view_emails', 'redirect_verified');
  63. }
  64. }
  65. ############################### VALIDATE EMAIL (EMAIL SENT TO USER) ###############################
  66. if ($_REQUEST['do'] == "validate") {
  67. // check in db
  68. $result = $db->query_return("
  69. SELECT COUNT(*) AS total 
  70. FROM user_email 
  71. WHERE email = '" . mysql_escape_string($_REQUEST[email]) . "'
  72. AND authcode = '" . mysql_escape_string($_REQUEST[authcode]) . "'
  73. ");
  74. // update if valid
  75. if ($result[total] > 0) {
  76. $db->query("
  77. UPDATE user_email 
  78. SET validated = '1' 
  79. WHERE email = '" . mysql_escape_string($_REQUEST[email]) . "'
  80. AND authcode = '" . mysql_escape_string($_REQUEST[authcode]) . "'
  81. ");
  82. // delete it from anyone else
  83. $db->query("
  84. DELETE FROM user_email 
  85. WHERE email = '" . mysql_escape_string($_REQUEST[email]) . "'
  86. AND userid != '$user[id]'
  87. ");
  88. jump('profile.php?do=view_emails', 'redirect_email_verified');
  89. } else {
  90. error('validate_error');
  91. }
  92. }
  93. ############################### ADD EMAIL ###############################
  94. if ($_REQUEST['do'] == "addemail") {
  95. if (!validate_email($_REQUEST['newemail'])) {
  96. error('invalid_email');
  97. }
  98. if (!unique_email($_REQUEST['newemail'])) {
  99. error('email_not_unique');
  100. }
  101. // lets check not already added
  102. $mail = $db->query_return("
  103. SELECT * FROM user_email 
  104. WHERE email = '" . mysql_escape_string($_REQUEST[newemail]) . "'
  105. AND userid = '$user[id]'
  106. ");
  107. if ($db->num_rows()) {
  108. $_REQUEST['do'] = 'resend';
  109. $_REQUEST['email'] = $_REQUEST['newemail'];
  110. } else {
  111. $authcode = substr(md5(rand()), 20);
  112. $db->query("
  113. INSERT INTO user_email SET
  114. userid = '$session[userid]',
  115. email = '" . mysql_escape_string($_REQUEST['newemail']) . "',
  116. authcode = '" . mysql_escape_string($authcode) . "'
  117. ");
  118. $email = urlencode($_REQUEST['newemail']);
  119. $user_details = $user;
  120. $user_details = update_user_details($user_details);;
  121. eval(makeemaileval('message', 'BODY_newemail_confirm', $subject));
  122. echo $_REQUEST['newemail'];
  123. dp_mail($_REQUEST['newemail'], $subject, $message);
  124. jump('profile.php?do=view_emails', 'redirect_email_added_validate');
  125. }
  126. }
  127. ############################### RE-SEND EMAIL ###############################
  128. if ($_REQUEST['do'] == 'resend') {
  129. $_REQUEST['email'] = mysql_escape_string($_REQUEST['email']);
  130. $mail = $db->query_return("
  131. SELECT * FROM user_email 
  132. WHERE email = '" . mysql_escape_string($_REQUEST[email]) . "'
  133. AND userid = '$user[id]'
  134. ");
  135. $email = urlencode($_REQUEST['email']);
  136. $authcode = $mail['authcode'];
  137. if (is_array($mail)) {
  138. $user_details = $user;
  139. $user_details = update_user_details($user_details);;
  140. eval(makeemaileval('message', 'BODY_newemail_confirm', $subject));
  141. dp_mail($mail['email'], $subject, $message);
  142. jump('profile.php?do=view_emails', 'redirect_email_resent');
  143. } else {
  144. error('invalid_email');
  145. }
  146. }
  147. ############################## RE-SEND WELCOME MAIL #########################
  148. if ($_REQUEST['do'] == 'resend_welcome') {
  149. $user_details = $user;
  150. $user_details = update_user_details($user_details);;
  151. eval(makeemaileval('message', 'BODY_register_confirm', $subject));
  152. dp_mail($user_details['email'], $subject, $message);
  153. jump('profile.php?do=view_emails', 'redirect_email_resent');
  154. }
  155. ############################### CANCEL EMAIL ###############################
  156. if ($_REQUEST['do'] == 'cancel') {
  157. $mail = $db->query_return("
  158. SELECT * FROM user_email 
  159. WHERE userid = '$session[userid]' 
  160. AND email = '" . mysql_escape_string($_REQUEST[email]) . "'
  161. ");
  162. if (is_array($mail)) {
  163. $db->query("
  164. DELETE FROM user_email 
  165. WHERE userid = '$session[userid]' 
  166. AND email = '" . mysql_escape_string($_REQUEST[email]) . "'
  167. ");
  168. jump('profile.php?do=view_emails', 'redirect_email_deleted');
  169. } else {
  170. error('invalid_email');
  171. }
  172. }
  173. ############################### DELETE EMAIL ###############################
  174. if ($_REQUEST['do'] == "delete") {
  175. $db->query("DELETE FROM user_email 
  176. WHERE email = '" . mysql_escape_string($_REQUEST[email]) . "'
  177. AND userid = '$session[userid]'
  178. ");
  179. if ($db->num_rows() > 0) {
  180. $db->query("
  181. SELECT id, email 
  182. FROM ticket 
  183. WHERE userid = $user[id] 
  184. AND email = '".mysql_escape_string($_REQUEST[email])."'
  185. ");
  186. while ($tlog = $db->row_array()) {
  187. ticketlog($tlog[id], 'email_changed', 0, 0, mysql_escape_string($tlog[ticketemail]), mysql_escape_string($_REQUEST[email]));
  188. }
  189. $db->query("UPDATE ticket SET
  190. email = '" . addslashes($user[email]) . "'
  191. WHERE userid = '$user[id]'
  192. AND email = '" . mysql_escape_string($_REQUEST[email]) . "'
  193. ");
  194. jump('profile.php?do=view_emails', 'redirect_email_deleted');
  195. } else {
  196. error('noemail_to_delete');
  197. }
  198. }
  199. ############################### UPDATE PASSWORD ###############################
  200. if ($_REQUEST['do'] == "updatepassword") {
  201. $password = $db->query_return("SELECT password FROM user WHERE id = '$user[id]'");
  202. $user['password'] = $password['password'];
  203. if ($_REQUEST['currpass'] != $user['password']) {
  204. error('nomatch_password');
  205. }
  206. if (strlen($_REQUEST[password1]) < 5) {
  207. error('passwordshort');
  208. }
  209. if ($_REQUEST[password1] != $_REQUEST[password2]) {
  210. error('match_passwords');
  211. }
  212. $password1 = mysql_escape_string($_REQUEST[password1]);
  213. $password_cookie = md5($session[sessionid] . $_REQUEST[password1] . uniqid(rand(),1));
  214. $password_url = md5($session[sessionid] . $_REQUEST[password1] . uniqid(rand(),1));
  215.     $password_cookie = substr($password_cookie, 0, 8);
  216.     $password_url = substr($password_url, 0, 8);
  217. $db->query("
  218. UPDATE user SET 
  219. password = '" . mysql_escape_string($password1) . "', 
  220. password_cookie = '" . mysql_escape_string($password_cookie) . "', 
  221. password_url = '" . mysql_escape_string($password_url) . "' 
  222. WHERE id = $user[id]
  223. ");
  224. setcookie("dp_user_password", $password_cookie);
  225. // get back updated user
  226. $user_details = $db->query_return("SELECT * FROM user WHERE id = '$user[id]'");
  227. $user_details = update_user_details($user_details);;
  228. eval(makeemaileval('message', 'BODY_changepass', $subject));
  229. dp_mail($user_details[email], $subject, $message);
  230. jump('profile.php?do=view_profile', 'redirect_password_change');
  231. }
  232. #############################################################################################
  233. ############################### GLOBAL FOR DISPLAY PROFILE PAGES ############################
  234. #############################################################################################
  235. if ($_REQUEST['do'] == 'view_password' OR $_REQUEST['do'] == 'view_emails' OR $_REQUEST['do'] == 'view_profile' OR $_REQUEST['do'] == 'edit_profile') {
  236. // if we have custom user fields enable user to edit their profile
  237. $result = $db->query_return("SELECT COUNT(*) 
  238. AS total 
  239. FROM user_def
  240. WHERE user_viewable
  241. ");
  242. if ($result[total] > 0) {
  243. $display_profile = 1;
  244. }
  245. eval(makeeval('header', 'HF_header'));
  246. eval(makeeval('footer', 'HF_footer'));
  247. eval(makeeval('profile_header', 'PROFILE_header'));
  248. }
  249. ############################### VIEW PASSWORDS ###############################
  250. if ($_REQUEST['do'] == "view_password") {
  251. eval(makeeval('header', 'HF_header'));
  252. eval(makeeval('footer', 'HF_footer'));
  253. eval(makeeval('echo', 'PROFILE_password'));
  254. }
  255. ############################### VIEW EMAILS ###############################
  256. if ($_REQUEST['do'] == "view_emails") {
  257. $validated[] = array('email' => $user[email]);
  258. $db->query("SELECT * FROM user_email WHERE userid = '$session[userid]'");
  259. while ($result = $db->row_array()) {
  260. if ($result[validated] == 1) {
  261. $validated[] = array('email' => $result[email]);
  262. } else {
  263. $unvalidated[] = array('email' => $result[email]);
  264. }
  265. }
  266. eval(makeeval('header', 'HF_header'));
  267. eval(makeeval('footer', 'HF_footer'));
  268. eval(makeeval('echo', 'PROFILE_emails'));
  269. }
  270. ############################### EDIT PROFILE ###############################
  271. if ($_REQUEST['do'] == 'edit_profile') {
  272. $db->query("SELECT * from user_def WHERE user_editable");
  273. while ($result = $db->row_array()) {
  274. $data = field_def_val(
  275. $result, 
  276. $_REQUEST[custom_fields][$result[name]], 
  277. $_REQUEST[custom_fields]["extra" . $result[name]]
  278. );
  279. if ($data === NULL) {
  280. $tmp = unserialize($result[error_message]);
  281. $error_message = $tmp[$session[language]];
  282. // form errors;
  283. $custom_error[] = array('error' => $error_message);
  284. // for form design
  285. $custom_errors[] = $result[name];
  286. $stop = 1;
  287. } else {
  288. $query[] = " $result[name] = '" . mysql_escape_string($data) . "'";
  289. }
  290. }
  291. $query[] = " timezone = '" . mysql_escape_string($_REQUEST['timezone']) . "'";
  292. $query[] = " timezone_dst = '" . mysql_escape_string($_REQUEST['timezone_dst']) . "'";
  293. $query[] = " name = '" . mysql_escape_string($_REQUEST['name']) . "'";
  294. if ($stop) {
  295. $redo = 1;
  296. } else {
  297. $query = join(', ', $query);
  298. $db->query("UPDATE user SET $query WHERE id = $user[id]");
  299. $user = $db->query_return("SELECT * FROM user WHERE id = $user[id]");
  300. }
  301. $_REQUEST['do'] = 'view_profile';
  302. }
  303. ############################### VIEW PROFILE ###############################
  304. if ($_REQUEST['do'] == "view_profile") {
  305. // get profile data
  306. $db->query(
  307. "SELECT * from user_def
  308. WHERE user_viewable
  309. ORDER by displayorder"
  310. );
  311. $custom = array();
  312. while ($result = $db->row_array()) {
  313. unset($name, $description, $error, $html);
  314. $tmp = unserialize($result[display_name]);
  315. $name = $tmp[$session[language]];
  316. $tmp = unserialize($result[description]);
  317. $description = $tmp[$session[language]];
  318. if ($result['user_editable']) {
  319. if ($stop) {
  320. $html = field_def($result, 'redo', $_REQUEST[custom_fields][$result[name]], $_REQUEST[custom_fields]["extra" . $result[name]]);
  321. } else {
  322. $html = field_def($result, 'edit', $user[$result[name]], NULL, $user[$result[name]]);
  323. }
  324. } else {
  325. $html = field_display($result, $user[$result['name']], 1);
  326. }
  327. $tmp = unserialize($result[error_message]);
  328. $error = $tmp[$session[language]];
  329. // two arrays, one for loop and one to allow custom form design
  330. $custom[] = array(
  331. 'name' => $name,
  332. 'description' => $description,
  333. 'html' => $html,
  334. 'error' => iff(@in_array($result[name], $custom_errors), $error, '')
  335. );
  336. ${$result[name]} = array(
  337. 'name' => $name,
  338. 'description' => $description,
  339. 'html' => $html,
  340. 'error' => iff(@in_array($result[name], $custom_errors), $error, '')
  341. );
  342. }
  343. $attach = array();
  344. $timezone = make_timezone($user['timezone']);
  345. $timezone_dst = form_checkbox('timezone_dst', NULL, $user['timezone_dst'], NULL, NULL);
  346. eval(makeeval('header', 'HF_header'));
  347. eval(makeeval('footer', 'HF_footer'));
  348. eval(makeeval('echo', 'PROFILE_profile'));
  349. }