breiti0310 Posted November 3, 2010 Report Share Posted November 3, 2010 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 More sharing options...
breiti0310 Posted November 3, 2010 Author Report Share Posted November 3, 2010 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 More sharing options...
Honki Posted May 14, 2012 Report Share Posted May 14, 2012 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.