allgemeine funktion zum updaten von DB-Einträgen
ingobar
- php
Hallo,
leider habe ich hier schon wieder ein Problemchen:
Ich würde gerne eine allgemeine php-Funktion/Datei benutzen um meine Tabellen zu aktualisieren.
Ich dachte da zB an so etwas:
Aufruf: update_table.php?tablename=mitarbeiter&tupel_id=2&name=NeuerName
Mein Problem ist jetzt folgendes: Wie kann ich abrufen wie viele Parameter übergeben wurden. Jede Tabelle hat ja unterschiedlich viele Attribute/Spalten.
Oder muss ich für jede Tabelle eine eigene update_table_NAME.php schreiben?
Hi,
Ich dachte da zB an so etwas:
Aufruf: update_table.php?tablename=mitarbeiter&tupel_id=2&name=NeuerName
hurra. Das Thema "Sicherheit" hast Du bei dieser Idee ausreichend beleuchtet?
Mein Problem ist jetzt folgendes: Wie kann ich abrufen wie viele Parameter übergeben wurden.
$_GET ist ein stinknormales assoziatives Array. Nur weil es superglobal ist, ist es deswegen nicht anders zu verwenden als andere Arrays.
Cheatah
$_GET ist ein stinknormales assoziatives Array. Nur weil es superglobal ist, ist es deswegen nicht anders zu verwenden als andere Arrays.
Also kann ich das einfach mit einer Schleife durchlaufen, ja?
hurra. Das Thema "Sicherheit" hast Du bei dieser Idee ausreichend beleuchtet?
Darauf hatte ich vergessen zu antworten. Du um auch für mich sicher zu gehen: Meine Variante (GET) ist unsicher. Wenn ich kritischere Daten hätten, die ich aber im Moment nicht habe, dann sollte ich POST verwenden. Richtig?
Ach ja. Bei POST bekomme ich auch ein assoziatives Array?
Ich grüsse den Cosmos,
dann sollte ich POST verwenden. Richtig?
Du hast das Problem noch nicht erkannt.
Ach ja. Bei POST bekomme ich auch ein assoziatives Array?
ja, allerdings heisst das $_POST
Und so nebenbei, um festzustellen, was ein Array enthält, gibt es u.a. die Funktion print_r()
Möge das "Self" mit euch sein
Du hast das Problem noch nicht erkannt.
Kannst du es mir dann sagen?
hi,
Du hast das Problem noch nicht erkannt.
Kannst du es mir dann sagen?
https://forum.selfhtml.org/?t=141728&m=920673
gruß,
wahsaga
Diese Antwort hatte ich wohl im Eifer des Gefechts übersehen.
Da bei mir aber die Tabellennamen durch das Skript, Attributnamen und deren Werte durch <select>s fest vorgegeben sind, werde ich wohl keine Probleme haben. Ich wollte einfach nur eine allgemeingütlige Funktion, so dass ich nicht immer das Gleiche schreiben muss.
Ich grüsse den Cosmos,
Da bei mir aber die Tabellennamen durch das Skript, Attributnamen und deren Werte durch <select>s fest vorgegeben sind,
Und wie verhinderst du, das jemand über ein fremdes Formular dein Script aufruft und andere Werte übergibt?
Du hast das Problem jetzt zwar erkannt, ignorierst es aber.
Möge das "Self" mit euch sein
Und wie verhinderst du, das jemand über ein fremdes Formular dein Script aufruft und andere Werte übergibt?
Daran hatte ich überhaupt nicht gedacht. Aber stimmt natürlich.
Du hast das Problem jetzt zwar erkannt, ignorierst es aber.
Ich hatte es wohl doch nicht erkannt.
Und wie verhindere ich so etwas? Keine Ahnung. Ich verschicke die Daten mit POST, dann sind sie erstmal nicht so problemlos sichtbar? Ich schicke noch irgendeine Kennung mit?
Wäre für einen Tipp dankbar.
hi,
[das jemand über ein fremdes Formular dein Script aufruft und andere Werte übergibt]
Und wie verhindere ich so etwas?
Gar nicht.
Aber du prüfst alle Daten auf Plausibilität. Wenn Änderungen nur an den Tabellen X und Y möglich sein sollen, dann überprüfst du, ob als Tabellenname X oder Y übergeben wurde - alles andere sind ungültige Daten.
Wenn nur bestimmte Felder manipulierbar sein sollen, analog.
Wenn nur bestimmte Werte gültig sein sollen, analog.
...
Ich verschicke die Daten mit POST, dann sind sie erstmal nicht so problemlos sichtbar?
Interessiert nicht, höchstens für Leute die kein HTML kennen eine Hürde.
Ich schicke noch irgendeine Kennung mit?
Bringt nichts.
Die sehe ich in deinem Formular, als kann ich sie genauso gut senden.
gruß,
wahsaga
hi,
Da bei mir aber die Tabellennamen durch das Skript, Attributnamen und deren Werte durch <select>s fest vorgegeben sind, werde ich wohl keine Probleme haben.
Absolut falsch.
Zwischen deinem Formular im HTML, und den Daten die an deine Scripte gesendet werden, besteht nur im Idealfall ein Zusammenhang.
gruß,
wahsaga
Hi,
ich nehme mal an, dass, falls Parameter übergeben werden, diese immer gleich sind. Also sind die Begriffe: 'tablename', 'tupel_id' und 'name' immer gleich.
Jetzt kannste doch nach jedem Aufruf abfragen, ob diese Parameter da sind:
if( isset($_GET['tablename']) ) oder
if( isset($_GET['name']) ) { irgendwas; }
Somit brauchst du nur eine 'update_table.php' und bevor du dann irgendwas machst, fragst du bzw. das Skript erstmal, ob und welche Parameter vorhanden sind.
Gruß,
Thorsten F.
Hi,
ich nehme mal an, dass, falls Parameter übergeben werden, diese immer gleich sind. Also sind die Begriffe: 'tablename', 'tupel_id' und 'name' immer gleich.
Nein, sind sie nicht. Auch die Anzahl ist variable. Mit Ausnahme der ersten beiden.
echo $begrüßung;
Ich würde gerne eine allgemeine php-Funktion/Datei benutzen um meine Tabellen zu aktualisieren.
Aufruf: update_table.php?tablename=mitarbeiter&tupel_id=2&name=NeuerName
Das ist sicherheitstechnisch sehr bedenklich, da man doch auf diese Weise quasi einen beliebigen Tabellennamen übergeben kann. Solltest du kein DB-Managementsystem im Stile von phpMyAdmin schreiben, fände ich es besser, du schreibst (mindestens) eine Funktion, der du die Ausführung überlässt, und meinetwegen auch den Tabellennamen übergibst. Dieser steht dann aber fest eingetragen in dem Script, das für die jeweilige Aufgabe die Daten übernimmt und an diese Funktion weiterleitet.
echo "$verabschiedung $name";