你现在的位置:首页 > PHP网站建设知识库 > ZenCart > 正文

如何限制zencart顾客年龄在18周岁以上

没有确切的方法可以检测出访问者的年龄,但你可以查看他们已经提交给你的出生日期,通过这个来确定他们是否大于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');