Jump to content
xt:Commerce Community Forum

Altersprüfung


breiti0310

Recommended Posts

Hey.

ich will in ein bestehendes xt-commerce Shop-System eine Überprüfung des Alters anhand des angegebenen Geburtsdatum einpflegen. Nur leider funktioniert meine Abfrage nicht wirklich. Die vorherige Überprüfung des Datumsformats nimmt er noch nur die Überprüfung des Alters nicht mehr. Komischerweise wenn ich ein Pflichtfeld vergessen zu befüllen springt er in die Prüfung. Jedoch sagt er mir dann egal welches Datum ich angebe das ich nicht alt genug bin, obwohl ich laut Angegebenen Datum alt genug bin.

//Überprüfung der Namenslänge
if (strlen($lastname) < ENTRY_LAST_NAME_MIN_LENGTH) {
$error = true;

$messageStack->add('create_account', ENTRY_LAST_NAME_ERROR);
}
//Überprüfung Datumsformat
if (ACCOUNT_DOB == 'true')
{
if (checkdate(substr(xtc_date_raw($dob), 4, 2), substr(xtc_date_raw($dob), 6, 2), substr(xtc_date_raw($dob), 0, 4)) == false) {
$error = true;

$messageStack->add('create_account', ENTRY_DATE_OF_BIRTH_ERROR);
}
}

//Altersüberprüfung
if (ACCOUNT_DOB == 'true')
{
$day = substr(xtc_date_raw($dob), 6, 2);
$month = substr (xtc_date_raw($dob), 4, 2);
$year = substr(xtc_date_raw($dob), 0, 4);
$today = getdate();
$cyear = $today['year'];
$cmonth = $today['mon'];
$cday = $today['mday'];
$fullyears = $cyears - $year;

if ($cmonth < $month || ($cmonth == $month && $cday < $day)) $fullyears--;

if ($fullyears < ENTRY_DOB_MIN_AGE)
{
$error = true;
$entry_date_of_birth_error2 = true;
$messageStack->add('create_account', ENTRY_DATE_OF_BIRTH_ERROR2);
}
}[/PHP]

Link to comment
Share on other sites

also das Problem mit der Prüfung hab ich mittlerweile gelöst bekommen. Es wird nun geprüft ob ich alt genug bin.

Nun hat sich leider ein anderes Problem aufgetan. Die Prüfung erfolgt nur, wenn ich ein Pflichtfeld nicht befüllt hab. Hat einer vielleicht eine Idee warum das so sein kann.

Anbei der Code

$process = false;
if (isset ($_POST['action']) && ($_POST['action'] == 'process')) {
$process = true;

if (ACCOUNT_GENDER == 'true')
$gender = xtc_db_prepare_input($_POST['gender']);
$firstname = xtc_db_prepare_input($_POST['firstname']);
$lastname = xtc_db_prepare_input($_POST['lastname']);
if (ACCOUNT_DOB == 'true')
$dob = xtc_db_prepare_input($_POST['dob']);
$email_address = xtc_db_prepare_input($_POST['email_address']);
if (ACCOUNT_COMPANY == 'true')
$company = xtc_db_prepare_input($_POST['company']);
if (ACCOUNT_COMPANY_VAT_CHECK == 'true')
$vat = xtc_db_prepare_input($_POST['vat']);
$street_address = xtc_db_prepare_input($_POST['street_address']);
if (ACCOUNT_SUBURB == 'true')
$suburb = xtc_db_prepare_input($_POST['suburb']);
$postcode = xtc_db_prepare_input($_POST['postcode']);
$city = xtc_db_prepare_input($_POST['city']);
$zone_id = xtc_db_prepare_input($_POST['zone_id']);
if (ACCOUNT_STATE == 'true')
$state = xtc_db_prepare_input($_POST['state']);
$country = xtc_db_prepare_input($_POST['country']);
$telephone = xtc_db_prepare_input($_POST['telephone']);
$fax = xtc_db_prepare_input($_POST['fax']);
$newsletter = '0';
$password = xtc_db_prepare_input($_POST['password']);
$confirmation = xtc_db_prepare_input($_POST['confirmation']);

$error = false;

if (ACCOUNT_GENDER == 'true') {
if (($gender != 'm') && ($gender != 'f')) {
$error = true;

$messageStack->add('create_account', ENTRY_GENDER_ERROR);
}
}

if (strlen($firstname) < ENTRY_FIRST_NAME_MIN_LENGTH) {
$error = true;

$messageStack->add('create_account', ENTRY_FIRST_NAME_ERROR);
}

if (strlen($lastname) < ENTRY_LAST_NAME_MIN_LENGTH) {
$error = true;

$messageStack->add('create_account', ENTRY_LAST_NAME_ERROR);
}

if (ACCOUNT_DOB == 'true')
{
if (checkdate(substr(xtc_date_raw($dob), 4, 2), substr(xtc_date_raw($dob), 6, 2), substr(xtc_date_raw($dob), 0, 4)) == false)
{
$error = true;
$messageStack->add('create_account', ENTRY_DATE_OF_BIRTH_ERROR);
}

}

// Alterprüfung

$min = ENTRY_DOB_MIN_AGE;
$birthday = $dob;
if(strtotime($birthday. ' + '. $min. ' years') > strtotime(date('Y-m-d')))
{
$error = true;
$entry_date_of_birth_error2 = true;
$messageStack->add('create_account', ENTRY_DATE_OF_BIRTH_ERROR2);
}
[/PHP]

Link to comment
Share on other sites

  • 1 year later...

Hallo

Ich hab das folgend gelöst, hab jedoch die Version CE 4.0.14.

class.check_fields.php


#Funktion überprüft ob der User über 18 in EU Ländern ist!
function _ageEU($age, $data, $error_message){
global $xtPlugin, $info;

if ($age < 18) {
$this->error = true;
$info->_addInfo($error_message);
}
}
[/PHP]

[b]class.customer.php[/b] in function "_checkCustomerAddressData" in if

[PHP]
$age = current_age($data['customers_dob']);
$this->_ageEU($age, $data['customers_country_code'], ERROR_USER_AGE_EU);
[/PHP]

Hoffe das hilft, falls du es noch brauchst!

Lg Honki

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...