Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Passwortänderung: Länge des alten Passworts wird überprüft

    billybob

    • Fördermitglied
    • Beiträge: 563
    Re: Passwortänderung: Länge des alten Passworts wird überprüft
    Antwort #15 am: 22. Januar 2013, 17:44:54
    Hi,
    also wie gesagt bei mir funktioniert's.

    Welche Version setzt Du ein?
    Link zum ausprobieren?

    Gruß
    billybob

    harrygrey

    • Neu im Forum
    • Beiträge: 23
    • Geschlecht:
    Re: Passwortänderung: Länge des alten Passworts wird überprüft
    Antwort #16 am: 22. Januar 2013, 18:00:23
    Ich setze die 1.06 ein.
    Die 1.05 hat in dem Punkt funktioniert.

    Einen Link kann ich nicht machen, da ich dann Google dauernd drin habe.
    Das Verzeichnis ist gesperrt aus dem Grund.
    Na ich werd' nochmal den self-commerce versuchen.
    Danke.

    phpGuru

    • Frisch an Board
    • Beiträge: 94
    Also mich hat das auch gestört, dass man zu einem späteren Zeitpunkt (Shop ist schon mehrere Jahre in Betrieb und stand im Vorfeld auf 5 Stellen für das Passwort) dies nun nicht mehr in den Minimal Werten (Admin Bereich) ändern kann, da immer die JS Abfrage nach der Länge des derzeitigen Passwortes anspringt. So kann der Kunde sein derzeitigen Passwort nicht ändern. Ich treib das mal voran, den ich sehe dies als Funktionsfehler an.

    Die Funktion habe ich nun geändert wie folgt:

    Zunächst erfolgt in der login.php erst einmal eine Abfrage wie viele Stellen der Kunde in das Passwort Feld eintippt. Stimmt das Passwort und es erfolgt ein Zugang, dann wird er umgeleitet auf die account_password.php mit dem Hinweis er möge sein Passwort auf mindestens 8 Stellen ändern.

    Hierzu die erfolderlichen Schritte:

    1. login.php

    Code: PHP  [Auswählen]
          if ($_SESSION['cart']->count_contents() > 0  && !isset($_GET['review_prod_id'])  && !isset($_GET['order_id'])) {
            xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART),'NONSSL');
          } elseif (isset($_GET['review_prod_id'])) {
            xtc_redirect(xtc_href_link(FILENAME_PRODUCT_REVIEWS_WRITE, xtc_product_link((int)$_GET['review_prod_id'],''), 'NONSSL'));
          } elseif (isset($_GET['order_id'])) {
            xtc_redirect(xtc_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' .(int)$_GET['order_id'], 'NONSSL'));
          } else {
            xtc_redirect(xtc_href_link(FILENAME_DEFAULT),'NONSSL');
          }

    in diese ändern (die 5 kann auf jede beliebige Zahl geändert werden, muss aber mit der Zahl der alten Mindesstellenanzahl der Konfiguration übereinstimmen. Bei mir waren es halt 5 Stellen.)

    Code: PHP  [Auswählen]
          if(strlen($password) <= 5){
            xtc_redirect(xtc_href_link(FILENAME_ACCOUNT_PASSWORD, 'pw=5#passchange'),'NONSSL');
          } else {
            if ($_SESSION['cart']->count_contents() > 0  && !isset($_GET['review_prod_id'])  && !isset($_GET['order_id'])){
              xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART),'NONSSL');
            } elseif (isset($_GET['review_prod_id'])){
              xtc_redirect(xtc_href_link(FILENAME_PRODUCT_REVIEWS_WRITE, xtc_product_link((int)$_GET['review_prod_id'],''), 'NONSSL'));
            } elseif (isset($_GET['order_id'])){
              xtc_redirect(xtc_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' .(int)$_GET['order_id'], 'NONSSL'));
            } else {
              xtc_redirect(xtc_href_link(FILENAME_DEFAULT),'NONSSL');
            }
          }

    bei der Weiterleitung seht ihr, dass pw=5#passchange mit übergeben wird. Brauchen wir später.

    Folgende Dateien sind zu ändern:

    -------------------------------------------------

    In der includes\form_check.js.php die Funktion: function check_password_new ändern. Dies kann getrost passieren, da diese Funktion nur bei der Passwort ändern benutzt wird und sonst an keiner Stelle mehr im Shop.

    Zeile:

    Code: PHP  [Auswählen]
    if (password_current == '' || password_current.length < field_size) {

    ändern in:

    Code: PHP  [Auswählen]
    if (password_current == '' {

    damit ist die Java Abfrage nach der Länge des alten Passworts weg.

    -------------------------------------------------

    In der Datei account_password.php

    Abschnitt:

    Code: PHP  [Auswählen]
    if (isset ($_POST['action']) && ($_POST['action'] == 'process')) {
      $password_current      = xtc_db_prepare_input($_POST['password_current']);
      $password_new          = xtc_db_prepare_input($_POST['password_new']);
      $password_confirmation = xtc_db_prepare_input($_POST['password_confirmation']);

      $error = false;
      if (strlen($password_current) < ENTRY_PASSWORD_MIN_LENGTH) {
        $error = true;
        $messageStack->add('account_password', ENTRY_PASSWORD_CURRENT_ERROR);
      } elseif (strlen($password_new) < ENTRY_PASSWORD_MIN_LENGTH) {
        $error = true;
        $messageStack->add('account_password', ENTRY_PASSWORD_NEW_ERROR);
      } elseif ($password_new != $password_confirmation) {
        $error = true;
        $messageStack->add('account_password', ENTRY_PASSWORD_NEW_ERROR_NOT_MATCHING);
      }
      if ($error == false) {
        $check_customer_query = xtc_db_query("select customers_password from ".TABLE_CUSTOMERS." where customers_id = '".(int) $_SESSION['customer_id']."'");
        $check_customer = xtc_db_fetch_array($check_customer_query);

        if (xtc_validate_password($password_current, $check_customer['customers_password'])) {
          xtc_db_query("UPDATE ".TABLE_CUSTOMERS." SET customers_password = '".xtc_encrypt_password($password_new)."', customers_last_modified=now() WHERE customers_id = '".(int) $_SESSION['customer_id']."'");
          xtc_db_query("UPDATE ".TABLE_CUSTOMERS_INFO." SET customers_info_date_account_last_modified = now() WHERE customers_info_id = '".(int) $_SESSION['customer_id']."'");

          $messageStack->add_session('account', SUCCESS_PASSWORD_UPDATED, 'success');

          xtc_redirect(xtc_href_link(FILENAME_ACCOUNT, '', 'SSL'));
        } else {
          $error = true;
          $messageStack->add('account_password', ERROR_CURRENT_PASSWORD_NOT_MATCHING);
        }
      }
    }

    ändern in:

    Code: PHP  [Auswählen]
    // WM geändert: Funktion der alten Passwortlängen Überprüfung entfernt,
    // da der Kunde sonst sein zu kurzes Passowrt nicht auf ein längeres ändern kann
    if (isset ($_POST['action']) && ($_POST['action'] == 'process')) {
      $password_current      = xtc_db_prepare_input($_POST['password_current']);
      $password_new          = xtc_db_prepare_input($_POST['password_new']);
      $password_confirmation = xtc_db_prepare_input($_POST['password_confirmation']);

      $error = false;
      if (strlen($password_new) < ENTRY_PASSWORD_MIN_LENGTH) {
        $error = true;
        $messageStack->add('account_password', ENTRY_PASSWORD_NEW_ERROR);
      }
      elseif ($password_new != $password_confirmation) {
        $error = true;
        $messageStack->add('account_password', ENTRY_PASSWORD_NEW_ERROR_NOT_MATCHING);
      }
      if ($error == false){
        $check_customer_query = xtc_db_query("select customers_password from ".TABLE_CUSTOMERS." where customers_id = '".(int) $_SESSION['customer_id']."'");
        $check_customer       = xtc_db_fetch_array($check_customer_query);

        if (xtc_validate_password($password_current, $check_customer['customers_password'])){
          xtc_db_query("UPDATE " . TABLE_CUSTOMERS . " SET customers_password = '" . xtc_encrypt_password($password_new) . "', customers_last_modified=now() WHERE customers_id = '" .(int)$_SESSION['customer_id'] . "'");
          xtc_db_query("UPDATE " . TABLE_CUSTOMERS_INFO . " SET customers_info_date_account_last_modified = now() WHERE customers_info_id = '" . (int)$_SESSION['customer_id'] . "'");

          $messageStack->add_session('account', SUCCESS_PASSWORD_UPDATED, 'success');
          xtc_redirect(xtc_href_link(FILENAME_ACCOUNT, '', 'SSL'));
        } else {
          $error = true;
          $messageStack->add('account_password', ERROR_CURRENT_PASSWORD_NOT_MATCHING);
        }
      }
    }

    Somit ist hier auch die Abfrage der Mindeslänge auch weg.

    in der Datei: templates\dein template\module\account_password.html
    folgendes einfügen:

    unter:
    Code: XML  [Auswählen]
    {if $error!=''}<div class="errormessage">{$error}</div>{/if}

    dies eintragen:
    Code: XML  [Auswählen]
    {if $PASSWORD_5}<a name="passchange"></a><p class="inputRequirement">Sie m&uuml;ssen Ihr Passwort anpassen, da ihr Passwort nur aus 5 Zeichen besteht!</p>{/if}

    Wie ihr dass formatiert und ausgebt bleibt euch überlassen. Den Anker könnt ihr natürlich weglassen. Wenn ja dann sollte der auch nicht aus der login.php mit übergeben werden.

    Damit sollte das Problem gelöst sein. Ist was für das kommende Release.

    Bevor ihr Änderungen macht - Sicherung anlegen und achtet darauf, dass euer Admin Passwort vor den Änderungen länger oder gleich der neuen Stellenvorgabe ist.

    phpGuru

    • Frisch an Board
    • Beiträge: 94
    Warum kann man hier Einträge nicht editieren?  :-I

    in der account_password.php muss noch vor:

    Code: PHP  [Auswählen]
    $smarty->caching = 0;

    dies hier rein:

    Code: PHP  [Auswählen]
    // WM: Account Passwort nur 5 Stellen, Hinweis ausgeben zur Passwort Änderung
    // Übergabe erfolgt aus login.php
    if($_GET['pw'] == 5) $smarty->assign('PASSWORD_5', 1);
     else $smarty->assign('PASSWORD_5', 0);

    Alle Daten beruhen auf der aktuellen Shop Version

    web0null

    • Experte
    • Beiträge: 1.998
    Einträge editieren, geht nur eine bestimmte Zeit lang.
    Code: PHP  [Auswählen]
    $smarty->assign('PASSWORD_5', ($_GET['pw'] == 5));

    Das würde auch reichen.

    Gruß

    mrheat

    • Frisch an Board
    • Beiträge: 68
    • Geschlecht:
    @phpGuru
    gefällt schon ganz gut, aber mir ist folgendes aufgefallen:

    altes Shop, ursprüngliche Passwortlänge 5. User hatte von sich aus ein z.B. 7-stelliges Passwort verwendet.
    Jetzt Shopumstellung auf min. Passwortlänge 8. User kann sich mit seinem alten Passwort anmelden (wie gesagt nur 7-stellig) und bekommt keinerlei Hinweise od. ähnliches, sprich kann ganz normal bestellen.

    Gruss   Dirk

    scooterama

    • Fördermitglied
    • Beiträge: 279
    • Geschlecht:
    Hallo

    Ich habe aktuell ein grosses Problem was die Passwort vergessen Funktion angeht und ich frage mich gerade ob das Problem mit der Länge zu tun hat oder mit der Tatsache, dass ich die Passwörter aus einem xtc3.04 SP1 Shop inkl. Kundendaten übernommen habe?

    Die Idee war natürlich dass unsere Kunden nicht alle neue Passwörter generieren müssen und da wir die Kundendaten aus dem ERP mit Shopsync synchronisieren dachte ich dass dies kundenfreundlicher sei wenn der Kunde sich weiterhin einloggen kann.

    Jedenfalls bekomme ich beim Versuch mit der Passwort versenden Funktion ein Passwort zu versenden ständig die Errormeldung
    Zitat
    Bitte geben Sie Ihre E-Mail-Adresse und den Sicherheitscode erneut ein.
    Achten Sie dabei auf Tippfehler!

    Kann mir da evtl. jemand helfen den Fehler zu finden?

    Der Shop läuft unter: www.scootertuning.ch

    jannemann

    • modified Team
    • Beiträge: 6.289
    • Geschlecht:
    Hi,

    funktioniert denn das Kontakformular oder wird dort die Eingabe des Captcha auch nicht angenommen?

    Schöne Grüße,
    Jan

    scooterama

    • Fördermitglied
    • Beiträge: 279
    • Geschlecht:
    Hi jannemann, das Kontaktformular funktioniert tadellos. Habe mir all die Post hier wegen fehlenden Bildern ect. durchgelesen. Firebug zeigt mir aber alles nur 200 ok an?

    Kann das an der DB liegen?

    scooterama

    • Fördermitglied
    • Beiträge: 279
    • Geschlecht:
    Hi jannemann, habe nun die password_double_opt.php aus der 1.05 sp1b genommen und schwupps damit geht es?

    Habe die password_double_opt.php mit der neuesten aus 4642 verglichen und da sind schon einige Änderungen enthalten.

    Offensichtlich muss ich nochmal den kompletten Shop diffen in der Hoffnung den Fehler irgendwo finden zu können.

    Ist schon komisch dass die Abfragen der neuen password_double_opt.php nicht gehen? Hat da evtl. jemand eine Idee wo ich gezielt ansetzen kann?

    rechtstexte für onlineshop
    4 Antworten
    3750 Aufrufe
    31. Januar 2014, 16:45:44 von WayneTsun
    14 Antworten
    9092 Aufrufe
    15. August 2019, 12:00:05 von scooterama