我尝试制作我们软件的试用版。但我无法做到这一点。当我的系统中的时钟发生变化时,它就无法正常工作。
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar expiredate = Calendar.getInstance();
try {
Date date = sdf.parse("24/06/2015");
expiredate.setTime(date);
if (Calendar.getInstance().after(expiredate)) {
JOptionPane.showMessageDialog(null, "Sorry your software has expired", "Expire",
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
} catch(ParseException e) {
// ...
}
答案 0 :(得分:4)
你必须决定你想花多少精力。如果您的应用程序仅在客户端系统上运行(意味着:它不需要连接到中央服务器)...那么您的选项非常有限。
当然,您的应用程序可以保存日期/时间戳......但是当人们开始篡改系统时钟时,这将无济于事。
长话短说:你应该在“易于实施;但可能容易规避”和“难以实施;因此可能容易做错”之间取得平衡。换句话说:请记住,这种“许可证检查功能”可能会使您的潜在客户难以使用该软件。或者“更糟糕”:你花了很多时间来解决这个问题的“安全解决方案”,并且在实现它时,你会在软件中添加各种错误。不要低估推出解决方案所需的努力,这种解决方案无法被有动力的用户破解......
最终建议;尝试不同的方法:专注于为您的应用程序创建优秀的用户体验(但可能具有受限制的功能集)。只是说服您的客户,您的应用程序值得付钱;并且不提供“试用许可证”;但是免费的“试用版”功能比实际产品少。
答案 1 :(得分:1)
$sql ='SELECT * FROM finsys.user
WHERE username= "$user" AND password = "$pass"
AND now() <= "20-Dec" ';
如果是,则从数据库中删除用户记录..
客户不会更改系统日期更改的时间。如果他们通过消息显示审判,那么他们可能会更改系统日期。
不要对邮件进行任何试用。 提供消息为'用户身份验证失败'.. 他们无法知道为什么会这样;在那之前DB会改变..