Registrierungslink funktioniert nicht über "Registrieren und zur Kasse begeben"

  • Hallo zusammen,


    in meinem Shop VM 3.0.16 gibt es Probleme mit dem Registrierungslink.


    Es gibt ja mehrere Wege, wie sich ein Kunde registrieren kann, aus diesem Grund sollten ja auch alle Wege getestet werden. Wenn sich nun ein Kunde so registriert, dass er erst Artikel in seinen Warenkorb legt, AGBs akzeptiert, zur Kasse geht, danach seine Daten eingibt und dann auf "Registrieren und zur Kasse begeben" aklickt, und zahlungspflichtig bestellt, ist der Kunde automatisch eingeloggt, ohne der Aktivierungslink zu bestätigen. Wenn er dann in eingeloggtem Zustand den Link anklickt, kommt keine Meldung und der Kunde wird nicht freigeschlaten. Wenn sich der Kunde nach diesem Bestellvorgang ausloggt, dann kommt beim bestätigen des Aktivierungslinks "Registrierung fehlgeschlagen: Der Bestätigungscode konnte nicht gefunden werden!".
    Dieses Problem entsteht aber nicht, wenn sich ein Kunde ganz normal als erstes über "Registrieren" registriert, dann geht alles.


    Wer kann mir bitte sagen, an was das liegt, und wie ich es evtl. hinbekomme, dass der User nach dem allerersten Bestellvorgang mit der gleichzeitigen Registrierung ausgeloggt wird?


    Ich hoffe auf schnelle Hilfe. Vielen Dank schon mal.


    ;)

  • So, ich habe das Problem mittlerweile behoben. Der Fehler besteht aber schon seit VM2.?? Damals wurde der Fehler wie folgt behoben:


    Das Problem lässt sich in der Datei

    "mein Verzeichnis"/components/com_users/models/registration.php

    lösen.

    Dort ergibt sich aus

    $db->setQuery(
    'SELECT '.$db->quoteName('id').' FROM '.$db->quoteName('# users') .
    * WHERE '.$db->quoteName('activation').' = '.$db->Quote($token) .
    ' AND '.$db->quoteName('block').' = 1' .
    ' AND '.$db->quoteName('lastvisitDate').' = '.$db->Quote($db->getNullDate())
    );

    der Query

    SELECT 'id' FROM 'MEINDBPREFIX_users' WHERE 'activation' = ' xxxx ' AND
    ^block' = 1 AND 'lastvisitDate' = '0000-00-00 00:00:00'
    Der 'activation'-Key ist in der DB vorhanden.
    Nur 'lastvisitDate' ist nicht "0000-00-00 00:00:00' sondern enthält ein
    aktuelles Datum.

    Das ist das Problem.

    Verkürzt man also die Abfrage auf

    $db->setQuery(
    'SELECT '.$db->quoteName('id').' FROM '.$db->quoteName('# users') .
    ' WHERE '.$db->quoteName('activation').' = '.$db->Quote($token) .
    ' AND '.$db->quoteName('block').' = 1"
    );

    funktioniert es prächtig. Mir scheint die Verkürzung der Abfrage nicht sicherheitsrelevant. Man könnte noch erforschen warum 'lastvisitDate' nicht '0000-00-00 00:00:00' ist.


    Bei meine aktuellen VM Version 3.0.16 habe ich in der oben angegebenen Datei (in Zeile 46) auch die 'lastvisitdate' Abfrage gelöscht und schon gehts.


    Sollte man evtl. nachbessern...

  • Das Problem besteht immernoch...


    Wenn Joomla das so nicht akzeptiert, dann dürfte halt der VirtueMart den user nicht einloggen, ohne bestätigung durch das E-Mail.
    Das ist doch der Grund warum Joomla das so prüft.


    Einfach zu sagen, wir verwenden Joomla Code deshalb geht es nicht ist doch keine Lösung...


    Und unsere Joomla Installation zu hacken ist für mich keine Option... Das ist die schlechteste aller Lösungen.

  • Welches Problem besteht, dass VirtueMart den Benutzer einkaufen lässt, ohne dass er eine bestätigte E-Mail-Adresse hat?


    Ich kenne keinen einzigen Shop, der diese Funktion verwendet; das wird direkt am Anfang ausgeschaltet, und dann hat niemand mehr ein Problem, der Verkäufer nicht, und der Kunde auch nicht.


    Grüße
    Stefan

  • Das ist ein Joomla-Ding.


    Joomla Menü -> Benutzer -> Verwalten aufrufen.


    Oben rechts auf Optionen gehen.


    Benutzerregistrierung: Ja
    Passwort mitsenden: Nein
    Kontoaktivierung durch : Keine
    Einstellungen im Frontend: Verbergen


    Speichern und dann passt es.


    Grüße
    Stefan

  • Achsoo, ich dachte man kann es einstellen, dass einen der VM nicht direkt einloggt. Ist doch eigentlich der normalfall, dass man seine E-Mail Adresse erst bestätigen muss. Unter Anderem auch z.B. hier im Forum :'D :'D.
    Nun gut.
    Dann werden wir es vermutlich auch so machen müssen.
    Danke für die Antworten, LG.
    Cem