Beiträge: 638
Themen: 92
Registriert seit: 31.08.2010
MyBB-Version: 1.8.11
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
Beiträge: 25.762
Themen: 269
Registriert seit: 20.09.2005
Ich verstehe leider nicht genau, was du meinst.
Wie sieht dein Formular aus?
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 837
Themen: 8
Registriert seit: 08.02.2016
MyBB-Version: 1.8.38
(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!?
Beiträge: 638
Themen: 92
Registriert seit: 31.08.2010
MyBB-Version: 1.8.11
16.02.2016, 12:06
(Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2016, 12:14 von StefanT.)
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
Beiträge: 25.762
Themen: 269
Registriert seit: 20.09.2005
Du musst die Attribute aus dem Query String als input type="hidden" schreiben. Siehe auch:
http://stackoverflow.com/questions/11160...-disappear
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 837
Themen: 8
Registriert seit: 08.02.2016
MyBB-Version: 1.8.38
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
[ExiTuS]