有没有人有任何关于如何实现基于 jQuery 或 javascript 的年龄检查器的可靠示例?我希望将某人发送到一个页面,当他们访问网站上的任何页面时,他们需要每天至少输入一次日、月和年。一旦他们验证为 18 岁,那么如果他们返回,直到第二天他们才会再次受到骚扰。
有任何想法吗?
有没有人有任何关于如何实现基于 jQuery 或 javascript 的年龄检查器的可靠示例?我希望将某人发送到一个页面,当他们访问网站上的任何页面时,他们需要每天至少输入一次日、月和年。一旦他们验证为 18 岁,那么如果他们返回,直到第二天他们才会再次受到骚扰。
有任何想法吗?
基于 cookie 的解决方案似乎合乎逻辑,因为您可以通过 JavaScript 以编程方式修改它们,并且可以设置它们的到期时间。在纯 JavaScript 中计算日期可以这样完成:
var millisPerYear = 1000 * 60 * 60 * 24 * 365;
var birthdate = new Date(year, month, day); // from user input.
var age = ((new Date().getTime()) - birthdate.getTime()) / millisPerYear;
// Now set the "age" cookie.
剩下的就是让您的服务器端响应处理程序根据请求代理的“年龄”cookie 的值有条件地返回内容。
网络上似乎有许多现有资源可用于实现类似的功能。它们都使用用户持有的生日选择器创建一个cookie,可以设置为一天后过期。显然,如果您的用户没有启用 cookie,这可能是个问题。下面是几个例子。
http://www.webdesignforums.net/php-67/age_verification_script-30188/index2.html
有一个很棒的 JavaScript 日期库,称为DateJS。它使日期操作变得非常简单。
当然,您的第一步是解析提供的日期。DateJS 提供了很多解析功能,例如:
Date.parse("Mar 3 2010");
Date.parse('March 20th 1973');
Date.parse("03 12 2010");
解析日期后,您可以将其与 18 年前的日期进行比较。这也很容易使用 DateJS
var userBDay = Date.parse("Mar 3 1970");
var eighteenYearsAgo = (18).years().ago();
var is18 = (userBDay >= eighteenYearsAgo);
你当然是假设用户是诚实的。更不用说可以禁用 JS,或者修改客户端。但这是一个完全不同的讨论。
编辑:忘记了您提到每天只进行一次验证。这将需要: