PHP Formular OOP

Akkuschrauber

Freizeitschrauber(in)
Also mein Problem:

Ich möchte ein dynamisches Formular erzeugen mit dem ich beliebige Datenbanktabellen bearbeiten kann.
Der Ansatz funktioniert soweit ganz gut, Problem ist jetzt nur, dass ich die ins Formular eingegebenen Daten an eine weitere Methode übergeben will, die sie überprüft und dann in die Datenbank schreibt.

Der Formular header sieht also so aus:
PHP:
echo "<form action='{$this->new_db_entry($table_name)}' method='post'>";

Merkwürdigerweise führt PHP die action allerdings nicht nach drücken auf submit aus, sondern unmittelbar, also direkt nach dem echo Aufruf.

Wahrscheinlich is es nen katastrophaler Denkfehler meinerseits, aber ich komm einfach nicht drauf :huh:

Hilfe, ihr großen PHP Versteher :hail:
 
Ja, den gibts.
Ich glaub eher dass es grundsätzlich nicht geht was mit POST an ne Methode zu schicken.
Habs jetzt bissel anders gelöst und mit $_SERVER['PHP_SELF'] an sich selber geschickt.
Problematisch ist jetzt nur noch dass das ^ nicht sonderlich sicher ist, wie man überall liest.

Gibts da ne sinnvolle Alternative? Ich hab schon was von action = "#" gesehen, funktioniert merkwürdigerweise auch. Aber ob des so des Wahre is??
Am einfachsten wäre es natürlich den Dateinamen anzugeben, aber dann geht die ganze Flexibilität flöten...
 
Was steht denn in "{$this->new_db_entry($table_name)}" drin?
Normalerweise ist das in action eine Datei/Seite
also beispielsweise
auswertung.php
und darin wird dann ein code ausgeführt, der (alle) infos aus dem Formular (get oder post ist eigentlich wurscht, da geht es um sicherheit/sichtbarkeit) auswertet

also bspw
if ($_POST['vorname'] == 'Herbert') {
echo 'Man darf sich hier nur als Michael anmelden!';
}
 
Jaja, schon klar.
Mittlerweile steht da auch im übertragenen Sinne ne Datei drin:

PHP:
$self = $_SERVER['PHP_SELF'];
echo "<form action = '{$self}' method = post>";

Nur is das $_SERVER ziemlich anfällig für SQL-Injections und ich suche halt nach ner sicheren Lösung.:)
 
Der Formular header sieht also so aus:
PHP:
echo "<form action='{$this->new_db_entry($table_name)}' method='post'>";

Nochmal zum Verständnis: Du weisst schon, das bei dem Aufruf die Funktion new_db_entry() mit dem Parameter $table_name aufgerufen wird und das Resultat davon dann in HTML als action notiert wird? PHP parst in Strings angegeben mit " Variablen und wird dabei über das $this stolpern und es auswerten. Hinzu kommt hier deine Angabe mit {}-Klammern, so dass dies auf jeden Fall erst passiert. HTH. :)
 
Zurück