MyBB.de Forum

Normale Version: GET-Formular an vorhandene URL anhängen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich bin bereits vor einiger Zeit als ich ein blutiger Anfänger war auf das Problem gestoßen, jetzt wird es jedoch unumgänglich und ich möchte gerne eine Lösung finden die am elegantesten ist.

Mein Problem:
Meine Homepage ist über die domain.tld/index.php verfügbar. Alle Seiten werden über das Parameter ?page=SEITENNAME angesteuert. Wenn ich nun jedoch ein GET-Formular habe, wird wieder rausgelöscht und die Homepage ist mehr oder weniger defekt.

Es gibt nun die Lösung das über die Session-Variable zu löschen und die mit dem hidden-Formularfeld, welches mein page-Parameter enthält.

Gibt es noch andere Lösungen, welche ggf. eine Einstellung sind mit welcher es nicht notwendig ist diese Umwege zu gehen?

Beste Grüße
Ich verstehe leider nicht genau, was du meinst. Sad Wie sieht dein Formular aus?
(15.02.2016, 21:30)Juventiner schrieb: [ -> ][...]
Es gibt nun die Lösung das über die Session-Variable zu löschen und die mit dem hidden-Formularfeld, welches mein page-Parameter enthält.

Gibt es noch andere Lösungen, welche ggf. eine Einstellung sind mit welcher es nicht notwendig ist diese Umwege zu gehen?
Ich gehe davon aus, dass du PHP nutzt!? Dann:
Du kannst im action-Parameter des Formulars ein "?<?php echo $_SERVER['QUERY_STRING']; ?>" anhängen. In der Server-Variable QUERY_STRING sind alle Parameter enthalten, die über die Adresszeile übergeben werden, so auch dein "page=". Auf diese Weise sparst du dir ein weiteres input-hidden-Element und musst auch nichts mehr manuell übergeben. Alle Felder aus dem Formular (GET) werden dann entsprechend zusätzlich an die in action="" gegebene URL angefügt.

Konkretes Beispiel
Aufruf: http://www.test.com/index.php?page=contact

Aus:
<form method="GET" action="index.php?<?php echo $_SERVER['QUERY_STRING']; ?>" ...>
<input name="test1" value="x">
<input name="test2" value="y">

wird:
<form method=GET" action="index.php?page=contact" ...>
<input name="test1" value="x">
<input name="test2" value="y">

Und nach dem Absenden geht es an: index.php?page=contact&test1=x&test2=y

Ist es das, was du beabsichtigst? Oder habe auch ich die Frage falsch verstanden!?
Hallo,

du hast das Grundprinzip schon verstanden.

Nur werden beim absenden vom get-Formular die Parameter die im action drinstehen entfernt.

Beispiel:
index.php?page=Search
Code:
<form action="index.php?<?php echo $_SERVER['QUERY_STRING']; ?>" method="get">
<input type="text" name="searchstring" value="">
<input type="submit" name="start" value="Suchen" />
</form>

Wird zu:
index.php?searchstring=INHALT&start=suchen
Du musst die Attribute aus dem Query String als input type="hidden" schreiben. Siehe auch: http://stackoverflow.com/questions/11160...-disappear
Das betrifft jetzt nicht die Lösung deines Problems (oder besser: des GET-URL-Override-Problems). Aber wenn du stattdessen das Formular von GET auf POST umstellst, umgehst du diesen Override.

Es scheint ohnehin sinnvoller ein Suchformular mittels POST zu realisieren, um die URL nicht unnötig mit Suchbegriffen oder Benutzereingaben zu "belasten". Zudem wird nicht gecached, es besteht kine Begrenzung der eingegebenen Länge von input, beim Browser-Vor/Zurück wird das form ernut gesendet und die Browser-Chronik bleibt sauber Smile

[ExiTuS]