Kunden Passwörter aus Xt commerce 3.04 in Presta importieren???

Begonnen von Bodyshop, 11 Feb 2012, 12:13

« vorheriges - nächstes »
Nach unten

Bodyshop

11 Feb 2012, 12:13 Last Edit: 11 Feb 2012, 12:34 by Bodyshop
Hallo Leute,

Ich würde gern von Xtc 3.04 SP2.1 auf Presta umsteigen. Wie ich die Kundendaten Adressen, Name und Email  importiere habe ich mir schon zurecht gelegt und das klappt auch soweit ganz gut, aber leider funktioniert der Login noch nicht, was vermutlich am Passwort liegt. Wie bekomme ich es hin das die Kunden ihre alten Passwörter weiternutzen können oder müssen sich dann alle neu registrieren???

Wäre Cool wenn mir da jemand nen Tip geben könnte.

Vielen Dank MfG Jan

Luca

Hallo Bodyshop,
Willkommen im Forum. Soweit ich das erkennen kann sind die Passwörter in Prestashop md5 codiert. Die Zeichenketten findest Du einmal im Prestashopverzeichnis unter config/settings.config.PHP und in der Datenbank. Viel schlauer bin ich da jedoch nicht. Aber zur md5 Codierung findet man einiges beim Gockle.
Viele Grüße und Erfolg

Shop Hosting von ESTUGO: Installation oder Shoptransfer inklusive!
PositiveSSL inklusive! 3 Monate Hosting inklusive! 1 Monat Laufzeit!
Exzellenter Kundenservice! 7 Tage Backup!
Jetzt wechseln & bis zu 100 Euro sparen! Gutscheincode: #AWHC100 Anzeige

Bodyshop

Zitat
Die Zeichenketten findest Du einmal im Prestashopverzeichnis unter config/settings.config.PHP und in der Datenbank.



Ok deine Antwort bringt mich nicht wirklich weiter trotzdem Danke. Was meinst du mit Zeichenkette und was bringt mir die bzw. was mache ich damit??? Die Passwörter im xtc sind auch Md5 codiert soweit ich das ermitteln konnte. Wenn ich die Zeichenketten (ich gehe davon aus du meinst die md5 codierungen der kundenpasswörter) aus der datenbank von xtc kopiere und in Presta einpflege kann man sich nicht anmelden weil das Passwort nicht stimmt. welcher schritt ist nun erforderlich das Presta auch die Codierung aus Xtc lesen kann??? Es kann doch nicht sein das sich dann alle Kunden ein neues Konto anlegen müssen ??? also ich als Kunde würde das zumindest nicht gut finden.

Wäre Cool wenn noch jemand nen Tip hätte

MfG Jan

Lockesoft

#3
13 Feb 2012, 15:24 Last Edit: 25 Jul 2012, 14:56 by Lockesoft
Hallo zusammen,

ich vermute mal ganz stark, wenn man die passwörter md5 kodiert durch die Importroutine von PrestaShop laufen lässt wird das ganze nochmal md5 kodiert..... :-)
Das ist dann natürlich nicht das gewünschte Ergebnis.

Aber, wenn sich Deine Kunden versuchen anzumelden, sollte es Ihnen doch möglich sein, sich über die Passwort-Recoveryfunktion ein neues Passwort zusenden zu lassen. Mit diesem können Sie sich dann anmelden und wieder Ihr Wunschpasswort einrichten.

Voraussetzung ist allerdings, dass die Kunden eine funktionierende E-Mailadresse hinterlegt haben. Der Shop schickt das Ersatzpasswort nämlich via E-Mail.

ska

Hi

oder eine Lösung wie beim osCommerce-Import nutzen. Stichwort passwd_importerosc

Gruß
Stefan

Bodyshop

Hallo Stefan,
8) Vielen Dank.Das klingt nach einer sinnvollen Lösung ich werde das einfach mal versuchen umzusetzen.
Werde mich melden ob ich es so hinbekommen habe oder nicht.

MfG Jan

Bodyshop

Sorry Lockesoft hatte deine Antwort einfach übersehen. :-[
Mit dem Stichwort passwd_importerosc habe ich nun ein PhP Script gefunden welches mir schonmal die ganzen Kundendaten Daten aus xtc ausließt und in einer sauber geordnetetn csv datei bereitstellt.Das Feld Passwort blieb hierbei zuerst leer dann habe ich das Script ein wenig angepasst nun kopiert das script die md5 codes aus der tabelle, aber bei Prestashop brigen die mir leider nichts.Also wenn jemand ein Kundenbackup eines xt commerce shops (Os Commerce) machen möchte eignet sich dieses Script hervorragend. Ok das mit den Passwörten ist halt doof aber da ich den Prestashop relativ cool und übersichtlich finde werde ich die Kunden wohl über die umstände informieren müssen, und jedem ein neues Passwort zu teilen welches die kunden dann beim nächsten login ändern sollen.
Vielen Dank für eure Bemühungen und Hilfe
MfG Jan

ska

Hi

> aber bei Prestashop brigen die mir leider nichts

genau, darum mein Vorschlag, den osCommerce-Importer zu nutzen. Nicht unbedingt zur Übertragung der Kundendaten. Sondern wegen der Passwort-Funktion, die dann am Hook "Before Authentication" hängt. Diese kümmert sich um die Kontrolle, ob das alte Kennwort gültig ist und speichert dies dann als PrestaShop-Variante. Also

1. osCommerce-Importer installieren
2. CSV-Import
3. manuelle Übertragung der alten Kennwörter in das hinzugefügte Datenbankfeld passwd_importerosc

oder die Kundendaten gleich per osCommerce-Importer übertragen. Wobei ich dies mit xtCommerce noch nicht ausprobiert habe.

CSV-Import ohne Übernahme der bisherigen Kennwörter ist aber wohl unkomplizierter.

Gruß
Stefan

Bodyshop

Hy,

>osCommerce-Importer

hab ich schon versucht zu bekommen aber leider nirgends gefunden, und Geld für Codeschnipsel ausgeben habe ich nicht wirklich vor.
Wenn du noch eine Version von dem Modul hättest wäre cool wenn du sie hier zur Verfügung stellen könntest.
Trotzdem Vielen Dank
Gruß Jan

ska

Hi

kostet kein Geld. Ist seit PrestaShop 1.4 standardmäßig bereits unter "Module > Migrations-Tools" vorhanden. Zuerst ist Shop-Importeur und dann osCommerce-Importeur zu installieren, wenn man die Datenübertragung damit machen will.

Habe mal kurz den Kunden- und Adressimport aus xtcmodified per osCommerce-Importeur getestet. Scheint geklappt zu haben. Somit ist ein CSV-Import eigentlich nicht notwendig. Es werden zwei neue Datenbankfelder angelegt

ps_customer.id_customer_importerosc
ps_customer.passwd_importerosc

Wenn Du dann noch die Funktion checkPwd in der Datei "modules/importerosc/importerosc.php" auf die xtc-Passwortprüfung anpasst, müsste es eigentlich gehen.


  private function checkPwd($plain, $encrypted) {
    if (!empty($plain) && !empty($encrypted)) {
      // split apart the hash / salt
      if ($encrypted!= md5($plain)){
            return false;
      } else {
             return true;
      }

    }

    return false;
  }


Dann wird beim Einloggen das bisherige Kennwort gecheckt (ps_customer.passwd_importerosc), im Erfolgsfall gelöscht und das PrestaShop-Kennwort gesetzt (ps_customer.passwd). Hat bei meinen kurzen Tests geklappt. Eventuell gibt es Unterschiede zwischen den xtc-Versionen bei der Kennwortprüfung. Musst Du mal schauen.

Die andere Variante wäre halt, dass man mit dem Modulen nicht die Daten überträgt, sondern nur die angesprochene Funktion des Moduls osCommerce-Importeur nutzt, die das bisherige Kennwort checkt. Dann müsste man aber selber dafür sorgen, dass die xtc-Kennwörter in passwd_importerosc kommen.

Gruß
Stefan

Bodyshop

Hallo Ska,

das ich mich erst jetzt wieder melde hat seinen Grund. Nachdem mir nämlich die erleuchtung kam das ich garnicht Presta 1.4 verwendet habe, sondern noch eine alte 1.3er Version.habe ich mich nun mit der aktuellsten 1.4er version befasst.Deine Tipps habe ich soweit es mir möglich war ausprobiert. Der Import von Bestellungen, Kundendaten, Warenkörben, Kategorien und so weiter klappt mit dem Modul soweit bis auf Produkte ganz gut.Hier danke ich dir schonmal für den guten Tipp! Allerdings bekomme ich es irgendwie nicht hin das die passwörter auch funktionieren wie sie sollen bzw. weiß ich nicht wo ich, wie den code anpassen muss damit es funktioniert. Die alten Passwörter werden auch problemlos in die Tabellenspalte ps_customer.passwd_importerosc übernommen.Mit dem Code von dir komme ich nicht weiter bzw. weiß nicht wie ich den wo einsetzen soll.wenn ich ihn in der importerosc.php an die ähnliche stelle setze zeigt Dreamweaver mir synataxfehler und online funtzt der login garnicht mehr.

Zitat
Eventuell gibt es Unterschiede zwischen den xtc-Versionen bei der Kennwortprüfung. Musst Du mal schauen.

Leider weiß ich auch nicht wo ich dort anfangen soll zu suchen  ???

Vllt. hast du oder jemnd anderes evtl. noch einen Tip für mich wie man den code richtig anpassen muss ? Leider habe ich keinen Plan von PhP :-(
Trotzdem erstmal Vielen Dank

ska

Hi

in dieser Datei
modules/importerosc/importerosc.php

findest Du eine Funktion bzw Methode
private function checkPwd

Diese kannst Du löschen (oder auskommentieren)
Zitat

   private function checkPwd($passwd, $encrypt_pwd)
   {
      //checks the type of encryption password
      if (preg_match('/^[A-Z0-9]{32}\:[A-Z0-9]{2}$/i', $encrypt_pwd) === 1)
      {
         //salt
         $stack = explode(':', $encrypt_pwd);
            if (sizeof($stack) != 2)
               return false;

            if (md5($stack[1] . $passwd) == $stack[0])
                return true;
             else
                return false;
      }
      else
      {
         //phpass
         if (file_exists(dirname(__FILE__).'/passwordhash.php'))
         {
            include(dirname(__FILE__).'/passwordhash.php');
            $hasher = new PasswordHash(10, true);
            return $hasher->CheckPassword($passwd, $encrypt_pwd);
         }
         else
            return false;
      }

   }


und dafür dies reinsetzen

Zitat

  private function checkPwd($plain, $encrypted) {
    if (!empty($plain) && !empty($encrypted)) {
      // split apart the hash / salt
      if ($encrypted!= md5($plain)){
            return false;
      } else {
             return true;
      }

    }

    return false;
  }


Wenn Du einen Syntaxfehler bekommst, hast Du vermutlich was falsch gemacht. Wenn die Passwortprüfung trotzdem nicht geht, könnte es an Unterschieden zwischen den xtc-Versionen liegen. Ich glaube aber, dass es dort keine Unterschiede gibt. Bei meinem Test ging es jedenfalls so.

Gruß
Stefan

Bodyshop

Hallo ska,
Alles Bestens   ;D

Funktioniert Prima! Direkt beim ersten anlauf.

Der Syntaxfehler entstand dann wohl weil ich nicht genau wusste bis wohin ich den alten Code wegnehmen (auskommentieren) musste.

Vielen Vielen Vielen Dank für deine Hilfe! 8)
Damit ist das Problem auch aus der Welt und ich komme wieder ein stück weiter.

Herzlichen Dank nochmal und alles Gute!
Mit freundlichem Gruß
Jan

Nach oben