Modifiziere / Encrypt Daten eines Formulares in/für die Datenbank
am 12.06.2020 - 17:36 Uhr in
Hallo zusammen,
ich suche nun schon seit längerem eine Lösung für mein Problem:
Ein Nutzer kann Daten in einem Formular eingeben und ändern. Hierfür Nutze ich das Modul "Entityform". Nun sollen die Daten aber modifiziert/verschlüsselt an die Datenbank übertragen werden. Für die Verschlüsselung habe ich eine Lösung, jedoch fehlt mir der Code bzw. der Drupal Befehl, der Daten ggf. modifizieren kann.
Das Formular schickt die Daten per GET an den Server. Die Variablen des Formulares sind mir bekannt. Ein Zusatzmodul für die Modifizerung habe ich bereits angelegt.
Ich sehe 3 Lösungswege:
1. Ich nehme das Modul Entityform und ändere den Code -> leider ist das sehr komplex und ich finde nicht die Stelle, an dem der VALUE an die Datenbank übergeben wird.
2. Über ein Zusatzmodul, das ich selbst programmiere, modifiziere ich alle Daten, die per Formular versendet wird -> Hier konnte ich keine Drupalfunktion finden, mit der ich das umsetzen kann
3. Etwas unsexy: Über ein Zusatzmodul rufe ich Daten aus der Datenbank auf, modifiziere/verschlüssel sie, und speichere sie wieder ab. -> Es wäre eine notfallösung .... aber hierfür muss ich eine ID ermittelt bekommen, mit welcher etwas in die DAtenbank geschrieben wurde. Hierfür habe ich noch keine Lösung.
Habt ihr eine Idee für eine Lösung?
- Anmelden oder Registrieren um Kommentare zu schreiben
Hi. Lösung 2: Mach Dir ein
am 13.06.2020 - 10:29 Uhr
Hi.
Lösung 2:
Mach Dir ein Custom Modul und nutze hook_node_insert oder hook_node_presave
https://api.drupal.org/api/drupal/modules%21node%21node.api.php/function...
Gruss
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Ganz so einfach ist das
am 13.06.2020 - 11:27 Uhr
Ganz so einfach ist das nicht. Wenn die Daten verschlüsselt in der Datenbank liegen, können "normale" Suchen nicht mehr funktionieren, da die direkt auf die Felder in der Datenbank zugreifen. Auch sonst gibt es keine Funktion, die Dir die Daten vor dem Zugriff zum Entschlüsseln anliefert. Drupal bietet aber eine Zugriffsebene vor der Datenbank an. Du müßtest vermutlich dort eine eigene Schicht schreiben um die Daten verschlüsselt in die DB rein und raus zu bekommen.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Danke für deinen Ansatz für
am 16.06.2020 - 16:11 Uhr
Danke für deinen Ansatz für Lösung 2!
Soweit ich dich verstehe, soll ich die Funktion in meinem Custommodul nutzen, um den neuen Datensatz abzuspeichern:
function hook_node_insert($node) {
db_insert('mytable')
....
Mein Problem ist jedoch, dass das Speichern bereits das Modul "Entityform" übernimmt, was sehr komplex ist.
Ich stehe daher vor folgender Herausforderung:
Wie erhalte ich die ID des zuletzt gespeicherten Datensatzes?
Wie ich etwas in der SQL-Datenbank speichere, weiß ich.
Eine separate Ebene klingt
am 16.06.2020 - 16:14 Uhr
Eine separate Ebene klingt logisch und sinnvoll, aber wie soll das gehen? meinst du eine 2. Datenbanktabelle je Feld, in das die Daten rein/raus kopiert werden?
Alternative:
Ansonsten würde ich in meinen Views etc. einen entsprechenden Entschlüsselungscode einbauen. Damit sollte es doch klappen.