Benutzer importieren

  • Hallo,
    ich habe eine sehr spezielle Frage: Auf unserer Website soll ein Mitgliederbereich eingerichtet werden, die Mitglieder erhalten eine eigene Userrolle zugewiesen. Leider sind es über tausend Datensätze, die ich natürlich nicht einzeln eintragen möchte. Es sind die Felder Username, Vorname, Nachname, Mailadresse, Passwort und Userrolle. In der Datei sind die Passworte aber noch unverschlüsselt, so dass es über ein einfaches Importieren in der Datenbank nicht klappt, zumal die Benutzerdaten dort ja in zwei verschiedenen Tabellen stehen.

    Hat jemand eine Idee, wie ich die Datensätze über XLS/CSV einlesen kann, ohne alle nochmal nachbearbeiten zu müssen?
    Ich habe das Plugin "Import users from CSV with meta" probiert. Das funktioniert auch, aber die Passwörter werden damit nicht verschlüsselt. Also kann sich das Mitglied auch nicht einloggen.
    Gruß
    Robbi

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren


  • Hat jemand eine Idee, wie ich die Datensätze über XLS/CSV einlesen kann, ohne alle nochmal nachbearbeiten zu müssen?
    Ich habe das Plugin "Import users from CSV with meta" probiert. Das funktioniert auch, aber die Passwörter werden damit nicht verschlüsselt. Also kann sich das Mitglied auch nicht einloggen.
    Gruß
    Robbi

    Ist zwar nur ein Workaround, aber wenn die User Accounts erstellt wurden, müssten sich die User ja über die "passwort vergessen" Option neue Passwörter generieren können.
    Müsste man dann natürlich entsprechend kommunizieren.

    Alternativ könntest du die Passwörter vor dem import per MD5 "verschlüsseln" und direkt in der XLS/CSV Liste hinterlegen.

    Oder du schreibst dir einen eigenen importer, der die Passwörter entsprechend als MD5 einfügt.

  • Hallo Daniel,
    danke für Deine Antwort.
    Die erste Möglichkeit ist in diesem Verein eher schwer umsetzbar.
    Die Passwörter vorher zu verschlüsseln würde zwar gehen, aber das einzeln zu machen, ist zu viel Aufwand. Es geht um knapp 2.000 Datensätze.
    Einen eigenen Importer schreiben kann ich nicht.
    Gibt es denn eine Möglichkeit, die Passwörter quasi als Liste zu verschlüsseln?


  • Gibt es denn eine Möglichkeit, die Passwörter quasi als Liste zu verschlüsseln?

    So war das eigentlich auch gemeint.
    Du kannst die Excel/CSV in PHP einlesen, dann die Passwörter hashen/verschlüsseln und dann wieder in eine Excel/CSV Datei schreiben.

    http://www.roytuts.com/read-from-and-…file-using-php/

    http://php.net/manual/de/function.md5-file.php

    Anmerkung: Variante 2+3 führen dazu, dass die Passwörter nachher nur als MD5 gehashed sind. Das ist eigentlich veraltet und wird nur noch als Fallback unterstützt. Soll heißen: Wird funktionieren, ist aber nicht so sicher, wie Passwörter, die WordPress selbst ablegt.
    Deshalb wäre die erste Variante (Passwörter manuell neu generieren lassen) eigentlich zu bevorzugen.
    Das soll jetzt nicht heißen, dass man das auf keinen Fall so machen soll. Ich wollte es nur gesagt haben...

  • Hallo Daniel,
    ich habe eine PHP-Datei erstellt und hochgeladen, der Code ist:

    Zwischen dem Bereich fürs Lesen und Schreiben der neuen CSV-Datei habe ich diese Zeile eingefügt:
    string md5 ( string $user_pass [, bool $raw_output = false ] )
    Die wird mir allerdings in Dreamweaver als Fehler markiert.

    Insgeamt wird beim Aufruf der PHP-Datei nur eine weiße Seite angezeigt.
    Kannst Du mir sagen, wo der Fehler liegt?

  • Nachtrag: Im geposteten Code fehlt die Zeile
    string md5 ( string $user_pass [, bool $raw_output = false ] )

    Die steht zwischen den Zeilen
    fclose ( $handle ) ;
    }
    und
    $fp = fopen ( 'mitglieder2.csv' , 'w' ) ;

    Die neue CSV-Datei mitglieder2.csv wird ohne die Zeile "string md5..." auch erstellt, aber die Daten eben nicht verschlüsselt. Steht die Zeile im Code, wird keine neue Datei erstellt.


  • string md5 ( string $user_pass [, bool $raw_output = false ] )
    .

    Steht die da exakt so in deinem Code?
    Die eckige Klammer darf im "echten" Code so natürlich nicht stehen. Das ist ein optionaler Parameter, der entweder true oder false lauten muss (false ist Default).

    Das heißt, der korrekte Aufruf ist eigentlich nur:
    $user_pass = md5($user_pass);

    Den Rest habe ich mir jetzt nicht genauer angeschaut, weil gerade nur mobil unterwegs.

  • Hallo,
    ja, den Code hatte ich von der Beispielseite genommen, die Du verlinkt hattest. Ich kenne mich mit PHP nicht aus, kann höchstens einige Anpassungen vornehmen.
    Habe jetzt Folgendes:


    Leider werden die Passwörter in der ausgegebenen CSV-Datei noch immer nicht verschlüsselt.
    Danke für Deine Hilfe!

  • Jetzt habe ich doch mal schnell über den ganzen Code drübergeschaut. Oben machst du ja eine Ausgabe mit echo. Das ist eigentlich überflüssig (das ist eine Ausgabe im Browser).

    Dann schreibst du die Daten in ein Array und schreibst das Array in die neue Datei. $user_pass ist ja ganz nicht definiert. Daher "weiß" PHP auch nicht, was du da überhaupt verschlüsseln möchtest. Das Array $data enthält die einzelnen Spalten. Eine davon ist vermutlich das Passwort, dass du verschlüsseln möchtest.

    Ohne die Struktur der CSV zu kennen, ist es aber schwer zu sagen, welche Spalte wohl die richtige ist.

  • Hallo Daniel,
    ich habe da nur die Angabe der Vorlage angepasst. Aber klar, die Browserausgabe ist überflüssig. Allerdings weiß ich nicht genau, was allerdings davon gelöscht werden kann.

    Die CSV-Datei enthält jetzt nur noch die Spalte user_pass mit den noch unverschlüsselten Passwörtern. Dort sollen dann die verschlüsselten Passwörter rein.

  • Hi Robbi,

    ich hab deinen Code mal ein bisschen überarbeitet. So sollte es funktionieren:

    Ich habe mal ein paar Kommentare ergänzt. Vielleicht wird es so etwas klarer :)

    Edit: Tippfehler

    Einmal editiert, zuletzt von danielgoehr (8. Mai 2017 um 10:43)

  • Hallo Daniel,
    ich danke Dir sehr, es ist genau das, was ich gebraucht habe.

    Außerdem bin ich echt beeindruckt, mit wie wenig Zeilen eine solche Aufgabe gelöst werden kann.
    Und auch, dass Du das gemacht hast.
    Ich habe Lust bekommen, mich näher damit zu beschäftigen.

    Vielen lieben Dank!
    Gruß
    Robbi

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!