PageRenderTime 55ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/e/class/user.php

https://github.com/westeast/xwdede
PHP | 1443 lines | 1274 code | 45 blank | 124 comment | 168 complexity | 45117d859875c68406f9c1a0dbbe8014 MD5 | raw file
  1. <?php
  2. if(!defined('InEmpireCMS'))
  3. {
  4. exit();
  5. }
  6. define('InEmpireCMSUser',TRUE);
  7. //表前缀
  8. if(!defined('InEmpireCMS'))
  9. {$user_tbpre="phome_";}
  10. else
  11. {$user_tbpre=$dbtbpre;}
  12. //---------------------- 下面开始会员相关设置 ----------------------
  13. $user_tablename="{$user_tbpre}enewsmember"; //用户表
  14. $user_userid="userid"; //用户ID字段
  15. $user_username="username"; //用户名字段
  16. $user_password="password"; //密码字段
  17. $user_dopass=0; //密码保存形式,0为md5,1为明码,2为双重加密,3为16位md5
  18. $user_rnd="rnd"; //随机密码
  19. $user_email="email"; //邮箱字段
  20. $user_checked="checked"; //审核状态字段
  21. $user_registertime="registertime"; //注册时间字段
  22. $user_regcookietime=0; //注册信息保存时间(秒)
  23. $user_register=0; //注册时间保存形式,0为正常时间,1为数值型
  24. $user_group="groupid"; //会员组字段
  25. $user_userfen="userfen"; //点数字段
  26. $user_userdate="userdate"; //有效期字段
  27. $user_zgroup="zgroupid"; //到期转向会员组
  28. $user_money="money"; //帐户余额
  29. $user_havemsg="havemsg"; //有短消息
  30. $user_groupid=$public_r[defaultgroupid]; //注册时会员组ID(ecms的会员组)
  31. //会员页面
  32. $changeregisterurl="ChangeRegister.php"; //多会员组中转注册地址
  33. $registerurl=""; //注册地址
  34. $eloginurl=""; //登陆地址
  35. $equiturl=""; //退出地址
  36. //特殊设置(如vbb,molyx)
  37. $user_salt="salt"; //salt
  38. $user_saltnum=3; //salt随机码字符数
  39. $utfdata=0; //数据是否是GBK编码,0为正常数据,1为GBK编码
  40. //---------------------- 会员相关设置结束 ----------------------
  41. //编码转换
  42. function doUtfAndGbk($str,$phome=0){
  43. global $utfdata;
  44. if(empty($utfdata))//正常编码
  45. {
  46. return $str;
  47. }
  48. if(!function_exists("iconv"))//是否支持iconv
  49. {
  50. $fun="DoIconvVal";
  51. $code="UTF8";
  52. $targetcode="GB2312";
  53. }
  54. else
  55. {
  56. $fun="iconv";
  57. $code="UTF-8";
  58. $targetcode="GBK";
  59. }
  60. if(empty($phome))
  61. {
  62. $str=$fun($code,$targetcode,$str);
  63. }
  64. else
  65. {
  66. $str=$fun($targetcode,$code,$str);
  67. }
  68. return addslashes($str);
  69. }
  70. //登录附加cookie
  71. function AddLoginCookie($r){
  72. }
  73. //取得表单id
  74. function GetMemberFormId($groupid){
  75. global $empire,$dbtbpre;
  76. $groupid=(int)$groupid;
  77. $r=$empire->fetch1("select formid from {$dbtbpre}enewsmembergroup where groupid='$groupid'");
  78. return $r['formid'];
  79. }
  80. //验证会员组是否可注册
  81. function CheckMemberGroupCanReg($groupid){
  82. global $empire,$dbtbpre;
  83. $groupid=(int)$groupid;
  84. $r=$empire->fetch1("select groupid from {$dbtbpre}enewsmembergroup where groupid='$groupid' and canreg=1");
  85. if(empty($r['groupid']))
  86. {
  87. printerror('ErrorUrl','',1);
  88. }
  89. }
  90. //后台修改资料
  91. function admin_EditMember($add,$logininid,$loginin){
  92. global $empire,$user_tablename,$user_username,$user_userid,$user_password,$user_dopass,$user_group,$user_email,$user_userfen,$user_money,$user_userdate,$user_saltnum,$user_salt,$user_zgroup,$dbtbpre,$user_checked;
  93. if(!trim($add[userid])||!trim($add[email])||!trim($add[username])||!$add[groupid])
  94. {
  95. printerror("EmptyEmail","history.go(-1)");
  96. }
  97. CheckLevel($logininid,$loginin,$classid,"member");//验证权限
  98. //变量
  99. $add[userid]=(int)$add[userid];
  100. $add[checked]=(int)$add[checked];
  101. //编码转换
  102. $dousername=$add[username];
  103. $dooldusername=$add[oldusername];
  104. $add[username]=doUtfAndGbk($add[username],0);
  105. $add[oldusername]=doUtfAndGbk($add[oldusername],0);
  106. $add[password]=doUtfAndGbk($add[password],0);
  107. $add[email]=doUtfAndGbk($add[email],0);
  108. //修改密码
  109. $add1='';
  110. if($add[password])
  111. {
  112. $sa='';
  113. if(empty($user_dopass))//单重md5
  114. {
  115. $add[password]=md5($add[password]);
  116. }
  117. elseif($user_dopass==2)//双重md5
  118. {
  119. $salt=make_password($user_saltnum);
  120. $add[password]=md5(md5($add[password]).$salt);
  121. $sa=",".$user_salt."='$salt'";
  122. }
  123. elseif($user_dopass==3)//16位md5
  124. {
  125. $add[password]=substr(md5($add[password]),8,16);
  126. }
  127. else
  128. {}
  129. $add1=",".$user_password."='".$add[password]."'".$sa;
  130. }
  131. //修改用户名
  132. if($add[oldusername]<>$add[username])
  133. {
  134. $num=$empire->gettotal("select count(*) as total from ".$user_tablename." where ".$user_username."='$add[username]' and ".$user_userid."<>".$add[userid]." limit 1");
  135. $add1.=",".$user_username."='$add[username]'";
  136. if($num)
  137. {
  138. printerror("ReUsername","history.go(-1)");
  139. }
  140. }
  141. //包月
  142. $add[zgroupid]=(int)$add[zgroupid];
  143. if($add[userdate]>0)
  144. {
  145. $userdate=time()+$add[userdate]*24*3600;
  146. }
  147. else
  148. {
  149. $add[zgroupid]=0;
  150. }
  151. //变量
  152. $add[groupid]=(int)$add[groupid];
  153. $add[userfen]=(int)$add[userfen];
  154. $userdate=(int)$userdate;
  155. $add[money]=(float)$add[money];
  156. $add[spacestyleid]=(int)$add[spacestyleid];
  157. //验证附加表必填项
  158. $addr=$empire->fetch1("select * from {$dbtbpre}enewsmemberadd where userid='$add[userid]'");
  159. $fid=GetMemberFormId($add[groupid]);
  160. if(empty($addr[userid]))
  161. {
  162. $member_r=ReturnDoMemberF($fid,$_POST,$mr,0,$dousername,1);
  163. }
  164. else
  165. {
  166. $member_r=ReturnDoMemberF($fid,$_POST,$addr,1,$dousername,1);
  167. }
  168. $sql=$empire->query("update ".$user_tablename." set ".$user_email."='$add[email]',".$user_group."=$add[groupid],".$user_userfen."=$add[userfen],".$user_money."=$add[money],".$user_userdate."=$userdate,".$user_zgroup."=$add[zgroupid],".$user_checked."=$add[checked]".$add1." where ".$user_userid."='$add[userid]'");
  169. //更改用户名
  170. if($add[oldusername]<>$add[username])
  171. {
  172. //短信息
  173. $empire->query("update {$dbtbpre}enewsqmsg set to_username='$dousername' where to_username='$dooldusername'");
  174. $empire->query("update {$dbtbpre}enewsqmsg set from_username='$dousername' where from_username='$dooldusername'");
  175. //收藏
  176. $empire->query("update {$dbtbpre}enewsfava set username='$dousername' where userid='$add[userid]'");
  177. //购买记录
  178. $empire->query("update {$dbtbpre}enewsbuybak set username='$dousername' where userid='$add[userid]'");
  179. //下载记录
  180. $empire->query("update {$dbtbpre}enewsdownrecord set username='$dousername' where userid='$add[userid]'");
  181. //信息表
  182. $tbsql=$empire->query("select tbname from {$dbtbpre}enewstable");
  183. while($tbr=$empire->fetch($tbsql))
  184. {
  185. $empire->query("update {$dbtbpre}ecms_".$tbr['tbname']." set username='$dousername' where userid='$add[userid]' and ismember=1");
  186. }
  187. }
  188. //附加表
  189. if(empty($addr[userid]))
  190. {
  191. $sql1=$empire->query("insert into {$dbtbpre}enewsmemberadd(userid,spacestyleid".$member_r[0].") values($add[userid],$add[spacestyleid]".$member_r[1].");");
  192. }
  193. else
  194. {
  195. $sql1=$empire->query("update {$dbtbpre}enewsmemberadd set spacestyleid=$add[spacestyleid]".$member_r[0]." where userid='$add[userid]'");
  196. }
  197. if($sql)
  198. {
  199. insert_dolog("userid=".$add[userid]."<br>username=".$dousername);//操作日志
  200. printerror("EditMemberSuccess","ListMember.php");
  201. }
  202. else
  203. {
  204. printerror("DbError","history.go(-1)");
  205. }
  206. }
  207. //后台删除会员
  208. function admin_DelMember($userid,$loginuserid,$loginusername){
  209. global $empire,$user_tablename,$user_username,$user_userid,$dbtbpre,$user_group;
  210. $userid=(int)$userid;
  211. if(empty($userid))
  212. {
  213. printerror("NotDelMemberid","history.go(-1)");
  214. }
  215. CheckLevel($loginuserid,$loginusername,$classid,"member");//验证权限
  216. $r=$empire->fetch1("select ".$user_username.",".$user_group." from ".$user_tablename." where ".$user_userid."='$userid'");
  217. if(empty($r[$user_username]))
  218. {
  219. printerror("NotDelMemberid","history.go(-1)");
  220. }
  221. $sql=$empire->query("delete from ".$user_tablename." where ".$user_userid."='$userid'");
  222. $dousername=doUtfAndGbk($r[$user_username],1);
  223. //删除附加表
  224. $fid=GetMemberFormId($r[$user_group]);
  225. DoDelMemberF($fid,$userid,$dousername);
  226. //删除收藏
  227. $del=$empire->query("delete from {$dbtbpre}enewsfava where userid='$userid'");
  228. $del=$empire->query("delete from {$dbtbpre}enewsfavaclass where userid='$userid'");
  229. //删除短信息
  230. $del=$empire->query("delete from {$dbtbpre}enewsqmsg where to_username='".$dousername."'");
  231. //删除购买记录
  232. $del=$empire->query("delete from {$dbtbpre}enewsbuybak where userid='$userid'");
  233. //删除下载记录
  234. $del=$empire->query("delete from {$dbtbpre}enewsdownrecord where userid='$userid'");
  235. //删除好友记录
  236. $del=$empire->query("delete from {$dbtbpre}enewshy where userid='$userid'");
  237. $del=$empire->query("delete from {$dbtbpre}enewshyclass where userid='$userid'");
  238. //删除留言
  239. $del=$empire->query("delete from {$dbtbpre}enewsmembergbook where userid='$userid'");
  240. //删除反馈
  241. $del=$empire->query("delete from {$dbtbpre}enewsmemberfeedback where userid='$userid'");
  242. if($sql)
  243. {
  244. insert_dolog("userid=".$userid."<br>username=".$dousername);//操作日志
  245. printerror("DelMemberSuccess","ListMember.php");
  246. }
  247. else
  248. {
  249. printerror("DbError","history.go(-1)");
  250. }
  251. }
  252. //后台批量删除会员
  253. function admin_DelMember_all($userid,$logininid,$loginin){
  254. global $empire,$user_tablename,$user_username,$user_userid,$dbtbpre,$level_r,$user_group;
  255. CheckLevel($logininid,$loginin,$classid,"member");//验证权限
  256. $count=count($userid);
  257. if(!$count)
  258. {
  259. printerror("NotDelMemberid","history.go(-1)");
  260. }
  261. $dh="";
  262. for($i=0;$i<$count;$i++)
  263. {
  264. $euid=(int)$userid[$i];
  265. //删除短信息
  266. $ur=$empire->fetch1("select ".$user_username.",".$user_group." from ".$user_tablename." where ".$user_userid."='".$euid."'");
  267. if(empty($ur[$user_username]))
  268. {
  269. continue;
  270. }
  271. $dousername=doUtfAndGbk($ur[$user_username],1);
  272. //删除附加表
  273. $fid=GetMemberFormId($ur[$user_group]);
  274. DoDelMemberF($fid,$euid,$dousername);
  275. $del=$empire->query("delete from {$dbtbpre}enewsqmsg where to_username='".$dousername."'");
  276. //集合
  277. $inid.=$dh.$euid;
  278. $dh=",";
  279. }
  280. if(empty($inid))
  281. {
  282. printerror("NotDelMemberid","history.go(-1)");
  283. }
  284. $add=$user_userid." in (".$inid.")";
  285. $adda="userid in (".$inid.")";
  286. $sql=$empire->query("delete from ".$user_tablename." where ".$add);
  287. //删除收藏
  288. $del=$empire->query("delete from {$dbtbpre}enewsfava where ".$adda);
  289. $del=$empire->query("delete from {$dbtbpre}enewsfavaclass where ".$adda);
  290. //删除购买记录
  291. $del=$empire->query("delete from {$dbtbpre}enewsbuybak where ".$adda);
  292. //删除下载记录
  293. $del=$empire->query("delete from {$dbtbpre}enewsdownrecord where ".$adda);
  294. //删除好友记录
  295. $del=$empire->query("delete from {$dbtbpre}enewshy where ".$adda);
  296. $del=$empire->query("delete from {$dbtbpre}enewshyclass where ".$adda);
  297. //删除留言
  298. $del=$empire->query("delete from {$dbtbpre}enewsmembergbook where ".$adda);
  299. //删除反馈
  300. $del=$empire->query("delete from {$dbtbpre}enewsmemberfeedback where ".$adda);
  301. if($sql)
  302. {
  303. insert_dolog("");//操作日志
  304. printerror("DelMemberSuccess","ListMember.php");
  305. }
  306. else
  307. {
  308. printerror("DbError","history.go(-1)");
  309. }
  310. }
  311. //审核会员
  312. function admin_DoCheckMember_all($userid,$logininid,$loginin){
  313. global $empire,$user_tablename,$user_userid,$dbtbpre,$user_checked;
  314. CheckLevel($logininid,$loginin,$classid,"member");//验证权限
  315. $count=count($userid);
  316. if(!$count)
  317. {
  318. printerror("NotChangeDoCheckMember","history.go(-1)");
  319. }
  320. for($i=0;$i<$count;$i++)
  321. {
  322. $dh=",";
  323. if($i==0)
  324. {
  325. $dh="";
  326. }
  327. //集合
  328. $inid.=$dh.intval($userid[$i]);
  329. }
  330. $sql=$empire->query("update ".$user_tablename." set ".$user_checked."=1 where ".$user_userid." in (".$inid.")");
  331. if($sql)
  332. {
  333. insert_dolog("");//操作日志
  334. printerror("DoCheckMemberSuccess","ListMember.php");
  335. }
  336. else
  337. {
  338. printerror("DbError","history.go(-1)");
  339. }
  340. }
  341. //取得邮件地址
  342. function GetUserEmail($userid,$username){
  343. global $empire,$user_tablename,$user_email,$user_userid;
  344. $r=$empire->fetch1("select ".$user_email." from ".$user_tablename." where ".$user_userid."='$userid' limit 1");
  345. return doUtfAndGbk($r[$user_email],1);
  346. }
  347. //返回修改资料
  348. function ReturnUserInfo($userid){
  349. global $empire,$user_tablename,$user_userid,$user_username,$user_email,$user_group,$user_userfen,$user_money,$user_userdate,$user_zgroup,$user_checked,$user_registertime;
  350. $r=$empire->fetch1("select ".$user_username.",".$user_email.",".$user_group.",".$user_userfen.",".$user_money.",".$user_userdate.",".$user_zgroup.",".$user_checked.",".$user_registertime." from ".$user_tablename." where ".$user_userid."='$userid' limit 1");
  351. $re[username]=doUtfAndGbk($r[$user_username],1);
  352. $re[email]=doUtfAndGbk($r[$user_email],1);
  353. $re[userfen]=$r[$user_userfen];
  354. $re[money]=$r[$user_money];
  355. $re[groupid]=$r[$user_group];
  356. $re[userdate]=$r[$user_userdate];
  357. $re[zgroupid]=$r[$user_zgroup];
  358. $re[checked]=$r[$user_checked];
  359. $re[registertime]=$r[$user_registertime];
  360. return $re;
  361. }
  362. //返回是否审核
  363. function ReturnGroupChecked($groupid){
  364. global $level_r;
  365. if($level_r[$groupid]['regchecked']==1)
  366. {
  367. $checked=0;
  368. }
  369. else
  370. {
  371. $checked=1;
  372. }
  373. return $checked;
  374. }
  375. //返回使用空间模板
  376. function ReturnGroupSpaceStyleid($groupid){
  377. global $level_r;
  378. $spacestyleid=$level_r[$groupid]['spacestyleid']?$level_r[$groupid]['spacestyleid']:0;
  379. return intval($spacestyleid);
  380. }
  381. //选择空间模板
  382. function ChangeSpaceStyle($add){
  383. global $empire,$dbtbpre;
  384. $user_r=islogin();//是否登陆
  385. $styleid=intval($add['styleid']);
  386. if(!$styleid)
  387. {
  388. printerror('NotChangeSpaceStyleId','',1);
  389. }
  390. $sr=$empire->fetch1("select styleid,membergroup from {$dbtbpre}enewsspacestyle where styleid='$styleid'");
  391. if(!$sr['styleid']||($sr['membergroup']&&!strstr($sr['membergroup'],','.$user_r[groupid].',')))
  392. {
  393. printerror('NotChangeSpaceStyleId','',1);
  394. }
  395. $sql=$empire->query("update {$dbtbpre}enewsmemberadd set spacestyleid='$styleid' where userid='$user_r[userid]' limit 1");
  396. if($sql)
  397. {
  398. printerror('ChangeSpaceStyleSuccess','../member/mspace/ChangeStyle.php',1);
  399. }
  400. else
  401. {
  402. printerror('DbError','',1);
  403. }
  404. }
  405. //设置空间
  406. function DoSetSpace($add){
  407. global $empire,$dbtbpre;
  408. $user_r=islogin();//是否登陆
  409. $spacename=RepPostStr($add['spacename']);
  410. $spacegg=RepPostStr($add['spacegg']);
  411. $sql=$empire->query("update {$dbtbpre}enewsmemberadd set spacename='$spacename',spacegg='$spacegg' where userid='$user_r[userid]' limit 1");
  412. if($sql)
  413. {
  414. printerror('SetSpaceSuccess','../member/mspace/SetSpace.php',1);
  415. }
  416. else
  417. {
  418. printerror('DbError','',1);
  419. }
  420. }
  421. //验证注册时间
  422. function eCheckIpRegTime($ip,$time){
  423. global $empire,$dbtbpre,$user_tablename,$user_userid,$user_registertime,$user_register;
  424. if(empty($time))
  425. {
  426. return '';
  427. }
  428. $uaddr=$empire->fetch1("select userid from {$dbtbpre}enewsmemberadd where regip='$ip' order by userid desc limit 1");
  429. if(empty($uaddr['userid']))
  430. {
  431. return '';
  432. }
  433. $ur=$empire->fetch1("select ".$user_userid.",".$user_registertime." from {$user_tablename} where ".$user_userid."='".$uaddr[userid]."'");
  434. if(empty($ur[$user_userid]))
  435. {
  436. return '';
  437. }
  438. $registertime=$ur[$user_registertime];
  439. if(empty($user_register))
  440. {
  441. $registertime=to_time($registertime);
  442. }
  443. if(time()-$registertime<=$time*3600)
  444. {
  445. printerror('RegisterReIpError','',1);
  446. }
  447. }
  448. //用户注册
  449. function register($username,$password,$repassword,$email){
  450. global $empire,$user_tablename,$public_r,$user_groupid,$user_username,$user_userid,$user_email,$user_password,$user_dopass,$user_rnd,$user_registertime,$user_register,$user_group,$user_saltnum,$user_salt,$user_seting,$forumgroupid,$registerurl,$dbtbpre,$user_regcookietime,$user_userfen,$user_checked,$level_r;
  451. if($public_r['register_ok'])//关闭
  452. {
  453. printerror("CloseRegister","history.go(-1)",1);
  454. }
  455. //验证IP
  456. eCheckAccessDoIp('register');
  457. if(!empty($registerurl))
  458. {
  459. Header("Location:$registerurl");
  460. exit();
  461. }
  462. //已经登陆不能注册
  463. if(getcvar('mluserid'))
  464. {
  465. printerror("LoginToRegister","history.go(-1)",1);
  466. }
  467. CheckCanPostUrl();//验证来源
  468. $add=$_POST;
  469. $username=trim($username);
  470. $password=trim($password);
  471. $username=RepPostVar($username);
  472. $password=RepPostVar($password);
  473. if(!$username||!$password||!$email)
  474. {
  475. printerror("EmptyMember","history.go(-1)",1);
  476. }
  477. //验证码
  478. $keyvname='checkregkey';
  479. if($public_r['regkey_ok'])
  480. {
  481. ecmsCheckShowKey($keyvname,$_POST['key'],1);
  482. }
  483. $user_groupid=(int)$user_groupid;
  484. $groupid=(int)$add[groupid];
  485. $groupid=empty($groupid)?$user_groupid:$groupid;
  486. CheckMemberGroupCanReg($groupid);
  487. //IP
  488. $regip=egetip();
  489. //用户字数
  490. $pr=$empire->fetch1("select min_userlen,max_userlen,min_passlen,max_passlen,regretime,regclosewords,regemailonly from {$dbtbpre}enewspublic limit 1");
  491. $userlen=strlen($username);
  492. if($userlen<$pr[min_userlen]||$userlen>$pr[max_userlen])
  493. {
  494. printerror("FaiUserlen","history.go(-1)",1);
  495. }
  496. //密码字数
  497. $passlen=strlen($password);
  498. if($passlen<$pr[min_passlen]||$passlen>$pr[max_passlen])
  499. {
  500. printerror("FailPasslen","history.go(-1)",1);
  501. }
  502. if($repassword!==$password)
  503. {
  504. printerror("NotRepassword","history.go(-1)",1);
  505. }
  506. if(!chemail($email))
  507. {
  508. printerror("EmailFail","history.go(-1)",1);
  509. }
  510. if(strstr($username,"|")||strstr($username,"*"))
  511. {
  512. printerror("NotSpeWord","history.go(-1)",1);
  513. }
  514. //同一IP注册
  515. eCheckIpRegTime($regip,$pr['regretime']);
  516. //保留用户
  517. toCheckCloseWord($username,$pr['regclosewords'],'RegHaveCloseword');
  518. $username=RepPostStr($username);
  519. //重复用户
  520. $num=$empire->gettotal("select count(*) as total from ".$user_tablename." where ".$user_username."='$username' limit 1");
  521. if($num)
  522. {
  523. printerror("ReUsername","history.go(-1)",1);
  524. }
  525. //重复邮箱
  526. $email=RepPostStr($email);
  527. if($pr['regemailonly'])
  528. {
  529. $num=$empire->gettotal("select count(*) as total from ".$user_tablename." where ".$user_email."='$email' limit 1");
  530. if($num)
  531. {
  532. printerror("ReEmailFail","history.go(-1)",1);
  533. }
  534. }
  535. //注册时间
  536. if($user_register)
  537. {
  538. $registertime=time();
  539. }
  540. else
  541. {
  542. $registertime=date("Y-m-d H:i:s");
  543. }
  544. $birthday=$y.$m.$d;
  545. $rnd=make_password(12);//产生随机密码
  546. //密码
  547. if(empty($user_dopass))//单重md5
  548. {
  549. $password=md5($password);
  550. }
  551. elseif($user_dopass==2)//双重md5
  552. {
  553. $salt=make_password($user_saltnum);
  554. $password=md5(md5($password).$salt);
  555. }
  556. elseif($user_dopass==3)//16位md5
  557. {
  558. $password=substr(md5($password),8,16);
  559. }
  560. //审核
  561. $checked=ReturnGroupChecked($groupid);
  562. if($checked&&$public_r['regacttype']==1)
  563. {
  564. $checked=0;
  565. }
  566. //验证附加表必填项
  567. $fid=GetMemberFormId($groupid);
  568. $member_r=ReturnDoMemberF($fid,$add,$mr,0,$username);
  569. $sql=$empire->query("insert into ".$user_tablename."(".$user_username.",".$user_password.",".$user_email.",".$user_registertime.",".$user_group.",".$user_rnd.",".$user_userfen.",".$user_checked.") values('$username','$password','$email','$registertime','$groupid','$rnd','$public_r[reggetfen]','$checked');");
  570. //取得userid
  571. $userid=$empire->lastid();
  572. //附加表
  573. $addr=$empire->fetch1("select * from {$dbtbpre}enewsmemberadd where userid='$userid'");
  574. if(!$addr[userid])
  575. {
  576. $spacestyleid=ReturnGroupSpaceStyleid($groupid);
  577. $sql1=$empire->query("insert into {$dbtbpre}enewsmemberadd(userid,spacestyleid,regip".$member_r[0].") values('$userid','$spacestyleid','$regip'".$member_r[1].");");
  578. }
  579. ecmsEmptyShowKey($keyvname);//清空验证码
  580. if($sql)
  581. {
  582. //邮箱激活
  583. if($checked==0&&$public_r['regacttype']==1)
  584. {
  585. include('../class/qmemberfun.php');
  586. SendActUserEmail($userid,$username,$email);
  587. }
  588. //审核
  589. if($checked==0)
  590. {
  591. $location=DoingReturnUrl("../../",$_POST['ecmsfrom']);
  592. printerror("RegisterSuccessCheck",$location,1);
  593. }
  594. $logincookie=0;
  595. if($user_regcookietime)
  596. {
  597. $logincookie=time()+$user_regcookietime;
  598. }
  599. $set1=esetcookie("mlusername",$username,$logincookie);
  600. $set2=esetcookie("mluserid",$userid,$logincookie);
  601. $set3=esetcookie("mlgroupid",$groupid,$logincookie);
  602. $set4=esetcookie("mlrnd",$rnd,$logincookie);
  603. $location="../member/cp/";
  604. $returnurl=getcvar('returnurl');
  605. if($returnurl&&!strstr($returnurl,"e/member/iframe")&&!strstr($returnurl,"e/member/register")&&!strstr($returnurl,"enews=exit"))
  606. {
  607. $location=$returnurl;
  608. }
  609. $set5=esetcookie("returnurl","");
  610. $location=DoingReturnUrl($location,$_POST['ecmsfrom']);
  611. printerror("RegisterSuccess",$location,1);
  612. }
  613. else
  614. {printerror("DbError","history.go(-1)",1);}
  615. }
  616. //修改安全信息
  617. function EditSafeInfo($add){
  618. global $empire,$user_tablename,$public_r,$user_userid,$user_username,$user_password,$user_dopass,$user_email,$user_salt,$user_saltnum,$dbtbpre,$user_group;
  619. $user_r=islogin();//是否登陆
  620. $userid=$user_r[userid];
  621. $username=$user_r[username];
  622. $rnd=$user_r[rnd];
  623. //邮箱
  624. $email=trim($add['email']);
  625. if(!$email||!chemail($email))
  626. {
  627. printerror("EmailFail","history.go(-1)",1);
  628. }
  629. $email=RepPostStr($email);
  630. $email=doUtfAndGbk($email,0);
  631. //验证原密码
  632. $oldpassword=RepPostVar($add[oldpassword]);
  633. if(!$oldpassword)
  634. {
  635. printerror('FailOldPassword','',1);
  636. }
  637. $a='';
  638. $sa='';
  639. $add[password]=RepPostVar($add[password]);
  640. $password=doUtfAndGbk($add[password],0);
  641. $oldpassword=doUtfAndGbk($oldpassword,0);
  642. if(empty($user_dopass))//单重加密
  643. {
  644. $password=md5($password);
  645. $oldpassword=md5($oldpassword);
  646. }
  647. elseif($user_dopass==2)//双重加密
  648. {
  649. $salt=make_password($user_saltnum);
  650. $password=md5(md5($password).$salt);
  651. $sa=",".$user_salt."='$salt'";
  652. }
  653. elseif($user_dopass==3)//16位md5
  654. {
  655. $password=substr(md5($password),8,16);
  656. $oldpassword=substr(md5($oldpassword),8,16);
  657. }
  658. $num=0;
  659. //双重md5
  660. if($user_dopass==2)
  661. {
  662. $ur=$empire->fetch1("select ".$user_userid.",".$user_salt.",".$user_password." from ".$user_tablename." where ".$user_userid."='$userid'");
  663. $oldpassword=md5(md5($oldpassword).$ur[$user_salt]);
  664. $num=0;
  665. if($oldpassword==$ur[$user_password])
  666. {$num=1;}
  667. if(empty($ur[$user_userid]))
  668. {$num=0;}
  669. }
  670. else
  671. {
  672. $num=$empire->gettotal("select count(*) as total from ".$user_tablename." where ".$user_userid."='$userid' and ".$user_password."='".$oldpassword."'");
  673. }
  674. if(!$num)
  675. {
  676. printerror('FailOldPassword','',1);
  677. }
  678. //邮箱
  679. $pr=$empire->fetch1("select regemailonly from {$dbtbpre}enewspublic limit 1");
  680. if($pr['regemailonly'])
  681. {
  682. $num=$empire->gettotal("select count(*) as total from ".$user_tablename." where ".$user_email."='$email' and ".$user_userid."<>'$userid' limit 1");
  683. if($num)
  684. {
  685. printerror("ReEmailFail","history.go(-1)",1);
  686. }
  687. }
  688. //密码
  689. if($add[password])
  690. {
  691. if($add[password]!==$add[repassword])
  692. {
  693. printerror('NotRepassword','history.go(-1)',1);
  694. }
  695. $a=",".$user_password."='".$password."'".$sa;
  696. }
  697. $sql=$empire->query("update ".$user_tablename." set ".$user_email."='$email'".$a." where ".$user_userid."='$userid'");
  698. if($sql)
  699. {
  700. printerror("EditInfoSuccess","../member/EditInfo/EditSafeInfo.php",1);
  701. }
  702. else
  703. {printerror("DbError","history.go(-1)",1);}
  704. }
  705. //信息修改
  706. function EditInfo($post){
  707. global $empire,$user_tablename,$public_r,$user_userid,$user_username,$user_password,$user_dopass,$user_email,$user_salt,$user_saltnum,$dbtbpre,$user_group;
  708. $user_r=islogin();//是否登陆
  709. $userid=$user_r[userid];
  710. $username=$user_r[username];
  711. $dousername=$username;
  712. $rnd=$user_r[rnd];
  713. $groupid=$user_r[groupid];
  714. if(!$userid||!$username)
  715. {
  716. printerror("NotEmpty","history.go(-1)",1);
  717. }
  718. //验证附加表必填项
  719. $addr=$empire->fetch1("select * from {$dbtbpre}enewsmemberadd where userid='$userid'");
  720. $user_r=$empire->fetch1("select ".$user_group." from ".$user_tablename." where ".$user_userid."='$userid'");
  721. $fid=GetMemberFormId($user_r[$user_group]);
  722. if(empty($addr[userid]))
  723. {
  724. $member_r=ReturnDoMemberF($fid,$post,$mr,0,$dousername);
  725. }
  726. else
  727. {
  728. $member_r=ReturnDoMemberF($fid,$post,$addr,1,$dousername);
  729. }
  730. //附加表
  731. if(empty($addr[userid]))
  732. {
  733. $sql=$empire->query("insert into {$dbtbpre}enewsmemberadd(userid".$member_r[0].") values('$userid'".$member_r[1].");");
  734. }
  735. else
  736. {
  737. $sql=$empire->query("update {$dbtbpre}enewsmemberadd set userid='$userid'".$member_r[0]." where userid='$userid'");
  738. }
  739. if($sql)
  740. {
  741. printerror("EditInfoSuccess","../member/EditInfo",1);
  742. }
  743. else
  744. {printerror("DbError","history.go(-1)",1);}
  745. }
  746. //----------------------------------是否登陆
  747. function islogin($uid=0,$uname='',$urnd=''){
  748. global $empire,$public_r,$editor,$user_tablename,$user_userid,$user_username,$user_email,$user_userfen,$user_money,$user_group,$user_groupid,$user_rnd,$user_zgroup,$user_userdate,$user_havemsg,$ecmsreurl,$eloginurl,$user_checked,$user_registertime;
  749. if($uid)
  750. {$userid=(int)$uid;}
  751. else
  752. {$userid=(int)getcvar('mluserid');}
  753. if($uname)
  754. {$username=$uname;}
  755. else
  756. {$username=getcvar('mlusername');}
  757. $username=RepPostVar($username);
  758. if($urnd)
  759. {$rnd=$urnd;}
  760. else
  761. {$rnd=getcvar('mlrnd');}
  762. if($eloginurl)
  763. {$gotourl=$eloginurl;}
  764. else
  765. {$gotourl=$public_r['newsurl']."e/member/login/";}
  766. $petype=1;
  767. if(!$userid)
  768. {
  769. if(!getcvar('returnurl'))
  770. {
  771. esetcookie("returnurl",$_SERVER['HTTP_REFERER'],0);
  772. }
  773. if($ecmsreurl==1)
  774. {
  775. $gotourl="history.go(-1)";
  776. $petype=9;
  777. }
  778. elseif($ecmsreurl==2)
  779. {
  780. $phpmyself=urlencode($_SERVER['PHP_SELF']."?".$_SERVER["QUERY_STRING"]);
  781. $gotourl=$public_r['newsurl']."e/member/login/login.php?prt=1&from=".$phpmyself;
  782. $petype=9;
  783. }
  784. printerror("NotLogin",$gotourl,$petype);
  785. }
  786. $rnd=RepPostVar($rnd);
  787. $cr=$empire->fetch1("select ".$user_userid.",".$user_username.",".$user_email.",".$user_group.",".$user_userfen.",".$user_money.",".$user_userdate.",".$user_zgroup.",".$user_havemsg.",".$user_checked.",".$user_registertime." from ".$user_tablename." where ".$user_userid."='$userid' and ".$user_username."='$username' and ".$user_rnd."='$rnd' limit 1");
  788. if(!$cr[$user_userid])
  789. {
  790. EmptyEcmsCookie();
  791. if(!getcvar('returnurl'))
  792. {
  793. esetcookie("returnurl",$_SERVER['HTTP_REFERER'],0);
  794. }
  795. if($ecmsreurl==1)
  796. {
  797. $gotourl="history.go(-1)";
  798. $petype=9;
  799. }
  800. elseif($ecmsreurl==2)
  801. {
  802. $phpmyself=urlencode($_SERVER['PHP_SELF']."?".$_SERVER["QUERY_STRING"]);
  803. $gotourl=$public_r['newsurl']."e/member/login/login.php?prt=1&from=".$phpmyself;
  804. $petype=9;
  805. }
  806. printerror("NotSingleLogin",$gotourl,$petype);
  807. }
  808. if($cr[$user_checked]==0)
  809. {
  810. EmptyEcmsCookie();
  811. if($ecmsreurl==1)
  812. {
  813. $gotourl="history.go(-1)";
  814. $petype=9;
  815. }
  816. elseif($ecmsreurl==2)
  817. {
  818. $phpmyself=urlencode($_SERVER['PHP_SELF']."?".$_SERVER["QUERY_STRING"]);
  819. $gotourl=$public_r['newsurl']."e/member/login/login.php?prt=1&from=".$phpmyself;
  820. $petype=9;
  821. }
  822. printerror("NotCheckedUser",'',$petype);
  823. }
  824. //默认会员组
  825. if(empty($cr[$user_group]))
  826. {
  827. $usql=$empire->query("update ".$user_tablename." set ".$user_group."='$user_groupid' where ".$user_userid."='".$cr[$user_userid]."'");
  828. $cr[$user_group]=$user_groupid;
  829. }
  830. //是否过期
  831. if($cr[$user_userdate])
  832. {
  833. if($cr[$user_userdate]-time()<=0)
  834. {
  835. OutTimeZGroup($cr[$user_userid],$cr[$user_zgroup]);
  836. $cr[$user_userdate]=0;
  837. if($cr[$user_zgroup])
  838. {
  839. $cr[$user_group]=$cr[$user_zgroup];
  840. $cr[$user_zgroup]=0;
  841. }
  842. }
  843. }
  844. $re[userid]=$cr[$user_userid];
  845. $re[rnd]=$rnd;
  846. $re[username]=doUtfAndGbk($cr[$user_username],1);
  847. $re[email]=doUtfAndGbk($cr[$user_email],1);
  848. $re[userfen]=$cr[$user_userfen];
  849. $re[money]=$cr[$user_money];
  850. $re[groupid]=$cr[$user_group];
  851. $re[userdate]=$cr[$user_userdate];
  852. $re[zgroupid]=$cr[$user_zgroup];
  853. $re[havemsg]=$cr[$user_havemsg];
  854. $re[registertime]=$cr[$user_registertime];
  855. /*
  856. if($cr[$user_havemsg])
  857. {
  858. echo"<script>window.status='您有新的悄悄话,请注意查收!';</script>";
  859. }
  860. */
  861. return $re;
  862. }
  863. //-------------------------------------退出登陆
  864. function loginout1($userid,$username,$rnd){
  865. global $empire,$public_r,$equiturl;
  866. //是否登陆
  867. $user_r=islogin();
  868. if($equiturl)
  869. {
  870. Header("Location:$equiturl");
  871. exit();
  872. }
  873. EmptyEcmsCookie();
  874. $dopr=1;
  875. if($_GET['prtype'])
  876. {
  877. $dopr=9;
  878. }
  879. $gotourl="../../";
  880. if(strstr($_SERVER['HTTP_REFERER'],"e/member/iframe"))
  881. {
  882. $gotourl=$public_r['newsurl']."e/member/iframe/";
  883. }
  884. $gotourl=DoingReturnUrl($gotourl,$_GET['ecmsfrom']);
  885. printerror("ExitSuccess",$gotourl,$dopr);
  886. }
  887. //-----------------------------------清空COOKIE
  888. function EmptyEcmsCookie(){
  889. $set1=esetcookie("mlusername","",0);
  890. $set2=esetcookie("mluserid","",0);
  891. $set3=esetcookie("mlgroupid","",0);
  892. $set4=esetcookie("mlrnd","",0);
  893. }
  894. //----------------------------------------登陆
  895. function login1($username,$password,$lifetime,$key,$location){
  896. global $empire,$user_tablename,$user_userid,$user_username,$user_password,$user_dopass,$user_group,$user_groupid,$user_rnd,$public_r,$user_salt,$user_saltnum,$dbtbpre,$eloginurl,$user_checked;
  897. if($eloginurl)
  898. {
  899. Header("Location:$eloginurl");
  900. exit();
  901. }
  902. $dopr=1;
  903. if($_POST['prtype'])
  904. {
  905. $dopr=9;
  906. }
  907. if(!trim($username)||!trim($password))
  908. {printerror("EmptyLogin","history.go(-1)",$dopr);}
  909. //验证码
  910. $keyvname='checkloginkey';
  911. if($public_r['loginkey_ok'])
  912. {
  913. ecmsCheckShowKey($keyvname,$key,$dopr);
  914. }
  915. $username=RepPostVar($username);
  916. $password=RepPostVar($password);
  917. //编码转换
  918. $utfusername=doUtfAndGbk($username,0);
  919. $password=doUtfAndGbk($password,0);
  920. //密码
  921. if(empty($user_dopass))//单重md5
  922. {
  923. $password=md5($password);
  924. }
  925. if($user_dopass==3)//16位md5
  926. {
  927. $password=substr(md5($password),8,16);
  928. }
  929. //双重md5
  930. $num=0;
  931. if($user_dopass==2)
  932. {
  933. $ur=$empire->fetch1("select ".$user_userid.",".$user_salt.",".$user_password." from ".$user_tablename." where ".$user_username."='$utfusername' limit 1");
  934. $password=md5(md5($password).$ur[$user_salt]);
  935. $num=0;
  936. if($password==$ur[$user_password])
  937. {$num=1;}
  938. if(empty($ur[$user_userid]))
  939. {$num=0;}
  940. }
  941. else
  942. {
  943. $num=$empire->gettotal("select count(*) as total from ".$user_tablename." where ".$user_username."='$utfusername' and ".$user_password."='".$password."' limit 1");
  944. }
  945. if(!$num)
  946. {
  947. printerror("FailPassword","history.go(-1)",$dopr);
  948. }
  949. $r=$empire->fetch1("select * from ".$user_tablename." where ".$user_username."='$utfusername' limit 1");
  950. if($r[$user_checked]==0)
  951. {
  952. if($public_r['regacttype']==1)
  953. {
  954. printerror('NotCheckedUser','../member/register/regsend.php',1);
  955. }
  956. else
  957. {
  958. printerror('NotCheckedUser','',1);
  959. }
  960. }
  961. $time=date("Y-m-d H:i:s");
  962. $rnd=make_password(12);//取得随机密码
  963. //默认会员组
  964. if(empty($r[$user_group]))
  965. {$r[$user_group]=$user_groupid;}
  966. $r[$user_group]=(int)$r[$user_group];
  967. $usql=$empire->query("update ".$user_tablename." set ".$user_rnd."='$rnd',".$user_group."=".$r[$user_group]." where ".$user_userid."='$r[$user_userid]'");
  968. //设置cookie
  969. $logincookie=0;
  970. if($lifetime)
  971. {
  972. $logincookie=time()+$lifetime;
  973. }
  974. $set1=esetcookie("mlusername",$username,$logincookie);
  975. $set2=esetcookie("mluserid",$r[$user_userid],$logincookie);
  976. $set3=esetcookie("mlgroupid",$r[$user_group],$logincookie);
  977. $set4=esetcookie("mlrnd",$rnd,$logincookie);
  978. //登录附加cookie
  979. AddLoginCookie($r);
  980. $location="../member/cp/";
  981. $returnurl=getcvar('returnurl');
  982. if($returnurl)
  983. {
  984. $location=$returnurl;
  985. }
  986. if(strstr($_SERVER['HTTP_REFERER'],"e/member/iframe"))
  987. {$location="../member/iframe/";}
  988. if(strstr($location,"enews=exit")||strstr($location,"e/member/register")||strstr($_SERVER['HTTP_REFERER'],"e/member/register"))
  989. {
  990. $location="../member/cp/";
  991. $_POST['ecmsfrom']='';
  992. }
  993. ecmsEmptyShowKey($keyvname);//清空验证码
  994. $set6=esetcookie("returnurl","");
  995. if($set1&&$set2)
  996. {
  997. $location=DoingReturnUrl($location,$_POST['ecmsfrom']);
  998. printerror("LoginSuccess",$location,$dopr);
  999. }
  1000. else
  1001. {
  1002. printerror("NotCookie","history.go(-1)",$dopr);
  1003. }
  1004. }
  1005. //----------------------------------批量赠送点数
  1006. function GetFen_all($cardfen,$userid,$username){
  1007. global $empire,$user_tablename,$user_userfen;
  1008. $cardfen=(int)$cardfen;
  1009. if(!$cardfen)
  1010. {printerror("EmptyGetFen","history.go(-1)");}
  1011. //验证权限
  1012. CheckLevel($userid,$username,$classid,"card");
  1013. $sql=$empire->query("update ".$user_tablename." set ".$user_userfen."=".$user_userfen."+$cardfen");
  1014. if($sql)
  1015. {
  1016. //操作日志
  1017. insert_dolog("cardfen=$cardfen");
  1018. printerror("GetFenSuccess","GetFen.php");
  1019. }
  1020. else
  1021. {printerror("DbError","history.go(-1)");}
  1022. }
  1023. //----------------------------------增加点数
  1024. function AddInfoFen($cardfen,$userid){
  1025. global $empire,$user_tablename,$user_userfen,$user_userid;
  1026. $cardfen=(int)$cardfen;
  1027. $sql=$empire->query("update ".$user_tablename." set ".$user_userfen."=".$user_userfen."+".$cardfen." where ".$user_userid."='$userid'");
  1028. }
  1029. //转向会员组
  1030. function OutTimeZGroup($userid,$zgroupid){
  1031. global $empire,$user_tablename,$user_group,$user_zgroup,$user_userdate,$user_userid;
  1032. if($zgroupid)
  1033. {
  1034. $sql=$empire->query("update ".$user_tablename." set ".$user_group."='".$zgroupid."',".$user_userdate."=0 where ".$user_userid."='$userid'");
  1035. }
  1036. else
  1037. {
  1038. $sql=$empire->query("update ".$user_tablename." set ".$user_userdate."=0 where ".$user_userid."='$userid'");
  1039. }
  1040. }
  1041. //充值
  1042. function eAddFenToUser($fen,$date,$groupid,$zgroupid,$user){
  1043. global $empire,$dbtbpre,$user_tablename,$user_userfen,$user_userdate,$user_userid,$user_username,$user_zgroup,$user_group,$public_r;
  1044. if(!($fen||$date))
  1045. {
  1046. return '';
  1047. }
  1048. $update='';
  1049. //积分
  1050. if($fen)
  1051. {
  1052. $update.="$user_userfen=$user_userfen+$fen";
  1053. }
  1054. //有效期
  1055. if($date)
  1056. {
  1057. $dh='';
  1058. if($update)
  1059. {
  1060. $dh=',';
  1061. }
  1062. if($user[$user_userdate]<time())
  1063. {
  1064. $userdate=time()+$date*24*3600;
  1065. }
  1066. else
  1067. {
  1068. $userdate=$user[$user_userdate]+$date*24*3600;
  1069. }
  1070. $update.=$dh."$user_userdate='$userdate'";
  1071. //转向会员组
  1072. if($groupid)
  1073. {
  1074. $update.=",".$user_group."='$groupid'";
  1075. }
  1076. if($zgroupid)
  1077. {
  1078. $update.=",".$user_zgroup."='$zgroupid'";
  1079. }
  1080. }
  1081. $sql=$empire->query("update ".$user_tablename." set ".$update." where ".$user_userid."='".$user[$user_userid]."'");
  1082. if(!$sql)
  1083. {
  1084. printerror('DbError',$public_r[newsurl],1);
  1085. }
  1086. }
  1087. //检查下载数
  1088. function DoCheckMDownNum($userid,$groupid,$ecms=0){
  1089. global $empire,$dbtbpre,$level_r;
  1090. $ur=$empire->fetch1("select userid,todaydate,todaydown from {$dbtbpre}enewsmemberadd where userid='$userid' limit 1");
  1091. $thetoday=date("Y-m-d");
  1092. if($ur['userid'])
  1093. {
  1094. if($thetoday!=$ur['todaydate'])
  1095. {
  1096. $query="update {$dbtbpre}enewsmemberadd set todaydate='$thetoday',todaydown=1 where userid='$userid'";
  1097. }
  1098. else
  1099. {
  1100. if($ur['todaydown']>=$level_r[$groupid]['daydown'])
  1101. {
  1102. if($ecms==1)
  1103. {
  1104. exit();
  1105. }
  1106. elseif($ecms==2)
  1107. {
  1108. return 'error';
  1109. }
  1110. else
  1111. {
  1112. printerror("CrossDaydown","history.go(-1)",1);
  1113. }
  1114. }
  1115. $query="update {$dbtbpre}enewsmemberadd set todaydown=todaydown+1 where userid='$userid'";
  1116. }
  1117. }
  1118. else
  1119. {
  1120. $query="replace into {$dbtbpre}enewsmemberadd(userid,todaydate,todaydown) values('$userid','$thetoday',1);";
  1121. }
  1122. return $query;
  1123. }
  1124. //更新激活认证码
  1125. function DoUpdateMemberAuthstr($userid,$authstr){
  1126. global $empire,$dbtbpre;
  1127. $num=$empire->gettotal("select count(*) as total from {$dbtbpre}enewsmemberadd where userid='$userid' limit 1");
  1128. if($num)
  1129. {
  1130. $sql=$empire->query("update {$dbtbpre}enewsmemberadd set authstr='$authstr' where userid='$userid'");
  1131. }
  1132. else
  1133. {
  1134. $sql=$empire->query("replace into {$dbtbpre}enewsmemberadd(userid,authstr) values('$userid','$authstr');");
  1135. }
  1136. return $sql;
  1137. }
  1138. //处理注册字段值
  1139. function DoMemberFValue($val){
  1140. $val=htmlspecialchars($val,ENT_QUOTES);
  1141. return $val;
  1142. }
  1143. //删除会员字段附件
  1144. function DelYMemberTranFile($file,$tf,$username=''){
  1145. global $empire,$dbtbpre;
  1146. if(empty($file)){
  1147. return "";
  1148. }
  1149. $r=explode("/",$file);
  1150. $count=count($r);
  1151. $filename=$r[$count-1];
  1152. $fr=$empire->fetch1("select filename,path,fileid,fpath,classid from {$dbtbpre}enewsfile where no='Member[".$tf."]' and filename='$filename' and adduser='[EditInfo]".$username."' limit 1");
  1153. if($fr['fileid'])
  1154. {
  1155. $sql=$empire->query("delete from {$dbtbpre}enewsfile where fileid='$fr[fileid]'");
  1156. DoDelFile($fr);
  1157. }
  1158. }
  1159. //组合复选框数据
  1160. function ReturnMCheckboxAddF($r,$f,$checkboxf){
  1161. $val=$r;
  1162. if(is_array($r)&&strstr($checkboxf,','.$f.','))
  1163. {
  1164. $val='';
  1165. $count=count($r);
  1166. for($i=0;$i<$count;$i++)
  1167. {
  1168. $val.=$r[$i].'|';
  1169. }
  1170. if($val)
  1171. {
  1172. $val='|'.$val;
  1173. }
  1174. }
  1175. return $val;
  1176. }
  1177. //返回会员字段
  1178. function ReturnDoMemberF($fid,$add,$mr,$ecms=0,$username='',$admin=0){
  1179. global $empire,$dbtbpre,$tranpicturetype,$public_r;
  1180. $pr=$empire->fetch1("select openmembertranimg,memberimgsize,memberimgtype,openmembertranfile,memberfilesize,memberfiletype from {$dbtbpre}enewspublic limit 1");
  1181. $formr=$empire->fetch1("select fid,enter,mustenter,filef,imgf,canaddf,caneditf,checkboxf from {$dbtbpre}enewsmemberform where fid='$fid'");
  1182. //检测必填字段
  1183. $mustr=explode(",",$formr['mustenter']);
  1184. $mustcount=count($mustr);
  1185. for($i=1;$i<$mustcount-1;$i++)
  1186. {
  1187. $mf=$mustr[$i];
  1188. if(strstr($formr['filef'],",".$mf.",")||strstr($formr['imgf'],",".$mf.","))//附件
  1189. {
  1190. $mfilef=$mf."file";
  1191. //上传文件
  1192. if($_FILES[$mfilef]['name'])
  1193. {
  1194. if(strstr($formr['imgf'],",".$mf.","))//图片
  1195. {
  1196. if(!$pr['openmembertranimg'])
  1197. {
  1198. printerror("CloseQTranPic","",1);
  1199. }
  1200. }
  1201. else//附件
  1202. {
  1203. if(!$pr['openmembertranfile'])
  1204. {
  1205. printerror("CloseQTranFile","",1);
  1206. }
  1207. }
  1208. }
  1209. elseif(!trim($add[$mf])&&!$mr[$mf])
  1210. {
  1211. printerror("EmptyQMustF","",1);
  1212. }
  1213. }
  1214. else
  1215. {
  1216. $chmustval=ReturnMCheckboxAddF($add[$mf],$mf,$formr['checkboxf']);
  1217. if(!trim($chmustval))
  1218. {
  1219. printerror("EmptyQMustF","",1);
  1220. }
  1221. }
  1222. }
  1223. //字段处理
  1224. $dh="";
  1225. $tranf="";
  1226. $record="<!--record-->";
  1227. $field="<!--field--->";
  1228. $fr=explode($record,$formr['enter']);
  1229. $count=count($fr);
  1230. for($i=0;$i<$count-1;$i++)
  1231. {
  1232. $fr1=explode($field,$fr[$i]);
  1233. $f=$fr1[1];
  1234. if($admin==0&&(($ecms==0&&!strstr($formr['canaddf'],','.$f.','))||($ecms==1&&!strstr($formr['caneditf'],','.$f.','))))
  1235. {continue;}
  1236. //附件
  1237. $add[$f]=str_replace('[!#@-','',$add[$f]);
  1238. if(strstr($formr['filef'],",".$f.",")||strstr($formr['imgf'],",".$f.","))
  1239. {
  1240. //上传附件
  1241. $filetf=$f."file";
  1242. if($_FILES[$filetf]['name'])
  1243. {
  1244. $filetype=GetFiletype($_FILES[$filetf]['name']);//取得文件类型
  1245. if(CheckSaveTranFiletype($filetype))
  1246. {
  1247. printerror("NotQTranFiletype","",1);
  1248. }
  1249. if(strstr($formr['imgf'],",".$f.","))//图片
  1250. {
  1251. if(!$pr['openmembertranimg'])
  1252. {
  1253. printerror("CloseQTranPic","",1);
  1254. }
  1255. if(!strstr($pr['memberimgtype'],"|".$filetype."|"))
  1256. {
  1257. printerror("NotQTranFiletype","",1);
  1258. }
  1259. if($_FILES[$filetf]['size']>$pr['memberimgsize']*1024)
  1260. {
  1261. printerror("TooBigQTranFile","",1);
  1262. }
  1263. if(!strstr($tranpicturetype,','.$filetype.','))
  1264. {
  1265. printerror("NotQTranFiletype","",1);
  1266. }
  1267. }
  1268. else//附件
  1269. {
  1270. if(!$pr['openmembertranfile'])
  1271. {
  1272. printerror("CloseQTranFile","",1);
  1273. }
  1274. if(!strstr($pr['memberfiletype'],"|".$filetype."|"))
  1275. {
  1276. printerror("NotQTranFiletype","",1);
  1277. }
  1278. if($_FILES[$filetf]['size']>$pr['memberfilesize']*1024)
  1279. {
  1280. printerror("TooBigQTranFile","",1);
  1281. }
  1282. }
  1283. $tranf.=$dh.$f;
  1284. $dh=",";
  1285. $fval="[!#@-".$f."-@!]";
  1286. }
  1287. else
  1288. {
  1289. $fval=$add[$f];
  1290. if($ecms==1&&$mr[$f]&&!trim($fval))
  1291. {
  1292. $fval=$mr[$f];
  1293. }
  1294. }
  1295. }
  1296. else
  1297. {
  1298. $add[$f]=ReturnMCheckboxAddF($add[$f],$f,$formr['checkboxf']);
  1299. $fval=$add[$f];
  1300. }
  1301. $fval=DoMemberFValue($fval);
  1302. $fval=RepPostStr2($fval);
  1303. $fval=addslashes($fval);
  1304. if($ecms==0)//添加
  1305. {
  1306. $ret_r[0].=",`".$f."`";
  1307. $ret_r[1].=",'".$fval."'";
  1308. }
  1309. else//编辑
  1310. {
  1311. $ret_r[0].=",`".$f."`='".$fval."'";
  1312. }
  1313. }
  1314. //上传附件
  1315. if($tranf)
  1316. {
  1317. $infoid=0;
  1318. $filepass=0;
  1319. $classid=0;
  1320. $tranr=explode(",",$tranf);
  1321. $count=count($tranr);
  1322. for($i=0;$i<$count;$i++)
  1323. {
  1324. $tf=$tranr[$i];
  1325. $tffile=$tf."file";
  1326. $tfr=DoTranFile($_FILES[$tffile]['tmp_name'],$_FILES[$tffile]['name'],$_FILES[$tffile]['type'],$_FILES[$tffile]['size'],$classid);
  1327. if($tfr['tran'])
  1328. {
  1329. if(strstr($formr['imgf'],",".$tf.","))//图片
  1330. {
  1331. $type=1;
  1332. }
  1333. else//附件
  1334. {
  1335. $type=0;
  1336. }
  1337. //写入数据库
  1338. $filetime=date("Y-m-d H:i:s");
  1339. $filesize=(int)$_FILES[$tffile]['size'];
  1340. $sql=$empire->query("insert into {$dbtbpre}enewsfile(filename,filesize,adduser,path,filetime,classid,no,type,id,cjid,fpath) values('$tfr[filename]',$filesize,'[EditInfo]".$username."','$tfr[filepath]','$filetime',$classid,'Member[".$tf."]',$type,$infoid,$filepass,'$public_r[fpath]');");
  1341. //删除旧文件
  1342. if($ecms==1&&$mr[$tf])
  1343. {
  1344. DelYMemberTranFile($mr[$tf],$tf,$username);
  1345. }
  1346. $repfval=$tfr['url'];
  1347. }
  1348. else
  1349. {
  1350. $repfval=$mr[$tf];
  1351. }
  1352. if($ecms==0)//添加
  1353. {
  1354. $ret_r[1]=str_replace("[!#@-".$tf."-@!]",$repfval,$ret_r[1]);
  1355. }
  1356. else//编辑
  1357. {
  1358. $ret_r[0]=str_replace("[!#@-".$tf."-@!]",$repfval,$ret_r[0]);
  1359. }
  1360. }
  1361. }
  1362. return $ret_r;
  1363. }
  1364. //删除会员附件
  1365. function DoDelMemberF($fid,$userid,$username){
  1366. global $empire,$dbtbpre;
  1367. $r=$empire->fetch1("select * from {$dbtbpre}enewsmemberadd where userid='$userid'");
  1368. $sql=$empire->query("delete from {$dbtbpre}enewsmemberadd where userid='$userid'");
  1369. if(empty($r[userid]))
  1370. {
  1371. return '';
  1372. }
  1373. $formr=$empire->fetch1("select fid,filef,imgf from {$dbtbpre}enewsmemberform where fid='$fid'");
  1374. if(empty($formr['filef']))
  1375. {
  1376. $formr['filef']=',';
  1377. }
  1378. if(empty($formr['imgf']))
  1379. {
  1380. $formr['imgf']=',';
  1381. }
  1382. $fields=substr($formr['filef'],0,strlen($formr['filef'])-1).$formr['imgf'];
  1383. $fr=explode(',',$fields);
  1384. $count=count($fr);
  1385. for($i=1;$i<$count-1;$i++)
  1386. {
  1387. $f=$fr[$i];
  1388. if($r[$f])
  1389. {
  1390. DelYMemberTranFile($r[$f],$f,$username);
  1391. }
  1392. }
  1393. }
  1394. if($utfdata&&!function_exists("iconv"))
  1395. {
  1396. @include_once(dirname(__FILE__)."/doiconv.php");
  1397. }
  1398. ?>