Sentor77 Posted March 8, 2013 Report Share Posted March 8, 2013 Ich bin Webentwickler und setze für das Unternhemen für welches ich arbeite einen Onlineshop auf. Die Entscheidung viel letztes Jahr im Juni auf Veyton. Da wir den Shop nur als kleinen Teil unseres Onlineangebotes betreiben und noch wesentlich mehr darum herum entwickeln, musste ich mich ziemlich intensiv mit Veyton und dessen Kern beschäftigen. Zur Zeit habe ich drei eigene Plugins am laufen in denen ich an die dreizig Hooks benutze. Hauptsächlich übergebe ich an die Templates Informationen, die mir normalerweise dort nicht zur Verfügung stehen. Darüberhinaus habe ich aber auch einige Backendmodule entwickelt, z.B. eine konfortabele Möglichkeit an die ausgehenden Emails Anhänge zu setzen und das ganze schön über das Backend konfigurierbar. Die Artikelansicht abe ich durch weitere Attribute und Einstellmöglichkeiten erweitert sowie den Login/Registrierungsbereich von Veyton komplett abgeschaltet. Das Login sowie die Registrierung geschen über unsere Webseite und die Kundne werden von dort automatisch über ein Single Sign On an Veyton angemeldet wenn sie dem entsprechenden Link folegen. Anders herum werden die Kunden an das Login der Webseite weitergeleitet wenn sie sich im Shop befinden und sich einloggen müssen. Und noch ettliche Änderungen mehr. Bis zum start des Shops wird es allerdings noch ein weilchen dauern, da die Rahmenbedingen noch nicht fertig entwickelt sind. LG Link to comment Share on other sites More sharing options...
ToppFeuerwerk Posted March 8, 2013 Report Share Posted March 8, 2013 Hi, ja das macht einen Fit... Ich bin eher der Typ, installiere 100.000PC's ohne das einer die Finger dafür bewegen muss... Aber ich komm mal wieder nicht weiter. Meine Altersprüfung will nicht wie ich will... Könntest Du mir meine Fehler aufzeigen..? Link to comment Share on other sites More sharing options...
Sentor77 Posted March 8, 2013 Report Share Posted March 8, 2013 Ich kann es probieren. Was genau hast du wo vor? Bzw. welchen Code hast du bisher? Link to comment Share on other sites More sharing options...
ToppFeuerwerk Posted March 8, 2013 Report Share Posted March 8, 2013 Ach ja.... Ich möchte beim Alter prüfen, ob das angegebene Alter mindesten 18Jahre ist... Der Hook... class.customer.php:_CustomerAddressData_check [/PHP][PHP] require_once _SRV_WEBROOT._SRV_WEB_PLUGINS.'mt_manage_adress/classes/class.age_verification.php'; $age = _checkAge($data['customers_dob']); if ($age == true) { $data['customers_dob'] = $data['customers_dob']; } else { $data['customers_dob'] = ($data['customers_dob'], ERROR_AGE_SYNTAX); } [/PHP]Die Classe... [PHP] class age_verification { public function _checkAge($check) { $required_age = '18'; $min_age = strtotime($required_age); if ($min_age !== false || $min_age !== '-1') { if ($check !== '') { $new_check = substr($check, 0, 9); $array = explode('-', $new_check); $dob = mktime(0, 0, 0, $array[1], $array[0], $array[2]); if($min_age >= $dob) { $age = true; } else { $age = false; } return $age; } } } } [/PHP]Aber nicht schlagen.... Gruß Link to comment Share on other sites More sharing options...
Sentor77 Posted March 8, 2013 Report Share Posted March 8, 2013 Ist doch soweit ganz gut. Ein kleiner Fehler hat sich eingeschlichen. Du hast die Klasse zwar eingebunden aber keine Instanz gebildet. So könnte es klappen: require_once _SRV_WEBROOT._SRV_WEB_PLUGINS.'mt_manage_adress/classes/class.age_verification.php'; $ageVerification = new age_verification(); $age = $ageVerification->_checkAge($data['customers_dob']); if ($age == true) { $data['customers_dob'] = $data['customers_dob']; } else { $data['customers_dob'] = ($data['customers_dob'], ERROR_AGE_SYNTAX); } [/PHP] Um mit der Klasse arbeiten zu können, brauchst du ein Object und das instanzierst du mit "new": [PHP]$ageVerification = new age_verification(); [/PHP] Dannach kannst du via Pfeilnotation auf die Methoden der Klasse zugreifen: [PHP]$age = $ageVerification->_checkAge($data['customers_dob']); [/PHP] Das wars eigentlich schon... LG Link to comment Share on other sites More sharing options...
ToppFeuerwerk Posted March 8, 2013 Report Share Posted March 8, 2013 Jo.... Verstanden.... Leider bleibt die LogIn Seite weiss nach dem "klicken" auf "Weiter".... Link to comment Share on other sites More sharing options...
Sentor77 Posted March 8, 2013 Report Share Posted March 8, 2013 Und noch einmal den Rest angeschaut und korrigiert: global $info; require_once _SRV_WEBROOT._SRV_WEB_PLUGINS.'mt_manage_adress/classes/class.age_verification.php'; $ageVerification = new age_verification(); $age = $ageVerification->_checkAge($data['customers_dob']); if ($age == true) { $data['customers_dob'] = $data['customers_dob']; } else { $this->error = true; $info->_addInfo('Deine Fehlermeldung'); }[/PHP] Um eine Fehlermeldung zu generieren nutzt du wieder die $info. Daher setzen wir sie wieder global. Der Code in deiner "else" war ungültiger PHP-Code und hätte zu einem Fehler geführt. Die Validierung in dener Klasse könnte funktionieren, bin mir aber nicht sicher. Zum ausführlichen testen fehlt mir gerade ein wenig die Zeit aber nächste Woche komme ich sicherlich dazu dir mal eine Variante zu schicken, wie ich es machen würde. LG Link to comment Share on other sites More sharing options...
ToppFeuerwerk Posted March 8, 2013 Report Share Posted March 8, 2013 Funzt auch nicht.... Ist auch nicht so wichtig, nur Nice To Have. Ich versuche nochmal etwas ansonsten darfst Du nächste Woche mal wieder ran. Wünsche ein angenehmes WE! Gruß Link to comment Share on other sites More sharing options...
ToppFeuerwerk Posted March 12, 2013 Report Share Posted March 12, 2013 Hi zusammen, ich habe jetzt das anpassen der Groß,- und Kleinschreibung und die Prüfung des Mindestalter in einem PlugIn zusammen gefasst. Wer Interesse hat... Install XLM: <?xml version="1.0" encoding="utf8"?> <xtcommerceplugin> <title>Manage Adress, Age Verification</title> <version>1.0.1</version> <code>XXXX</code> <url>XXXX</url> <description>Manage customer data</description> <type>extension</type> <icon /> <db_install /> <db_uninstall /> <plugin_code> <code> <hook>class.customer.php:_buildCustomerAddressData_top</hook> <phpcode><![CDATA[require_once _SRV_WEBROOT._SRV_WEB_PLUGINS.'XXXX/hooks/manage_adress_character.php';]]></phpcode> <order>1</order> <active>1</active> </code> <code> <hook>class.customer.php:_CustomerAddressData_check</hook> <phpcode><![CDATA[require_once _SRV_WEBROOT._SRV_WEB_PLUGINS.'XXXX/hooks/age_verification.php';]]></phpcode> <order>1</order> <active>1</active> </code> </plugin_code> <configuration> <config> <key>MT_REQUIRED_AGE</key> <type>textfield</type> <value>18</value> <de> <title>Mindestalter</title> </de> <en> <title>Minimum age</title> </en> </config> </configuration> <language_content> <phrase> <key>ERROR_AGE_MSG</key> <class>store</class> <de> <value><b>Sie müssen mindestens 18 Jahre alt sein</b></value> </de> <en> <value><b>You must be 18 years old</b></value> </en> </phrase> </language_content> </xtcommerceplugin> [/PHP]Hock Adresse etc. Groß/Klein: [PHP] <?php require_once _SRV_WEBROOT._SRV_WEB_PLUGINS.'XXXX/classes/class.manage_adress_character.php'; $manage_adress = new manage_adress_character(); $data['customers_company'] = $manage_adress->_checkCharacter($data['customers_company']); $data['customers_company_2'] = $manage_adress->_checkCharacter($data['customers_company_2']); $data['customers_company_3'] = $manage_adress->_checkCharacter($data['customers_company_3']); $data['customers_firstname'] = $manage_adress->_checkCharacter($data['customers_firstname']); $data['customers_lastname'] = $manage_adress->_checkCharacter($data['customers_lastname']); $data['customers_street_address'] = $manage_adress->_checkCharacter($data['customers_street_address']); $data['customers_suburb'] = $manage_adress->_checkCharacter($data['customers_suburb']); $data['customers_city'] = $manage_adress->_checkCharacter($data['customers_city']); $data['customers_state'] = $manage_adress->_checkCharacter($data['customers_state']); ?> [/PHP]Hock Mindestalter: [PHP] <?php global $info; require_once _SRV_WEBROOT._SRV_WEB_PLUGINS.'XXXX/classes/class.age_verification.php'; $verification = new age_verification(); $age = $verification->_checkAge($data['customers_dob']); if ($age == 'NO') { $this->error = true; $info->_addInfo(ERROR_AGE_MSG); } ?> [/PHP]Class Adresse etc. Groß/Klein: [PHP] <?php class manage_adress_character { public function _checkCharacter($check) { $pos = strpos($check, '-'); if ($pos !== false) { $stuff = strtolower($check); $array = explode('-', $stuff); foreach($array as &$value) { $value = ucfirst($value); } $stuff = implode('-', $array); } else { $stuff = ucwords(strtolower($check)); } return $stuff; } } ?> [/PHP]Class Mindestalter: [i](Berücksichtigt auch unterschiedlich Formate, dd.mm.yyyy oder yyyy-mm-dd, so wie man das auch im Shop einstellen kann.)[/i] [PHP] <?php class age_verification { public function _checkAge($check) { if(MT_REQUIRED_AGE !== '') { $required_age = MT_REQUIRED_AGE; } else { $required_age = '18'; } $min_age = strtotime('-'.$required_age." years"); if ($min_age !== false || $min_age !== '-1') { if ($check !== '') { $age = 'NO'; /* by default the required age ist not OK */ $delim = true; if(stristr($check, '-') !== false) { $str_marker = '-'; } elseif (stristr($check, '.') !== false) { $str_marker = '.'; } elseif (stristr($check, '/') !== false) { $str_marker = '/'; } elseif (stristr($check, ' ') !== false) { $str_marker = ' '; } else { $delim = false; } if ($delim) { $array = explode($str_marker, $check); if (strlen($array[1]) == '4') { $dob = mktime(0, 0, 0, $array[2], $array[0], $array[1]); } else { $dob = mktime(0, 0, 0, $array[1], $array[0], $array[2]); } if($min_age >= $dob) { $age = 'YES'; } else { $age = 'NO'; } } return $age; } } } } ?> [/PHP] Link to comment Share on other sites More sharing options...
jwinkel Posted March 12, 2013 Report Share Posted March 12, 2013 Bin zu doof - nach Installation des Plugins kommt nach der Seite mit den Adressdaten eine weiße Seite... Ach ja: Ich nutze das Alter nicht, hab' den Wert auf -1 gestellt? Link to comment Share on other sites More sharing options...
ToppFeuerwerk Posted March 12, 2013 Report Share Posted March 12, 2013 Hi, das geht nicht. "-1" ist auch eine Wert. Der führt zur weissen Seite. Trag mal "90" ein... Ersetzte den Block: if(MT_REQUIRED_AGE !== '') { $required_age = MT_REQUIRED_AGE; } else { $required_age = '18'; } [/PHP] Mit diesem.... Dann ist der Wert "0", sozusagen das Überspringen... [PHP] if (MT_REQUIRED_AGE == '0') { $age = 'YES'; return $age; } elseif (MT_REQUIRED_AGE > '0') { $required_age = MT_REQUIRED_AGE; } else { $required_age = '18'; } [/PHP] Link to comment Share on other sites More sharing options...
jwinkel Posted March 12, 2013 Report Share Posted March 12, 2013 Liegt scheinbar nicht an der Altersverifikation. Ich habe die mal mit $age = 'YES'; return $age;[/PHP] in der class komplett abgeklemmt, gibt trotzdem eine weiße Seite. Ausserdem ist mir aufgefallen, dass der Installer eine Fehlermeldung ausgibt: [code]Warning: stripslashes() expects parameter 1 to be string, array given in /www.meinshop.de/xtFramework/classes/class.filter.php on line 0 Warning: stripslashes() expects parameter 1 to be string, array given in /www.meinshop.de/xtFramework/classes/class.filter.php on line 0[/code] Link to comment Share on other sites More sharing options...
ToppFeuerwerk Posted March 12, 2013 Report Share Posted March 12, 2013 Hi, bei mir und nem anderen Shop funzt das... Hast Du in den scripten auch das "XXXX\" gegen etwas sinnvolles getauscht?? Verzeichniss Strucktur... Das mit der Fehlermeldung liegt an den "<b>.....</b>" in der ERROR_AGE_MSG. Habe die Zeichen rausgenommen. Ich hatte dies nachträglich in die Sprachvariable geschrieben. Wenn ich die im Shop Backend nachtrage, klappt es. Ich hab das mal als ganzes angehangen...mt_manage_data.zip Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.