📄 registermanageaction.java
字号:
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 + -