呵呵,实现程序注册认证:
register.xml
<?xml version="1.0" encoding="gb2312" ?>
<Root>
<RegisterDate>
2009-08-12
</RegisterDate>
<RegisterType>
0
</RegisterType>
<RegisterDays>
2010-09-09
</RegisterDays>
<RegisterPwd>
AA8567D28A67D5084ECE25C9BFD51E1C
</RegisterPwd>
</Root>
Action
public int getRegister(){
ServletContext context = this.getServlet().getServletContext();
//方法封装
int reg=check(context);
if(reg<=0){
request.setAttribute("showError", "对不起,您的软件没有注册或注册到期!");
return mapping.findForward(Constants.FAILURE);
}
}
public int check(ServletContext context) {
String reg_name = "";
String reg_pwd = "";
String reg_type = "";
String reg_date = "";
String reg_days = "";
int result = 0;
try {
XMLReader reader = new XMLReader();
reader.ReaderXML(context);
reg_name = reader.getElementvalue("Root", "Company").trim();
reg_pwd = reader.getElementvalue("Root", "RegisterPwd").trim();
reg_type = reader.getElementvalue("Root", "RegisterType").trim();
reg_days = reader.getElementvalue("Root", "RegisterDays").trim();
reg_date = reader.getElementvalue("Root", "RegisterDate").trim();
//核心部分
result = checkmac(reg_name, reg_pwd, reg_type, reg_days, reg_date);
} catch (Exception e) {
log.error("读取注册信息失败!");
//e.printStackTrace();
}
return result;
}
public Element ReaderXML(String xmlFile) {
try {
// PatternLayout layout = new PatternLayout("%-5p %d{yyyy-MM-dd HH:mm:ss} [name] %c{2} [line] %L [msg] %m%n");
// ConsoleAppender appender = new ConsoleAppender( layout, "System.err");
// log.addAppender(appender);
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new FileInputStream(xmlFile));
RootElement = doc.getRootElement();
}
catch (IOException ex) {
log.error("XMLReader构造时出现IO错误("+xmlFile+"):" + ex.toString());
}
catch (JDOMException ex1) {
log.error("XMLReader构造时分析XML文件出错("+xmlFile+"):" + ex1.toString());
}
catch (Exception ex) {
log.error("XMLReader构造出错("+xmlFile+"):" + ex.toString());
}
return RootElement;
}
protected int checkmac(String reg_name, String reg_pwd,
String reg_type, String reg_days, String reg_date) {
MD5 md = new MD5();
// getMD5ofStr是类MD5最主要的公共方法,入口参数是你想要进行MD5变换的字符串
// 返回的是变换完的结果,这个结果是从公共成员digestHexStr取得的,这里不详述
String distName = md.getMD5ofStr(distictDao.getRegisterName());
String newPwd = md.getMD5ofStr( distName + reg_type + reg_days + reg_date );
if (!newPwd.equals(reg_pwd))
return 0;
String currentDate = getTodayFormDate();
int itype = Integer.parseInt(reg_type);
int idays = -1;
switch (itype) {
case 0:
break;
case 1:
idays = 0;
break;
}
//永久注册
if (idays == 0)
return 1;
//限制注册
if(compareDate(currentDate, reg_days))
return 1;
else
return 0;
}
public static boolean compareDate(String fDate, String sDate) {
int compareResult = 0;
if (datidate(fDate) && datidate(sDate)) {
//split String
String[] dateArry1 = fDate.split("-");
String[] dateArry2 = sDate.split("-");
Calendar cld1 = new GregorianCalendar(Integer.parseInt(dateArry1[0]), Integer.parseInt(dateArry1[1]) - 1, Integer.parseInt(dateArry1[2]));
Calendar cld2 = new GregorianCalendar(Integer.parseInt(dateArry2[0]), Integer.parseInt(dateArry2[1]) - 1, Integer.parseInt(dateArry2[2]));
int subYear = cld1.get(Calendar.YEAR) - cld2.get(Calendar.YEAR);
if (subYear > 0)
compareResult = Math.abs(subYear * 365 - cld2.get(Calendar.DAY_OF_YEAR)) + cld1.get(Calendar.DAY_OF_YEAR);
else if (subYear == 0)
compareResult = cld1.get(Calendar.DAY_OF_YEAR) - cld2.get(Calendar.DAY_OF_YEAR);
else
compareResult = subYear * 365 + cld1.get(Calendar.DAY_OF_YEAR) - cld2.get(Calendar.DAY_OF_YEAR);
} else {
System.out.println("Date format Error!");
}
boolean bResult = false;
if (compareResult < 0)
bResult = true;
return bResult;
}
分享到:
相关推荐
整体测试下来使用无问题,前羰小程序认证通道均正常,使用小程序注册认证功能需要平放平台对接,建立第三方平台,使用微信商户进件功能需要开通微信支付服务商功能。 演示图地址:...
免认证功能是指在小程序中,用户可以跳过繁琐的注册和登录流程,直接通过微信账号进行授权登录,提升用户体验,同时简化开发者的身份验证逻辑。 此压缩包中的源码可能包含以下组成部分: 1. **前端代码**:这部分...
- 但这个“免300认证模块”表明它可能提供了一种方法绕过或减免此费用,可能是通过特定的注册流程或者使用特定的认证接口实现的。 - 认证过程中,需要提交企业的营业执照、对公账户信息等,并且要确保信息的真实性...
本项目是基于QT实现的一个简单的聊天小程序,它包含了注册、登录以及文件传输功能,非常适合初学者作为学习和实践的项目。 首先,我们来看看主要的源代码文件: 1. `mainwindow.cpp` 和 `mainwindow.h`:这是主...
11. **Microsoft认证考试流程**:考生需要知道如何注册考试、考试形式、考试时间限制以及评分标准。 压缩包内的两个PDF文件很可能是模拟试题,包含了理论问题和实践题目,考生可以通过它们来检验自己的知识掌握程度...
【标题】"django+python实现的web入门程序-注册登录功能-sqlite3数据库"是一个基于Python的Django框架和SQLite3数据库构建的初级Web应用程序。这个程序旨在帮助初学者理解如何在Django中实现用户注册和登录的核心...
在这个“java实现的用户登录程序”中,我们主要会探讨以下几个关键知识点: 1. **Java Servlet与JSP**: Java Servlet是Java为Web服务器开发的接口,用于处理HTTP请求。JSP(JavaServer Pages)是一种动态网页技术...
在本文中,我们将深入探讨如何使用Django框架来实现用户登录和注册功能,这对于任何Web应用程序来说都是核心组件。Django是一个用Python编写的高级Web框架,它鼓励快速开发和简洁实用的设计理念。 首先,我们需要...
此模块源码声称可以“免300认证”,意味着它可能提供了一种方法,使企业能够在无需支付认证费用的情况下注册并创建小程序账号。 2. **企业小程序账号**:企业小程序账号是针对企业用户的一种特殊类型的小程序账号,...
【标题】:“基于VS2015与SQL2008的C#源程序,实现用户登陆注册功能示例”揭示了如何使用Microsoft的Visual Studio 2015开发环境和SQL Server 2008数据库系统来创建一个C#应用程序,这个程序包含了用户注册和登录的...
在本文中,我们将深入探讨如何使用Java来实现SIP(Session Initiation Protocol)注册过程。SIP是一种应用层控制协议,常用于建立、修改和终止多媒体通信会话,如VoIP电话、视频会议等。Java提供了JSR 289(Java API...
在ASP技术中,实现用户登录和注册功能是常见的应用场景,这对于任何Web应用程序来说都是基础且重要的部分。以下是对ASP注册源码实现登录注册功能的详细讲解。 1. **ASP基础** ASP使用VBScript或JScript等脚本语言...
使用PHP编写的小程序,可以避免微信平台的300元认证费用,这可能是通过使用个人开发者账号或者其他方式实现的。而“源码”则表示提供了完整的代码,开发者可以深入了解其工作原理并根据需求进行修改。 压缩包内的...
- 微信小程序端:通过微信认证登录,商品展示、搜索、分类导航等功能实现。 - 后台管理端:构建API接口,处理小程序端的数据请求,提供商品管理、订单处理、用户信息管理等功能。 5. 性能与安全 - 性能优化:合理...
"传说OL SQL数据库网页注册程序"正是这样一种实现方式,它基于SQL Server数据库,为游戏《传说OL》提供了用户注册的功能。本文将深入探讨该注册程序的核心组成部分,以及如何进行配置和使用。 首先,我们来理解注册...
微信小程序的授权登录是通过微信开放平台实现的,它允许用户使用微信账号快速登录到应用,简化了用户的注册和登录过程。在ASP中,你需要集成微信提供的SDK,调用OAuth2.0授权接口获取用户的OpenID,然后通过这个唯一...
【抽奖小程序前端】是本次源码的核心部分,它包含了微信小程序用于实现抽奖功能的所有前端代码。微信小程序是一种轻量级的应用开发平台,用户无需下载安装即可使用,特别适合开发如抽奖助手这样的轻应用。 在这款...
在Web开发中,登录注册功能是每个网站或应用程序的基础组件,它允许用户创建账户并安全地访问个性化内容。本项目采用Mybatis、...通过这个项目,你可以深入理解Web应用的架构、用户认证的实现以及前后端交互的原理。
10. **安全控制**:在实际项目中,登录注册功能通常涉及用户认证和授权,Spring Security 可以用来实现这些功能。 在这个简单的实现中,你可能会看到以下步骤: 1. 用户通过表单提交登录或注册信息。 2. 控制器...
EXOSIP终端注册程序是基于VC++开发的一个应用程序,它主要功能是利用EXOSIP协议栈来实现SIP(Session Initiation Protocol)终端的注册流程。SIP是一种应用层控制协议,广泛应用于多媒体通信系统,如VoIP、视频会议...