⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 registermanageaction.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package cn.jsprun.struts.foreg.actions;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import cn.jsprun.domain.Memberfields;
import cn.jsprun.domain.Members;
import cn.jsprun.foreg.utils.CookieUtil;
import cn.jsprun.service.system.DataBaseService;
import cn.jsprun.service.user.MemberService;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.Cache;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.DataParse;
import cn.jsprun.utils.Mail;
import cn.jsprun.utils.Md5Token;

public class RegisterManageAction extends DispatchAction {
	private MemberService memberService = (MemberService) BeanFactory.getBean("memberService");
	private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
	private DataParse dataParse = (DataParse) BeanFactory.getBean("dataParse");
	@SuppressWarnings("unchecked")
	public ActionForward toRegister(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
		Map<String,String> settings=(Map<String,String>)request.getAttribute("settings");
		HttpSession session=request.getSession();
		int jsprun_uid=(Integer)session.getAttribute("jsprun_uid");
		if (jsprun_uid>0) {
			request.setAttribute("successInfo", "欢迎您回来,"+session.getAttribute("jsprun_userss")+ "。现在将转入登录前页面。");
			request.setAttribute("requestPath", settings.get("indexname"));
			return mapping.findForward("showMessage");
		}
		int regstatus=Integer.valueOf(settings.get("regstatus"));
		if (regstatus == 0) {
			request.setAttribute("errorInfo", "对不起,目前论坛禁止新用户注册,请返回。");
			return mapping.findForward("showMessage");
		}
		int bbrules = Integer.valueOf(settings.get("bbrules"));
		String rulesubmit = request.getParameter("rulesubmit");
		if (bbrules==1 && rulesubmit == null) {
			request.setAttribute("bbrulestxt", settings.get("bbrulestxt").replaceAll("(\t|\n)", "<br/>"));
		} else {
			request.setAttribute("regname", settings.get("regname"));
			int regadvance = Integer.valueOf(settings.get("regadvance"));
			request.setAttribute("advcheck",regadvance==1 ? "checked='checked'" : "");
			request.setAttribute("advdisplay", regadvance==1? "": "none");
			boolean seccodecheck = (Integer.valueOf(settings.get("seccodestatus"))&1)>0;
			if (seccodecheck) {
				request.setAttribute("seccodedata", dataParse.characterParse(settings.get("seccodedata"), false));
			}
			request.setAttribute("seccodecheck", seccodecheck);
			Map secqaas  = dataParse.characterParse(settings.get("secqaa"), false);
			int secqaaStatus=secqaas!=null?((Byte)secqaas.get("status"))&1:0;
			secqaas=null;
			request.setAttribute("secqaaStatus", secqaaStatus);
			int regverify=Integer.valueOf(settings.get("regverify"));
			request.setAttribute("regverify",regverify);
			request.setAttribute("accessemail", settings.get("accessemail").replaceAll("\r|\n", "|"));
			request.setAttribute("censoremail", settings.get("censoremail").replaceAll("\r|\n", "|"));
			request.setAttribute("doublee", settings.get("doublee"));
			int fromuid = Common.toDigit(CookieUtil.getCookie(request, "promotion", true, settings));
			if (fromuid >0) {
				List<Map<String,String>> members=dataBaseService.executeQuery("SELECT username FROM jrun_members WHERE uid='"+fromuid+"'");
				if (members != null&&members.size()>0) {
					String fromuser = members.get(0).get("username");
					request.setAttribute("fromuser", fromuser);
				} else {
					CookieUtil.setCookie(request, response, "promotion", "", 0,true,settings);
				}
			}
			Map<String,String> profilefields=(Map<String,String>)request.getAttribute("profilefields");
			request.setAttribute("fields_required", dataParse.characterParse(profilefields.get("fields_required"),true));
			request.setAttribute("fields_optional",dataParse.characterParse(profilefields.get("fields_optional"),true));
			int initcredits = Integer.valueOf(settings.get("initcredits").split(",")[0]);
			Map<String,String> groupinfo=dataBaseService.executeQuery("SELECT groupid, allownickname, allowcstatus, allowavatar, allowcusbbcode, allowsigbbcode, allowsigimgcode, maxsigsize FROM jrun_usergroups WHERE "+ (regverify >0? "groupid='8'" : "creditshigher<="+ initcredits + " AND " + initcredits+ "< creditslower LIMIT 1")).get(0);
			if(groupinfo.get("allowavatar").equals("3")){
				groupinfo.put("allowavatar", "2");
			}
			request.setAttribute("groupinfo", groupinfo);
			request.setAttribute("styleTemplates", dataParse.characterParse(settings.get("stylejump"),true));
			request.setAttribute("dateformats", settings.get("userdateformat").split("\n"));
			request.setAttribute("rulesubmit", rulesubmit);
			request.setAttribute("regstatus", regstatus);
		}
		request.setAttribute("bbrules", bbrules);
		return mapping.findForward("toRegister");
	}

	@SuppressWarnings("unchecked")
	public ActionForward register(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
		String username = request.getParameter("username");
		int usersize=Common.strlen(username);
		if(usersize < 3){
			request.setAttribute("errorInfo", "对不起,您输入的用户名小于3个字符, 请返回输入一个较长的用户名。");
			return mapping.findForward("showMessage");
		}else if(usersize > 15){
			request.setAttribute("errorInfo", "对不起,您的用户名超过 15 个字符,请返回输入一个较短的用户名。");
			return mapping.findForward("showMessage");
		}
		String seccodeverify = request.getParameter("seccodeverify");
		String secanswer = request.getParameter("secanswer");
		String password = request.getParameter("password").trim();
		String password2 = request.getParameter("password2").trim();
		String email = request.getParameter("email").trim();
		String invitecode = request.getParameter("invitecode");
		String fromuser = request.getParameter("fromuser");
		String regmessage = request.getParameter("regmessage");
		HttpSession session=request.getSession();
		if (seccodeverify != null) {
			if (!seccodeverify.equals(session.getAttribute("rand"))) {
				request.setAttribute("errorInfo", "您输入的验证码不正确,无法提交,请返回修改。");
				return mapping.findForward("showMessage");
			}
		}
		if (secanswer != null) {
			if (!secanswer.trim().equals((String)session.getAttribute("answer"))) {
				request.setAttribute("errorInfo", "验证问答回答错误,无法提交,请返回修改。");
				return mapping.findForward("showMessage");
			}
		}
		if (!password.equals(password2)) {
			request.setAttribute("errorInfo", "两次输入的密码不一致,请返回检查后重试。");
			return mapping.findForward("showMessage");
		}
		Map<String,String> settings=(Map<String,String>)request.getAttribute("settings");
		String censoruser=settings.get("censoruser");
		if (Common.censoruser(username, censoruser)) {
			request.setAttribute("errorInfo", "用户名包含敏感字符或被系统屏蔽,请返回重新填写。");
			return mapping.findForward("showMessage");
		}
		if ("".equals(password)) {
			request.setAttribute("errorInfo", "密码空或包含非法字符,请返回重新填写。");
			return mapping.findForward("showMessage");
		}
		password=Md5Token.getInstance().getLongToken(password);
		String accessemail=settings.get("accessemail");
		String censoremail=settings.get("censoremail");
		boolean invalidemail = !accessemail.equals("") ? !Common.matches(email,"(" + accessemail.replaceAll("\r\n", "1")+ ")$") : !censoremail.equals("")&& Common.matches(email, "(" + censoremail.replaceAll("\r\n", "1")+ ")$");
		if (!Common.isEmail(email) || invalidemail) {
			request.setAttribute("errorInfo","Email 地址无效或包含不可使用的邮箱域名,请返回重新填写。");
			return mapping.findForward("showMessage");
		}
		int regstatus = Integer.valueOf(settings.get("regstatus"));
		invitecode=regstatus>1&&invitecode!=null?Common.dhtmlspecialchars(invitecode):"";
		if (fromuser != null) {

		}
		int regverify = Integer.valueOf(settings.get("regverify"));
		if (regverify == 2&&(regmessage == null||"".equals(regmessage.trim()))) {
			request.setAttribute("errorInfo", "您没有填写必填项目,请返回修改。");
			return mapping.findForward("showMessage");
		}
		String[] initcredits=settings.get("initcredits").split(",");
		int initcredit1=Integer.valueOf(initcredits[0]);
		int initcredit2=Integer.valueOf(initcredits[1]);
		int initcredit3=Integer.valueOf(initcredits[2]);
		int initcredit4=Integer.valueOf(initcredits[3]);
		int initcredit5=Integer.valueOf(initcredits[4]);
		int initcredit6=Integer.valueOf(initcredits[5]);
		int initcredit7=Integer.valueOf(initcredits[6]);
		int initcredit8=Integer.valueOf(initcredits[7]);
		int credits = initcredit1+initcredit2+initcredit3+initcredit4+initcredit5+initcredit6+initcredit7+initcredit8;
		Map<String,String> groupinfo=dataBaseService.executeQuery("SELECT groupid, allownickname, allowcstatus, allowavatar, allowcusbbcode, allowsigbbcode, allowsigimgcode, maxsigsize FROM jrun_usergroups WHERE "+ (regverify >0 ? "groupid='8'" : "creditshigher <= "+ credits + " AND " + credits+ "< creditslower LIMIT 1")).get(0);
		String msn = request.getParameter("msn");
		String nickname = request.getParameter("nickname");
		String cstatus = request.getParameter("cstatus");
		String signature = request.getParameter("signature");
		int questionid = Common.toDigit(request.getParameter("questionid"));
		String answer = request.getParameter("answer");
		String secques = Common.quescrypt(questionid, answer);
		if (nickname != null&& censoruser != ""	&& Common.censoruser(nickname, censoruser)) {
			request.setAttribute("errorInfo", "昵称包含敏感字符或被系统屏蔽,请返回重新填写。");
			return mapping.findForward("showMessage");
		}
		if (cstatus != null&& censoruser != ""	&& Common.censoruser(cstatus, censoruser)) {
			request.setAttribute("errorInfo", "自定义头衔包含敏感字符或被系统屏蔽,请返回重新填写。");
			return mapping.findForward("showMessage");
		}		
		if (!"".equals(msn) && !Common.isEmail(msn)) {
			request.setAttribute("errorInfo", "MSN账号无效,请返回重新填写。");
			return mapping.findForward("showMessage");
		}
		Map<String,String> profilefields=(Map<String,String>)request.getAttribute("profilefields");
		Map<String,Map<String,String>> fields_required=dataParse.characterParse(profilefields.get("fields_required"),true);
		Map<String,Map<String,String>> fields_optional=dataParse.characterParse(profilefields.get("fields_optional"),true);
		if(fields_required==null){
			fields_required =new TreeMap<String,Map<String,String>>();
		}
		if(fields_optional!=null&&fields_optional.size()>0){
			fields_required.putAll(fields_optional);
		}
		StringBuffer fieldadd1=new StringBuffer();
		StringBuffer fieldadd2=new StringBuffer();
		if(fields_required.size()>0){
			Set<String> field_keys=fields_required.keySet();
			for(String field_key:field_keys){
				Map<String,String>  field=fields_required.get(field_key);
				String field_val=request.getParameter(field_key+"new");
				if(field_val!=null){
					field_val=field_val.trim();
				}else{
					field_val="";
				}
				if("1".equals(field.get("required"))&&"".equals(field_val)){
					request.setAttribute("errorInfo", "您没有填写必填项目,请返回修改。");
					return mapping.findForward("showMessage");
				}else{
					fieldadd1.append(", "+field_key);
					fieldadd2.append(", '"+Common.dhtmlspecialchars(field_val)+"'");
				}
			}
		}
		int maxsigsize = Integer.valueOf(groupinfo.get("maxsigsize"));
		if (maxsigsize > 0) {
			if (signature.length() > maxsigsize) {
				request.setAttribute("maxsigsize", maxsigsize);
				request.setAttribute("errorInfo", "您的签名长度超过 " + maxsigsize+ " 字符的限制,请返回修改。");
				return mapping.findForward("showMessage");
			}
			signature=Common.dhtmlspecialchars(signature);
		} else {
			signature = "";
		}
		Map<String,String> inviteconfigs =dataParse.characterParse(settings.get("inviteconfig"),false);
		String onlineip = request.getRemoteAddr();
		int timestamp = (Integer)(request.getAttribute("timestamp"));
		String ipregctrl =settings.get("ipregctrl");
		String ctrlip = "";
		int regctrl = Integer.valueOf(settings.get("regctrl"));
		if (!"".equals(ipregctrl)) {
			String[] ipregctrls = ipregctrl.split("\n");
			for (String obj : ipregctrls) {
				if (Common.matches(onlineip, "^(" + obj + ")")) {
					ctrlip = obj + "%";
					regctrl = 72;
					break;
				} else {
					ctrlip = onlineip;
				}
			}
			ipregctrls=null;

⌨️ 快捷键说明

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