registermanageaction.java

来自「论坛软件系统亦称电子公告板(BBS)系统」· Java 代码 · 共 508 行 · 第 1/2 页

JAVA
508
字号
		} else {
			ctrlip = onlineip;
		}
		Map<String,String> invite=null;
		if (regstatus > 1) {
			if (regstatus == 2 &&invitecode.equals("")) {
				request.setAttribute("errorInfo", "没有填写邀请码不能注册,请返回。");
				return mapping.findForward("showMessage");
			} else if (!invitecode.equals("")) {
				groupinfo.put("groupid",inviteconfigs.get("invitegroupid") != null	&& !inviteconfigs.get("invitegroupid").equals("") ? inviteconfigs.get("invitegroupid") : groupinfo.get("groupid"));
				List<Map<String,String>> invites=dataBaseService.executeQuery("SELECT uid,inviteip, expiration FROM jrun_invites WHERE invitecode='"+invitecode+"' AND status IN ('1', '3')");
				if (invites == null || invites.size() == 0) {
					request.setAttribute("errorInfo", "您填写的邀请码无效。");
					return mapping.findForward("showMessage");
				} else {
					invite = invites.get(0);
					if (invite.get("inviteip").equals(onlineip)) {
						request.setAttribute("errorInfo","注册用户IP和邀请码拥有者IP相同,不能注册请返回。");
						return mapping.findForward("showMessage");
					} else if (Integer.valueOf(invite.get("expiration"))< timestamp) {
						request.setAttribute("errorInfo", "邀请码已过期,不能使用请返回。");
						return mapping.findForward("showMessage");
					}
				}
			}
		}
		if (regctrl > 0) {
			List<Map<String,String>> regips=dataBaseService.executeQuery("SELECT ip FROM jrun_regips WHERE ip LIKE '"+ ctrlip+ "' AND count='-1' AND dateline>"+(timestamp - regctrl * 3600)+" LIMIT 1");
			if (regips != null && regips.size() > 0) {
				request.setAttribute("errorInfo", "对不起,您的 IP 地址在 " + regctrl + " 小时内只能注册一个帐号,请返回。");
				return mapping.findForward("showMessage");
			}
		}
		List<Map<String,String>> user=dataBaseService.executeQuery("SELECT uid FROM jrun_members WHERE username='"+username+"'");
		if (user != null&&user.size()>0) {
			request.setAttribute("errorInfo", "该用户名已经被注册了,请返回重新填写。");
			return mapping.findForward("showMessage");
		}
		user=null;
		if (Integer.valueOf(settings.get("doublee"))==0) {
			List<Map<String,String>> members=dataBaseService.executeQuery("SELECT uid FROM jrun_members WHERE email='"+email+"' LIMIT 1");
			if (members != null && members.size() > 0) {
				request.setAttribute("errorInfo", "该 Email 地址已经被注册了,请返回重新填写。");
				return mapping.findForward("showMessage");
			}
		}
		int regfloodctrl = Integer.valueOf(settings.get("regfloodctrl"));
		if(regfloodctrl>0)
		{
			List<Map<String,String>> regips=dataBaseService.executeQuery("SELECT count FROM jrun_regips WHERE ip='"+onlineip+"' AND count>'0' AND dateline>"+(timestamp-86400));
			if(regips!=null&&regips.size()>0)
			{
				Map<String,String> regip=regips.get(0);
				if(Integer.valueOf(regip.get("count"))>=regfloodctrl)
				{
					request.setAttribute("errorInfo", " 对不起,同一 IP 地址在 24 小时内只能进行 "+regfloodctrl+" 次注册尝试,请返回。");
					return mapping.findForward("showMessage");
				}else{
					dataBaseService.runQuery("UPDATE jrun_regips SET count=count+1 WHERE ip='"+onlineip+"' AND count>'0'",true);
				}
			}
			else{
				dataBaseService.runQuery("INSERT INTO jrun_regips (ip, count, dateline) VALUES ('"+onlineip+"', '1', '"+timestamp+"')",true);
			}
		}
		byte sigstatus = Byte.valueOf(!signature.equals("") ? "1" : "0");
		String idstring =Common.getRandStr(6,false);
		String authstr = regverify==1 ? timestamp + "\t2\t" +idstring: "";
		String urlavatar = request.getParameter("urlavatar");
		String avatarwidth = request.getParameter("avatarwidthnew");
		String avatarheight = request.getParameter("avatarheightnew");
		String avatar = null;
		if (urlavatar != null && !urlavatar.equals("")&& groupinfo.get("allowavatar").equals(1)) {
			avatar = urlavatar;
			if (!(Common.matches(urlavatar, "^(images\\/avatars\\/.+?)$") || Common.matches(urlavatar, "^(http:\\/\\/.+?)$"))) {
				request.setAttribute("errorInfo", "您设置的头像类型无效,请返回修改。");
				return mapping.findForward("showMessage");
			}
			if (!Common.matches(avatar.substring(avatar.lastIndexOf(".") + 1),"(gif|jpg|png")) {
				request.setAttribute("errorInfo", "您设置的头像类型无效,请返回修改。");
				return mapping.findForward("showMessage");
			}
			if (avatarwidth == null || avatarwidth.equals("")|| avatarwidth.equals("*") || avatarheight == null|| avatarheight.equals("") || avatarheight.equals("*")) {
				avatarwidth = "80";
				avatarheight = "80";
			}
		} else {
			avatar = "";
			avatarwidth = "";
			avatarheight = "";
		}
		Members member = new Members();
		member = (Members) setValues(member, request);
		String bday=request.getParameter("bday");
		bday=bday!=null&&Common.datecheck(bday) ? Common.dateformat(bday): "0000-00-00";
		int uid = dataBaseService.insert("INSERT INTO jrun_members (username, password, secques, gender, adminid, groupid, regip, regdate, lastvisit, lastactivity, posts, credits, extcredits1, extcredits2, extcredits3, extcredits4, extcredits5, extcredits6, extcredits7, extcredits8, email, bday, sigstatus, tpp, ppp, styleid, dateformat, timeformat, pmsound, showemail,newsletter, invisible, timeoffset)VALUES" +
				" ('"+username+"', '"+password+"', '"+secques+"', '"+member.getGender()+"', '0', '"+groupinfo.get("groupid")+"', '"+onlineip+"', '"+timestamp+"', '"+timestamp+"', '"+timestamp+"', '0', "+credits+","+initcredit1+","+initcredit2+","+initcredit3+","+initcredit4+","+initcredit5+","+initcredit6+","+initcredit7+","+initcredit8+", '"+email+"', '"+bday+"', '"+sigstatus+"', '"+member.getTpp()+"', '"+member.getPpp()+"', '"+member.getStyleid()+"', '"+member.getDateformat()+"', '"+member.getTimeformat()+"', '"+member.getPmsound()+"', '"+member.getShowemail()+"', '"+member.getNewsletter()+"', '"+(member.getInvisible()!=null?member.getInvisible():0)+"', '"+member.getTimeoffset()+"')", true);
		Memberfields memberfield = new Memberfields();
		memberfield.setUid(uid);
		memberfield.setBio("");
		memberfield.setIgnorepm("");
		memberfield.setGroupterms("");
		memberfield.setSpacename("");
		memberfield = (Memberfields) setValues(memberfield, request);
		String location = request.getParameter("location");
		memberfield.setLocation(Common.cutstr(location, 30));
		memberfield.setSightml(signature);
		memberfield.setAuthstr(authstr);
		memberfield.setAvatar(avatar);
		memberfield.setAvatarheight(Common.toDigit(avatarheight, 127L, 0L).shortValue());
		memberfield.setAvatarwidth(Common.toDigit(avatarwidth, 127L, 0L).shortValue());
		dataBaseService.runQuery("INSERT INTO jrun_memberfields (uid, nickname, site,alipay,icq, qq, yahoo, msn, taobao, location, customstatus, medals, avatar, avatarwidth, avatarheight, bio, sightml,ignorepm,groupterms,authstr,spacename "+fieldadd1+") VALUES ('"+uid+"', '"+(memberfield.getNickname()!=null?memberfield.getNickname():"")+"', '"+(memberfield.getSite()!=null?memberfield.getSite():"")+"', '"+(memberfield.getAlipay()!=null?memberfield.getAlipay():"")+"', '"+(memberfield.getIcq()!=null?memberfield.getIcq():"")+"', '"+(memberfield.getQq()!=null?memberfield.getQq():"")+"', '"+(memberfield.getYahoo()!=null?memberfield.getYahoo():"")+"', '"+(memberfield.getMsn()!=null?memberfield.getMsn():"")+"', '"+(memberfield.getTaobao()!=null?memberfield.getTaobao():"")+"', '"+(memberfield.getLocation()!=null?memberfield.getLocation():"")+"', '"+(memberfield.getCustomstatus()!=null?memberfield.getCustomstatus():"")+"', '"+(memberfield.getMedals()!=null?memberfield.getMedals():"")+"', '"+memberfield.getAvatar()+"', '"+memberfield.getAvatarwidth()+"', '"+memberfield.getAvatarheight()+"', '"+memberfield.getBio()+"', '"+memberfield.getSightml()+"', '"+memberfield.getIgnorepm()+"', '"+memberfield.getGroupterms()+"', '"+memberfield.getAuthstr()+"','' "+fieldadd2+")",true);
		if (regctrl > 0 || regfloodctrl > 0) {
			dataBaseService.runQuery("DELETE FROM jrun_regips WHERE dateline<='"+(timestamp-(regctrl > 72 ? regctrl : 72)*3600)+"'",true);
			if(regctrl>0){
				dataBaseService.runQuery("INSERT INTO jrun_regips (ip, count, dateline) VALUES ('"+onlineip+"', '-1', '"+timestamp+"')",true);
			}
		}
		if (regverify==2) {
			dataBaseService.runQuery("REPLACE INTO jrun_validating (uid, submitdate, moddate, admin, submittimes, status, message, remark) VALUES ('"+uid+"', '"+timestamp+"', '0', '', '1', '0', '"+regmessage+"', '')",true);
		}
		if (regstatus > 1&&!invitecode.equals("")) {
			dataBaseService.runQuery("UPDATE jrun_invites SET reguid='"+uid+"', regdateline='"+timestamp+"', status='2' WHERE invitecode='"+invitecode+"' AND status IN ('1', '3')",true);
			if("1".equals(inviteconfigs.get("inviteaddbuddy"))) {
				dataBaseService.runQuery("INSERT INTO jrun_buddys (uid, buddyid, dateline) VALUES ('"+invite.get("uid")+"', '"+uid+"', '"+timestamp+"')", true);
			}
			int inviterewardcredit = Common.toDigit(inviteconfigs.get("inviterewardcredit"));
			if(inviterewardcredit>0) {
				int inviteaddcredit = Common.toDigit(inviteconfigs.get("inviteaddcredit"));
				int invitedaddcredit = Common.toDigit(inviteconfigs.get("invitedaddcredit"));
				if(inviteaddcredit>0) {
					dataBaseService.runQuery("UPDATE jrun_members SET extcredits"+inviterewardcredit+"=extcredits"+inviterewardcredit+"+'"+inviteaddcredit+"' WHERE uid='"+uid+"'",true);
				}
				if(invitedaddcredit>0) {
					dataBaseService.runQuery("UPDATE jrun_members SET extcredits"+inviterewardcredit+"=extcredits"+inviterewardcredit+"+'"+invitedaddcredit+"' WHERE uid='"+invite.get("uid")+"'",true);
				}
			}
		}
		member=memberService.findMemberById(uid);
		request.setAttribute("sessionexists", false);
		session.setAttribute("jsprun_uid", member.getUid());
		session.setAttribute("jsprun_userss", member.getUsername());
		session.setAttribute("jsprun_groupid", member.getGroupid());
		session.setAttribute("jsprun_adminid", member.getAdminid());
		session.setAttribute("jsprun_pw", member.getPassword());
		session.setAttribute("user", member);
		session.setAttribute("formhash", Common.getRandStr(8,false));
		request.setAttribute("refresh", "true");
		String realPath=servlet.getServletContext().getRealPath("/");
		Cache cache=new Cache(realPath);
		try {
			cache.updatecache("settings");
		} catch (Exception e) {
			e.printStackTrace();
		}
		cache=null;
		int welcomemsg=Common.toDigit(settings.get("welcomemsg"));
		String welcomemsgtxt=settings.get("welcomemsgtxt");
		if(welcomemsg>0&&welcomemsgtxt!=null&&!"".equals(welcomemsgtxt))
		{
			int timeoffset=(int)((Float)session.getAttribute("timeoffset")*3600);
			Map<String,String> replaces=new HashMap<String, String>();
			replaces.put("{sitename}", settings.get("sitename"));
			replaces.put("{bbname}", settings.get("bbname"));
			replaces.put("{time}", Common.gmdate("yyyy-MM-dd HH:mm",timestamp+timeoffset));
			replaces.put("{adminemail}",settings.get("adminemail"));
			replaces.put("{myname}", member.getUsername());
			replaces.put("{username}", member.getUsername());
			replaces.put("(\t|\n)", "<br/>");
			String welcomemsgtitle=settings.get("welcomemsgtitle");
			String welcomtitle=welcomemsgtitle!=null&&!"".equals(welcomemsgtitle)?welcomemsgtitle:"Welcome to {bbname}!";
			welcomtitle=replacesitevar(welcomtitle, replaces);
			welcomemsgtxt=replacesitevar(welcomemsgtxt, replaces);
			if(welcomemsg==1){
				dataBaseService.runQuery("INSERT INTO jrun_pms (msgfrom, msgfromid, msgtoid, folder, new, subject, dateline, message) VALUES ('System Message', '0', '"+uid+"', 'inbox', '1', '"+welcomtitle+"', '"+timestamp+"','"+welcomemsgtxt+"')",true);
				dataBaseService.runQuery("UPDATE jrun_members SET newpm='1' WHERE uid='"+uid+"'",true);
			}else if(welcomemsg==2){
				Map<String,String> mails=dataParse.characterParse(settings.get("mail"), false);
				mails.put("jsprun_root",servlet.getServletContext().getRealPath("/"));
				Mail mail=new Mail(mails);
				mail.sendMessage(mails.get("from"),username+" <"+email+">",welcomtitle,null,welcomemsgtxt);
			}
		}
		int fromuid = Common.toDigit(CookieUtil.getCookie(request, "promotion", true, settings));
		if(fromuid>0) {
			CookieUtil.setCookie(request, response, "promotion", "", 0,true,settings);
		}
		
		if (regverify==1) {
			Map<String,String> mails=dataParse.characterParse(settings.get("mail"), false);
			Mail mail=new Mail(mails);
			String boardurl=(String)session.getAttribute("boardurl");
			mail.sendMessage(mails.get("from"),username+" <"+email+">","Email 地址验证","\n"+username+" ,\n这封信是由 "+settings.get("bbname")+" 发送的。\n\n您收到这封邮件,是因为在我们论坛的新用户注册,或用户修改 Email 使用\n了您的地址。如果您并没有访问过我们的论坛,或没有进行上述操作,请忽\n略这封邮件。您不需要退订或进行其他进一步的操作。\n\n----------------------------------------------------------------------\n帐号激活说明\n----------------------------------------------------------------------\n\n您是我们论坛的新用户,或在修改您的注册 Email 时使用了本地址,我们需\n要对您的地址有效性进行验证以避免垃圾邮件或地址被滥用。\n\n您只需点击下面的链接即可激活您的帐号:\n\n"+boardurl+"member.jsp?action=activate&uid="+uid+"&id="+idstring+"\n\n(如果上面不是链接形式,请将地址手工粘贴到浏览器地址栏再访问)\n\n感谢您的访问,祝您使用愉快!\n\n\n\n此致\n\n"+settings.get("bbname")+" 管理团队.\n"+boardurl,null);
			request.setAttribute("resultInfo","确认 Email 已经发送,请用邮件中提供的方法激活您的帐号。如果您没有收到我们发送的系统邮件,请点击控制面板首页中的“重新验证 Email 有效性”,或尝试更换另外一个地址。注意:在完成激活之前,根据管理员设置,您将只能以待验证会员的身份访问论坛,您可能不能进行发帖等操作。激活成功后,上述限制将自动取消。");
			return mapping.findForward("showMessage");
		} else if (regverify==2) {
			request.setAttribute("successInfo","非常感谢您的注册,管理员设置了人工验证新注册用户,请等待审核通过,现在将转入控制面板首页。");
			request.setAttribute("requestPath", "memcp.jsp");
			return mapping.findForward("showMessage");
		} else {
			if(Common.isshowsuccess(session, "register_succeed")){
				Common.requestforward(response, settings.get("indexname"));
				return null;
			}else{
				request.setAttribute("successInfo", "非常感谢您的注册,现在将以会员身份登录论坛。");
				request.setAttribute("requestPath",settings.get("indexname"));
				return mapping.findForward("showMessage");
			}
		}
	}
	private Object setValues(Object bean, HttpServletRequest request) {
		try {
			Field[] fields = bean.getClass().getDeclaredFields();
			String paraName =null;
			String paraValue =null;
			String setMethod = null;
			int fieldLength = fields.length;
			for (int i = 0; i < fieldLength; i++) {
				paraName = fields[i].getName();
				Object obj = request.getParameter((paraName));
				if (obj != null) {
					paraValue = obj.toString();
					if (paraValue != null && !paraValue.equals("")) {
						if ("icq".equals(paraName)) {
							paraValue = paraValue.matches("^\\d{5,12}$") ? paraValue: "";
						}
						if ("qq".equals(paraName)) {
							paraValue = paraValue.matches("^\\d{5,12}$") ? paraValue: "";
						}
						if ("alipay".equals(paraName)) {
							paraValue = paraValue.matches("^\\d{5,12}$") ? paraValue: "";
						}
						setMethod = "set"+ paraName.substring(0, 1).toUpperCase()+ paraName.substring(1, paraName.length());
						Method method = bean.getClass().getMethod(setMethod,fields[i].getType());
						method.invoke(bean, Common.convert(paraValue, fields[i].getType()));
					}
				}
			}
			fields=null;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return bean;
	}
	
	private String replacesitevar(String value,Map<String,String> replaces)
	{
		Set<String> keys=replaces.keySet();
		for (String key : keys) {
			value=value.replace(key,replaces.get(key) );
		}
		return value;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?