Ein existierender Kunde kann sich im Shop nicht anmelden, die Kundendaten werden nach der Anmeldung unter "angemeldet als" nicht angezeigt, oder der Warenkorb ist plötzlich leer

Geändert am Wed, 01 May 2019 um 08:42 AM

Vorbemerkung:  Ab der neuen Version 3.0.0 wird dieses Problem gelöst sein.  Wir empfehlen bei älteren Versionen nach Möglichkeit ein Update, sobald dieses verfügbar ist.


Für alle Versionen vor Version 3.0.0:

Einige Webserver bedürfen auf Grund ihrer Session Konfiguration einer kleinen Anpassung im Code.  Betroffen ist die Datei modules/shop/index.class.php, ca. ab Zeile 88:

    function shopUseSession()
    {
        if (!empty($_COOKIE['PHPSESSID'])) {
            return true;
        } elseif (!empty($_REQUEST['currency'])) {
            return true;
        } else {
            $command = '';
            if (!empty($_GET['cmd'])) {
                $command = $_GET['cmd'];
            } elseif (!empty($_GET['act'])) {
                $command = $_GET['act'];
            }
            if (in_array($command, array('', 'discounts', 'details', 'terms', 'cart'))) {
                if (   $command == 'details'
                    && isset($_REQUEST['referer'])
                    && $_REQUEST['referer'] == 'cart'
                ) {
                    return true;
                } elseif (   $command == 'cart'
                          && (   isset($_REQUEST['productId'])
                              || (   isset($_GET['remoteJs'])
                                  && $_GET['remoteJs'] == 'addProduct'
                                  && !empty($_GET['product'])))) {
                    return true;
                }
                return false;
            } else {
                return true;
            }
        }
    }


Ersetzen Sie diese Methode einfach durch

    function shopUseSession()
    {
        return true;
    }


Dies erzwingt, dass die Session auf jeder Shop Seite und in jedem Fall initialisiert wird.



Falls danach bei der Anmeldung bestehender Kunden weiterhin Probleme auftreten, überprüfen Sie in derselben Datei (modules/shop/index.class.php), ca. Zeile 2923, in der Methode login():

    if (!empty($_REQUEST['username']) && !empty($_REQUEST['password'])) {
        // check authentification
        $_SESSION['shop']['username'] = htmlspecialchars(
            addslashes(strip_tags($_REQUEST['username'])),
            ENT_QUOTES, CONTREXX_CHARSET);
        $_SESSION['shop']['password'] =
            addslashes(strip_tags($_REQUEST['password']));


Falls in diesem Abschnitt das Array $_REQUEST verwendet wird, ersetzen Sie ihn durch

    if (!empty($_POST['username']) && !empty($_POST['password'])) {
        // check authentification
        $_SESSION['shop']['username'] = htmlspecialchars(
            addslashes(strip_tags($_POST['username'])),
            ENT_QUOTES, CONTREXX_CHARSET);
        $_SESSION['shop']['password'] =
            addslashes(strip_tags($_POST['password']));


War dieser Artikel hilfreich?

Das ist großartig!

Vielen Dank für das Feedback

Leider konnten wir nicht helfen

Vielen Dank für das Feedback

Wie können wir diesen Artikel verbessern?

Wählen Sie wenigstens einen der Gründe aus

Feedback gesendet

Wir wissen Ihre Bemühungen zu schätzen und werden versuchen, den Artikel zu korrigieren