PageRenderTime 47ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/core/profile.php

http://rqcms.googlecode.com/
PHP | 224 lines | 202 code | 18 blank | 4 comment | 53 complexity | 7ab0d2e7c160633329c718dad3fd1729 MD5 | raw file
  1. <?php
  2. if(!defined('RQ_ROOT')) exit('Access Denied');
  3. function CheckEmail($email)
  4. {
  5. if (!empty($email))
  6. {
  7. return preg_match('/^[a-z0-9]+([\+_\-\.]?[a-z0-9]+)*@([a-z0-9]+[\-]?[a-z0-9]+\.)+[a-z]{2,6}$/i', $email);
  8. }
  9. return FALSE;
  10. }
  11. $url=isset($_GET['url'])?$_GET['url']:(isset($_POST['url'])?$_POST['url']:'');
  12. if(RQ_POST)
  13. {
  14. if($url == 'doregister' || $url == 'domod')
  15. {
  16. $doreg = $url == 'doregister' ? true : false;
  17. $confirmpassword = $_POST['confirmpassword'];
  18. $email=isset($_POST['email'])?$_POST['email']:'';
  19. $siteurl='';
  20. if ($doreg)
  21. {
  22. $username =trim($_POST['username']);
  23. $password = $_POST['password'];
  24. doAction('profile_reg_check');
  25. //??
  26. if(!$username || strlen($username) > 30)
  27. {
  28. message('?????????30??.', $register_url);
  29. }
  30. if ($host['censoruser'])
  31. {
  32. $host['censoruser'] = str_replace('?', ',', $host['censoruser']);
  33. $banname = explode(',',$host['censoruser']);
  34. foreach($banname as $value)
  35. {
  36. if (strpos($username,$value) !== false)
  37. {
  38. message('???????????????????,????????.', $register_url);
  39. }
  40. }
  41. }
  42. $name_key = array("\\",'&',' ',"'",'"','/','*',',','<','>',"\r","\t","\n",'#','$','(',')','%','@','+','?',';','^');
  43. foreach($name_key as $value)
  44. {
  45. if (strpos($username,$value) !== false)
  46. {
  47. message('???????????????????,????????.', $register_url);
  48. }
  49. }
  50. if (!$password || strlen($password) < 3)
  51. {
  52. message('????????????????3?.',$register_url);
  53. }
  54. if ($password != $confirmpassword)
  55. {
  56. message('??????????.', $register_url);
  57. }
  58. if (strpos($password,"\n") !== false || strpos($password,"\r") !== false || strpos($password,"\t") !== false)
  59. {
  60. message('??????????.', $register_url);
  61. }
  62. $r = $DB->fetch_first("SELECT uid FROM ".DB_PREFIX."user WHERE username='$username'");
  63. if($r['uid'])
  64. {
  65. message('????????,????????????.', $register_url);
  66. unset($r);
  67. }
  68. if ($email)
  69. {
  70. if(CheckEmail($email))
  71. {
  72. $r = $DB->fetch_first("SELECT uid FROM ".DB_PREFIX."user WHERE email='$email'");
  73. if($r['uid'])
  74. {
  75. message('?E-mail????.', $register_url);
  76. }
  77. unset($r);
  78. }
  79. else message('?E-mail?????.', $register_url);
  80. }
  81. $password = md5($password);
  82. $DB->query("INSERT INTO ".DB_PREFIX."user (username, password, logincount, loginip, logintime, url, regdateline, regip, groupid,hostid,email) VALUES ('$username', '$password', '1', '$onlineip', '$timestamp', '$siteurl', '$timestamp', '$onlineip', '1',$hostid,'$email')");
  83. $uid = $DB->insert_id();
  84. $sql='Select * from '.DB_PREFIX."user where `uid`='$uid'";
  85. $result=$DB->fetch_first($sql);
  86. $sessionid=getRandStr(30,false);//????????
  87. $expire=isset($_POST['rememberme'])?$timestamp+31536000:0;//???????????????????????????
  88. setcookie('sessionid',$sessionid,$expire,'',RQ_HOST);
  89. $DB->query('update '.DB_PREFIX."user set `logincount`=`logincount`+1,`loginip`='$onlineip',`logintime`='$timestamp',`sessionid`='$sessionid',`useragent`='$useragent' where uid='$uid'");
  90. $DB->query('insert into '.DB_PREFIX."log (`user`,`dateline`,`useragent`,`ip`,`content`) values ('$username','$timestamp','$useragent','$onlineip','???????')");
  91. //????
  92. message('????.', $profile_url);
  93. }
  94. else
  95. {
  96. //????
  97. $password_sql = '';
  98. $oldpassword = md5($_POST['oldpassword']);
  99. $newpassword = $_POST['newpassword'];
  100. $email=$_POST['email'];
  101. if($email)
  102. {
  103. $password_sql = "email='$email'";
  104. }
  105. if ($newpassword)
  106. {
  107. $user = $DB->fetch_first("SELECT password FROM ".DB_PREFIX."user WHERE uid='$uid'");
  108. if (!$user) {
  109. message('??,?????????????',$loginurl);
  110. }
  111. if ($oldpassword != $user['password']) {
  112. message('???????????',$profile_url);
  113. }
  114. if(strlen($newpassword) < 3) {
  115. message('?????????3?',$profile_url);
  116. }
  117. if ($newpassword != $confirmpassword) {
  118. message('???????????',$profile_url);
  119. }
  120. if (strpos($newpassword,"\n") !== false || strpos($newpassword,"\r") !== false || strpos($newpassword,"\t") !== false) {
  121. message('??????????',$profile_url);
  122. }
  123. if($password_sql) $password_sql .= ",password='".md5($newpassword)."'";
  124. else $password_sql = "password='".md5($newpassword)."'";
  125. }
  126. if($password_sql) $DB->unbuffered_query("UPDATE ".DB_PREFIX."user SET $password_sql WHERE uid='$uid'");
  127. if ($newpassword)
  128. {
  129. $DB->query('update '.DB_PREFIX."user set `sessionid`='x' where uid='$uid'");
  130. message('???????,??????,??????.', $login_url);
  131. } else {
  132. message('???????.', $profile_url);
  133. }
  134. }
  135. }
  136. else if($url=='dologin')
  137. {
  138. // ???????
  139. $username = trim($_POST['username']);
  140. $password = md5($_POST['password']);
  141. $userinfo = $DB->fetch_first("SELECT * FROM ".DB_PREFIX."user WHERE username='$username'");
  142. if($userinfo)
  143. {
  144. if($userinfo['password']==$password)
  145. {
  146. $uid=$userinfo['uid'];
  147. if($userinfo['groupid']<3&&$userinfo['hostid']!=$hostid) $loginerr='???????';
  148. elseif($userinfo['groupid']>2) $loginerr='???????????????';//?????,????????
  149. else
  150. {
  151. $sessionid=getRandStr(30,true);//????????
  152. $expire=$timestamp+31536000;//???????????????????????????
  153. setcookie('sessionid',$sessionid,$expire,'',RQ_HOST);
  154. $DB->query('update '.DB_PREFIX."user set `logincount`=`logincount`+1,`loginip`='$onlineip',`logintime`='$timestamp',`sessionid`='$sessionid',`useragent`='$useragent' where uid='$uid'");
  155. $DB->query('insert into '.DB_PREFIX."log (`user`,`dateline`,`useragent`,`ip`,`content`) values ('$username','$timestamp','$useragent','$onlineip','??????')");
  156. message('????', $profile_url);
  157. }
  158. }
  159. else $loginerr='????';
  160. }
  161. else $loginerr='???????';
  162. message($loginerr,$login_url);
  163. }
  164. }
  165. else
  166. {
  167. if(!$url) $url='mod';
  168. $userinfo = $DB->fetch_first("SELECT * FROM ".DB_PREFIX."user WHERE uid='$uid'");
  169. switch($url)
  170. {
  171. case 'clearcookies':
  172. if(is_array($_COOKIE))
  173. {
  174. foreach ($_COOKIE as $key => $val)
  175. {
  176. setcookie($key, '');
  177. }
  178. }
  179. message('??COOKIE??', './');
  180. break;
  181. case 'logout':
  182. $adminitem=array();
  183. $groupid=0;
  184. $DB->query('update '.DB_PREFIX."user set `sessionid`='x' where uid='$uid'");
  185. ob_end_clean();
  186. ob_start();
  187. message('????', './');
  188. break;
  189. case 'login':
  190. if($groupid>0) message('???????', $profile_url);
  191. $pagefile = 'login';
  192. $title='??';
  193. break;
  194. case 'register':
  195. if($groupid>0) message('???????', $profile_url);
  196. $pagefile='register';
  197. $title='????';
  198. break;
  199. case 'edit':
  200. $pagefile = 'edit';
  201. $title='??????';
  202. break;
  203. default:
  204. $title='????';
  205. }
  206. }