Beiträge von Mario_b

    die meisten shopbetreiber dürften garnicht wissen dass die berechnung falsch ist, man rechnet ja nicht jedesmal nach wenn man nicht weiß das was schiefläuft und auf den ersten Blick fällt es auch nicht so auf, ansonsten kann man sich auch Hilfe bei Programmierern suchen (wir kriegen immerwieder mal `ne Anfrage mit der Bitte dies oder das zu korrigieren, meist gehts dabei aber um verwendete OT_total-Fremdmodule)

    ne wird wahrscheinlich so eher nicht klappen, habs grad mal ausprobiert bei uns, du kannst zwar `nen Rabatt setzen und bis Summe Netto klappt es auch, danach läuft aber was schief mit der mwst, d.h. der rabatt wird nicht korrekt verrechnet:

    Artikel-Zwischensumme: 30,49 EUR (netto)
    Testrabatt -10,00 EUR (netto=
    Pauschale Versandkosten (Bester Weg): 5,00 EUR (netto)
    Summe, netto: 25,49 EUR (bis hierhin korrekt)
    MwSt. 19% 6,74 EUR (falsch, korrekt wären 4.84)
    Summe, brutto: 32,23 EUR (falsch, korrekt wären, 30,33)

    Hi,

    eigentlich ist dafür die Bestellbearbeitung im Backend gedacht, dort kannst du die Preise einer bestehenden Bestellung ändern oder auch manuell abzüge/aufschläge setzen (dort wo man die versandkosten bzw alles der Zusammenfassung editiert). Wie gesagt eigentlich, leider gibt es dort noch Berechnungsfehler zuhauf bei Neuberechnung. Du kannst es mal probieren, ein Teil wurde gefixt bereits meine ich, ggf. hast du Glück wenn du keinerlei Vorkasserabatte, Zahlartenaufschläge oder Gutscheine verwendest.

    Beste Grüße

    Mario

    bei dem Testshop ist der Merkzettel wieder nicht richtig, wenn du `n produkt mit attributen in den Merkzettel legst und dort dann "bestellen" auswählst, landet das Produkt ohne attribut im Warenkorb. Beim Button "alles bestellen" tritt dieser Fehler aber nicht auf.

    Beste Grüße

    Mario

    es gab mal einen ähnlichen Bug in Kombination mit Gutscheincodes, wenn einer eingegeben wurde, der bereits verwendet war, kam der user anstatt zur kasse nur auf eine weiße seite - verwendest du Gutscheine?

    Also ersteinmal , du bist im falschen Forum gelandet, deine XT COMMERCE 3.0.4 wird hier eigentlich nicht behandelt.

    zu deiner Frage : nein, du solltest nicht einfach dein Shopbackup wieder hochladen sondern zunächst auch die Datenbank überprüfen, je nachdem wie dein Angreifer vorgegangen ist, kann es z.B. sein das er dir versteckte Adminaccounts untergejubelt hat (die tauchen dann nicht in der Übersicht auch), ausserdem solltest du natürlich auch alle Passwörter ändern, also auch alle Adminpasswörter im Shop selbst und zunächst auch deinen Rechner mal scannen.

    deine Shopversion ist auch sehr sehr alt, wenn du die nicht regelmäßig gepatched hast, wird es da eine ganze Menge Lücken geben, je nach Know-How auf deiner Seite, würde ich dir raten die Version zu aktualisieren bzw das machen zu lassen, auf http://www.xtc-load.de/ findest du z.B. die Servicepacks und auch aktuelle Sicherheitspatches für xt-Shops, lies mal insbesondere diesen hier, http://www.xtc-load.de/2012/06/wichti…alle-xtc-forks/ der ist grad aktuell und ich habe schon ein paar Angriffe darüber mitbekommen, soll heissen die Lücke wird grad von so einigen ausgenutzt.

    Mit besten Grüßen aus Hamburg

    Mario

    Hey,

    ich selbst habe mir die V2.2 bisher nur auf euren Demoseiten angesehen da ich auch auf die Upgrade-Variante warte, allerdings sind mir ein paar Punkte ins Auge gesprungen, die mich erstmal davon abhalten würden die neue Version bei einem Kunden einzusetzen bis nachgebessert wurde:

    IE8 : scriptfehler auf Produktdetailseiten
    Übermittlung des eingegebenen Passworts in der Mail als Klartext - hier beschweren sich ständig Kunden, ist schnell gemacht, wär aber schön wenn das von Haus aus ginge,m und sei es als Einstellung, dann ist es meinen Kundne selbst überlassen.

    Checkout-Seite : Falsche, oder zumindest nicht nachvollziehbare Berechnung des Billsafe-Aufschlags:

    auf v22plus.de , 2x den Hutsständer (gemein: 7% MwSt.-Artikel) in den WK gelegt:

    Zwischensumme: 119,98 EUR
    Deutsche Post (Versand nach DE: (1 x 4 kg)): 6,70 EUR
    2% Zuschlag für die Zahlung mit BillSAFE: 3,01 EUR
    Summe netto: 120,40 EUR
    zzgl. MwSt. 7%: 7,85 EUR
    zzgl. MwSt. 19%: 1,44 EUR
    Gesamtsumme: 129,69 EUR

    Wie kommt diese Zuschlagssumme zustande, weder mit 2% von brutto, netto inkl. oder exklusive Versand komme ich dahin, auch komme ich nicht so recht dahinter, woher jetzt der 19% Anteil kommt, wähle ich Vorkasse, habe ich nur eine Position zu 7% welche allerdings keinen Anteil der Versandkosten enthält.

    Weiterhin ist es möglich, die Versandkosten zu killen, voraussetzung ist entweder a) mehr als eine Zahlungsart zur Auswahl oder b) Billsafe zur Auswahl , das kann ich nicht testen da ich keinen Adminzugang habe. Es ist zwar kein Checkout ohne möglich, aber es ist für weniger versierte Kunden zumindest schwierig noch einen Checkout hinzukriegen; leider kann ich das Vorgehen hierzu gerade nicht genau wiedergeben da die v22plus.de gerade einen 500er zurückliefert, es war aber machbar, indem ich zunächst eine Zahlart auswähle, dann nochmal auf den Versandkostenbereich klicke (die Sanduhr läuft dann dauerhaft) und danach nochmal die Zahlart änder oder so ähnlich, einfach ein bischen rumklicken dann bekommt man das nachgestellt - es verschwindet dann dann der Punkt Versandkosten unten und ein checkout ist nichtmehr möglich...

    Insbesondere dieser Rabatte/MwSt/Zahlartenauschläge/Brutto-Netto/Gutschein/Treuepunkte- Berechnungsbereich ist immens wichtig für Kunden und läuft in KEINER Version auch nur annährend rund (ja, auch nicht in der zugrundeliegenden xtc), richtig schlimm wird es, wenn zu den Endkunden auch noch Händler oder EU-Kunden hinzukommen- ich habe keinen Kunden, wo wir nicht deswegen Rückfragen und Beschwerden hatten oder von vornherein noch Anpassungen durchgeführt haben, ich kann es nicht testen, würde aber fast wetten, dass es immernoch nicht möglich ist, im Backend eine Bestellung zu bearbeiten oder neu anzulegen und am Ende noch die richtigen Werte auf der Rechnung zu haben... ich habe den Eindruck, dass nicht unter "Livebedingungen" getestet wird, sondern in einer Art "klinischem Reinraum" wo das Setup zu einfach ist (1 Artikel, 19% MwSt., Bestellung muss niewieder angefasst werden und die Klickreihenfolge ist immer dieselbe) - so läufts aber nicht wenn der Shop beim Kunden im Einsatz ist, dort rufen Kunden mal an und wollen ihre Bestellung ergänzen, haben vergessen ihren Gutschein einzugeben, bekommen einen Sonderpreis vom Händler, müssen die Rechnung aus wer-weiß-was für Gründen nochmal neu generiert haben oder oder oder.

    Ich würde mir wirklich wünschen, dass in einem der kommenden Fixpacks mal riczhtig auf diese Thematik eingegangen wird, um es mal salopp zu sagen - ich brauche keine Merkzettel-Drucken Funktion, Smarty 3 oder verbesserte performance im Adminbereich, solange eine zugrundeliegende Funktionalität wie eben die Preisberechnung nicht gegeben ist! Ich weiß, dass das Thema wenig sexy ist, aber eine wirklich stabile Preisberechnung würde euren Shop deutlich stärker von der Konkurrenz abheben als ein weiteres Template...

    Mit besten Grüßen aus Hamburg

    Mario

    hhm .. damit geht noch viel mehr würd ich sagen! ;)

    hier unsere angepasste inc/xtc_update_whos_online.inc.php

    <?php
    /* -----------------------------------------------------------------------------------------
    $Id: xtc_update_whos_online.inc.php,v 1.1 2010/09/08 10:55:03 akausch Exp $

    XT-Commerce - community made shopping
    http://www.xt-commerce.com

    Copyright (c) 2003 XT-Commerce
    -----------------------------------------------------------------------------------------
    based on:
    (c) 2000-2001 The Exchange Project (earlier name of osCommerce)
    (c) 2002-2003 osCommerce(whos_online.php,v 1.8 2003/02/21); http://www.oscommerce.com
    (c) 2003 nextcommerce (xtc_update_whos_online.inc.php,v 1.4 2003/08/13); http://www.nextcommerce.org

    Released under the GNU General Public License
    ---------------------------------------------------------------------------------------*/

    function xtc_update_whos_online() {


    if (isset($_SESSION['customer_id'])) {
    $wo_customer_id = intval($_SESSION['customer_id']);

    $customer_query = xtc_db_query("select customers_firstname, customers_lastname from " . TABLE_CUSTOMERS . " where customers_id = '" . intval($_SESSION['customer_id']) . "'");
    $customer = xtc_db_fetch_array($customer_query);

    $wo_full_name = addslashes($customer['customers_firstname'] . ' ' . $customer['customers_lastname']);

    } else {

    $wo_customer_id = '';
    $wo_full_name = 'Gast';

    }

    $wo_session_id = xtc_session_id();
    $wo_ip_address = getenv('REMOTE_ADDR');

    if($aktuelle_datei)
    $wo_last_page_url = $aktuelle_datei;
    else
    $wo_last_page_url = addslashes(getenv('REQUEST_URI'));

    $wo_referer = $_SERVER['HTTP_REFERER'];
    $useragent_referer = $_SERVER['HTTP_USER_AGENT'];
    $current_time = time();

    //stspi
    update_admin_stat();

    /*
    $xx_mins_ago = ($current_time - 900);

    // remove entries that have expired
    xtc_db_query("delete from " . TABLE_WHOS_ONLINE . " where time_last_click < '" . $xx_mins_ago . "'");
    */
    //END stspi

    $stored_customer_query = xtc_db_query("select count(*) as count from " . TABLE_WHOS_ONLINE . " where session_id = '" . $wo_session_id . "'");
    $stored_customer = xtc_db_fetch_array($stored_customer_query);

    // @t10: use shop default to prevent injection
    $wo_full_name = xtc_db_prepare_input($wo_full_name);
    $wo_ip_address = xtc_db_prepare_input($wo_ip_address);
    $wo_last_page_url = xtc_db_prepare_input($wo_last_page_url);
    $wo_referer = xtc_db_prepare_input($wo_referer);
    $useragent_referer = xtc_db_prepare_input($useragent_referer);


    if ($stored_customer['count'] > 0) {
    xtc_db_query("update " . TABLE_WHOS_ONLINE . " set
    customer_id = '" . $wo_customer_id . "',
    full_name = '" . $wo_full_name . "',
    ip_address = '" . $wo_ip_address . "',
    time_last_click = '" . $current_time . "',
    last_page_url = '" . $wo_last_page_url . "',
    http_referer = '". $wo_referer . "' ,
    user_agent = '". $useragent_referer . "'
    where session_id = '" . $wo_session_id . "'");

    } else {

    xtc_db_query("insert into " . TABLE_WHOS_ONLINE . " (customer_id, full_name, session_id, ip_address, time_entry, time_last_click, last_page_url, http_referer, user_agent)
    values ('" . $wo_customer_id . "', '" . $wo_full_name . "', '" . $wo_session_id . "', '" . $wo_ip_address . "', '" . $current_time . "', '" . $current_time . "',
    '" . $wo_last_page_url . "', '" . $wo_referer . "', '" . $useragent_referer . "')");

    }

    }


    //stspi
    function update_admin_stat(){


    $year = date('Y', time());
    $month = date('m', time());
    $day = date('d', time());

    //-> check for first day of month

    //-> check if day == 2 allready exists
    $last_day_query = xtc_db_query ("select max(day) as last_day from " .
    TABLE_ADMIN_STAT_MONTH
    );
    $last_day_info = xtc_db_fetch_array($last_day_query);
    if ((int)$last_day_info['last_day'] > $day) {
    //-> and delete it all, last month
    xtc_db_query("delete from " . TABLE_ADMIN_STAT_MONTH . " WHERE day > " . $day);
    } //-> if ($first_day_info['day2'] > 0) {


    $current_time = time();
    $xx_mins_ago = ($current_time - 900);
    // select entries that have expired
    $expired_quey = xtc_db_query("select
    customer_id,
    http_referer,
    session_id from " .
    TABLE_WHOS_ONLINE . "
    where time_last_click < '" . $xx_mins_ago . "'");
    while ($expired_info = xtc_db_fetch_array($expired_quey)){
    //-> the year *****************************************************************
    $check_year_query = xtc_db_query("select
    whos_online_id, count from " .
    TABLE_ADMIN_STAT_YEAR . "
    where year = " . (int)$year . "
    and month = " . (int)$month . "
    and referer_url = '" .
    $expired_info['http_referer'] . "'");

    $check_year_info = xtc_db_fetch_array($check_year_query);

    if (xtc_db_num_rows($check_year_query) > 0){
    //-> this referer allready exists in this year
    xtc_db_query("update " . TABLE_ADMIN_STAT_YEAR . "
    set count = " .
    ((int)$check_year_info['count'] + 1) . "
    where whos_online_id = " .
    (int)$check_year_info['whos_online_id']
    );
    }else{ //-> if (xtc_db_num_rows($check_year_query) < 1){
    //-> check if we have a new year
    $new_year_query = xtc_db_query( "select
    year from " . TABLE_ADMIN_STAT_YEAR . "
    where year = " . (int)$year
    );
    if ( xtc_db_num_rows($new_year_query) < 1) {
    //-> first entry in a new year
    xtc_db_query("delete from " . TABLE_ADMIN_STAT_MONTH);
    }
    //-> new referer or new year
    xtc_db_query("insert into " . TABLE_ADMIN_STAT_YEAR . "
    (year, month, referer_url, count) VALUES (" .
    (int)$year . ", " .
    (int)$month . ", '" .
    $expired_info['http_referer'] . "', " .
    1 . ")"
    );

    }//-> else if (xtc_db_num_rows($check_year_query) < 1){
    //-> the month **************************************************************
    $check_month_query = xtc_db_query("select
    whos_online_id, count from " .
    TABLE_ADMIN_STAT_MONTH . "
    where day = " . (int)$day . "
    and referer_url = '" . $expired_info['http_referer'] . "'");

    $check_month_info = xtc_db_fetch_array($check_month_query);

    if (xtc_db_num_rows($check_month_query) > 0){
    //-> referer allready exists this month
    xtc_db_query("update " . TABLE_ADMIN_STAT_MONTH . "
    set count = " .
    ((int)$check_month_info['count'] + 1) . "
    where whos_online_id = " .
    (int)$check_month_info['whos_online_id']
    );
    }else{ //- if (sizeof($check_month_info) > 0){
    //-> new referer this month
    xtc_db_query("insert into " . TABLE_ADMIN_STAT_MONTH . "
    (day, referer_url, count) VALUES (" .
    (int)$day . ", '" .
    $expired_info['http_referer'] . "', " .
    1 . ")"
    );
    } //- else if (sizeof($check_month_info) > 0){
    //-> delete the row **********************************************************
    xtc_db_query("delete from " .
    TABLE_WHOS_ONLINE . "
    where session_id = '" .
    $expired_info ['session_id'] . "'"
    );
    } //-> while
    }//-> function update_admin_stat(){

    ?>

    Bitte testen und Feedback geben, wir gucken uns das nochmal in Ruhe an , sieht aber auf den ersten Blick so aus, als wär das nochmal ne nette Lücke die am besten alle mal zumachen...

    Ließe sich ggf. mit dem Versandkostenaufschlag auf Artikelebene lösen bei entsprechender Textanpassung, ansonsten würd ich mal gucken was es noch so gibt an modulen, die meisten sind mit com:seo kompatibel (solange du auf nachträgliche Bestellbearbeitung im Backend verzichtest, dabei kommen dann ohne Anpassungen regelmäßig falsche Rechnungen heraus).

    Hey Coasthouse,

    mit der Lücke ist es z.B. möglich, per sql injection einen Adminaccount einzuschleusen, dieser loggt sich dann ein, und lädt z.B. über den contentmanager eine PHP datei hoch wie einen filebrowser, damit guckt er sich die configure-dateien und hat dann Vollzugriff, Datenbankexport und weg sind die daten - ob das der genaue weg ist, wie es vonstatten ging kann ich nicht sagen, wär aber wohl das einfachste.

    Die Mail kann ich dir nicht weiterleiten da ich den betroffenen Kunden nicht nennen will und auch noch nicht zu 100% sicher bin, dass das Datenleck im Shop zu suchen ist, aber die Umstände sprechen dafür. Die erhaltene Mail, wurde nicht über den Shop versendet, es wurden "nur" die Daten verwendet, eine Landingpage im Kundendesign erstellt usw, Rechtschreibung ist auch fast perfekt, d.h. nicht der übliche China-Krams sondern ziemlich gut gemacht, also sehr gezielt das ganze.

    Mal aus aktuellem Anlass und dem Thema Sicherheitslücke application_top : einen meiner Kunden scheints erwischt zu haben; zum Glück betreue ich den nur im Bereich Marketing und habe mit dem Shop ansich nichts zu tun, hatte zwar auf die Sicherheitslücke hingewiesen, ob deren Programmierer rechtzeitig reagiert haben kann ich aber nicht sagen... habe aber soeben mit allen meinen im Shop registrierten Adressen eine gut gemachte, personalisierte Phishingmail bekommen, die Vermutung liegt nahe, dass es den anderen 150k Kunden ähnlich geht - wer also bisher seinen Shop nicht gefixt hat sollte dies schleunigst nachholen!

    Hey,

    bischen verspätet aber trotzdem danke für die Blumen!

    Denillo : du meinst das Yourfone-CI ansich oder? da bin ich mir nicht ganz sicher, meine aber gelesen zu haben dass die verantwortliche Designagentur Beebop Media AG war, anhand des CI haben wir dann relativ frei die Umsetzung als Shop gemacht.

    Hi Alex,

    "meine Modifikation" kann ich dir in diesem Fall leider so nicht weiterreichen, der cachelöschen-cronjob ist nur ein kleiner Teil einer größeren "Automatisierungs-Anpassung" die wir da durchgeführt haben, es werden Lagerbestände, Einkaufspreise etc importiert, Bestellungen exportiert, Trackingnummern importiert und versendet, die PDF-Rechnungen automatisch generiert und verschickt, exporte an Preisvergleichsdienste erstellt, Trustedshop / Produktbewertungen angefordert usw usw, für die Entwicklung hat der Kunde bezahlt da kann ich das jetzt schlecht verschenken, somit müsste ich diesen Teil auch erst wieder aus dem Rest ausbauen, war daher mehr als Denkanstoss gedacht - wobei es eigentlich zum cache-löschen schon reichen sollte, wenn du dir die admin/delete_cache ansiehst, diese einmal kopierst (delete_cache_cron.php) dort die application_top_export anstelle der application_top includest und diese dann per cronjob aufrufst - ungetestet aber ich glaube das reicht.

    Hey Etchi,

    zum Thema RS hatte ich mal im Abakus-Forum Werbung für unsere diesbezügliche Dienstleistung gemacht, da du ja schriebst "gegen Belohnung" poste ich dir hier mal den Link ;)
    http://www.abakus-internet-marketing.de/foren/viewtopic/t-106788.html

    Wir bauen da also nicht irgendein Modul ein, sondern gucken uns deinen Shop individuell an und nehmen dann die entsprtechenden Änderungen vor am Template die für dich Sinn machen, wenn du z.B. ekomi oder Trustedshops-Shopbewertungen hast, crawlen wir die und lassen Sie für deine Startseite anzeigen usw, falls du viele Produktbewertungen im Shop hast errechnen wir daraus einen Durchschnitt den wir dann nutzen usw usw.