没有确切的方法可以检测出访问者的年龄,但你可以查看他们已经提交给你的出生日期,通过这个来确定他们是否大于18岁(或者你选择的其他年龄)。
要做到这一点,就要在所有的模版文件includes/modules/create_account.php文件中创建一个over-ride文件。
查找代码部分,如下所示:
if (ACCOUNT_DOB == 'true') {
if (ENTRY_DOB_MIN_LENGTH > 0 or
!empty($_POST['dob'])) {
if (substr_count($dob,'/') > 2 ||
checkdate((int)substr(zen_date_raw($dob), 4, 2),
(int)substr(zen_date_raw($dob), 6, 2), (int)substr(zen_date_raw($dob), 0, 4))
== false) {
$error = true;
$messageStack->add('create_account',
ENTRY_DATE_OF_BIRTH_ERROR);
}
}
}
扩大,(设置你想设置的最低年龄)
if (ACCOUNT_DOB == 'true') {
if
(ENTRY_DOB_MIN_LENGTH > 0 or !empty($_POST['dob'])) {
if (substr_count($dob,'/') > 2
|| checkdate((int)substr(zen_date_raw($dob), 4, 2),
(int)substr(zen_date_raw($dob), 6, 2), (int)substr(zen_date_raw($dob), 0, 4))
== false) {
$error = true;
$messageStack->add('create_account',
ENTRY_DATE_OF_BIRTH_ERROR);
}
$minimum_age = 18;
$acceptable_dob = (date('Y') - $minimum_age) .
date('md');
if (zen_date_raw($dob) > $acceptable_dob) {
$error = true;
$messageStack->add('create_account', ENTRY_DATE_OF_BIRTH_UNDERAGE);
}
}
}
(注意:最小年龄应该是管理者设置,this is taking liberties with PHP's
weak typing。)
然后为includes/languages/english/create_account.php创建一个over-ride文件,并且放在那里的下面一行。修改正文,以适合你反馈错误给访问者的风格。
define('ENTRY_DATE_OF_BIRTH_UNDERAGE','Sorry,
but you must be at least 18 to register to use this site'); |