#1 (permalink)  
Alt 03.11.2010, 06:51
Neuer Benutzer
 
Registriert seit: 01.11.2010
Beiträge: 2
Standard Altersprüfung

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.

PHP-Code:
//Ü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), 42), substr(xtc_date_raw($dob), 62), substr(xtc_date_raw($dob), 04)) == 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), 62);
         
$month substr (xtc_date_raw($dob), 42);
         
$year substr(xtc_date_raw($dob), 04);
         
$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);
         }
      } 
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #2 (permalink)  
Alt 03.11.2010, 09:50
Neuer Benutzer
 
Registriert seit: 01.11.2010
Beiträge: 2
Standard

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

PHP-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), 42), substr(xtc_date_raw($dob), 62), substr(xtc_date_raw($dob), 04)) == 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);
        } 
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #3 (permalink)  
Alt 14.05.2012, 10:34
Neuer Benutzer
 
Registriert seit: 08.10.2010
Beiträge: 19
Standard

Hallo

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

class.check_fields.php
PHP-Code:
#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);
        }
    } 
class.customer.php in function "_checkCustomerAddressData" in if
PHP-Code:
$age current_age($data['customers_dob']);                    
$this->_ageEU($age$data['customers_country_code'], ERROR_USER_AGE_EU); 
Hoffe das hilft, falls du es noch brauchst!

Lg Honki
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
altersprüfung

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 Uhr.

Copyright © 2011 xt:Commerce GmbH / xt:Commerce International Ltd. - All Rights Reserved

xt:Commerce is a SafeCharge brand