0

有没有人有任何关于如何实现基于 jQuery 或 javascript 的年龄检查器的可靠示例?我希望将某人发送到一个页面,当他们访问网站上的任何页面时,他们需要每天至少输入一次日、月和年。一旦他们验证为 18 岁,那么如果他们返回,直到第二天他们才会再次受到骚扰。

有任何想法吗?

4

3 回答 3

4

基于 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 的值有条件地返回内容。

于 2010-11-24T17:53:08.510 回答
0

网络上似乎有许多现有资源可用于实现类似的功能。它们都使用用户持有的生日选择器创建一个cookie,可以设置为一天后过期。显然,如果您的用户没有启用 cookie,这可能是个问题。下面是几个例子。

http://www.webdesignforums.net/php-67/age_verification_script-30188/index2.html

http://www.techerator.com/2010/09/how-to-perform-age-verification-with-jquery-and-cookies-mmm-cookies/

于 2010-11-24T17:35:33.023 回答
-1

有一个很棒的 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,或者修改客户端。但这是一个完全不同的讨论。

编辑:忘记了您提到每天只进行一次验证。这将需要:

  • Cookie(客户端)
  • HTML5 LocalStorage(客户端)
  • 会话,可以在页面呈现时或通过 AJAX 请求提供最后一次验证。(服务器端带客户端组件)
于 2010-11-24T17:46:48.267 回答