TS: <form action=""> vs. <form action="<form action="$_SERVER['PHP_SELF']">

Beitrag lesen

Hello Karoline,

Also habe eine Seite

www.meinewebseite/test/test.php?id=5

auf dieser Seite ist unter anderem ein Formular, die Einträge werden bei submit in eine DB geschrieben, der db_input ist im head der Seite eingebunden - möchte also bei submit auf die gleiche Seite verweisen (und natürlich die $GET Variable ?id=5 mit übergeben).

Habe nun gelesen, dass es am sichersten und einfachsten ist das über <form action="" method="POST"> zu machen.

alternativ wäre ja: <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>"> - wobei man da noch die $GET variable einbauen müsste (oder hat sich das mittlerweile geändert?).

Ist das wirklich valide wenn ich das action Attribut leer lasse - oder funktioniert das zwar, ist aber eigentilch nicht zulässig?

echo '<form action=" ' . $_SERVER['PHP_SELF'] . "'>;

ist nicht sicher gegen XXS-Angriffe. Du solltest den Wert $_SERVER['PHP_SELF'] entweder kontextbehandeln (htmlspecialchars()), oder aber stattdessen $_SERVER['SCRIPT_NAME'] verwenden. Dann gehen aber die Parameter verloren.

echo '<form action="" method="post"'>; 

lässt die URi vom Aufruf wieder zu, d. h., der Browser setzt diese ein.

Bliebe als dritte Möglichkeit noch

echo '<form action="#"' method="post">'; 

Das wird die URL vom Request wieder übernommen. Aber man kann keine zusätzlichen GET-Parameter mehr anhängen.

So, nun hoffe ich, dass ich es nicht selber durcheinander gebracht habe. Experimentiere lieber selber noch einmal damit. ;-)

Liebe Grüße
Tom S.

--
Die Krawatte ist das Kopftuch des Westens