Sie möchten sowohl die GET- als auch die POST-Methode verwenden

8

Ich weiß, dass die Ergebnisseite, die die GET-Methode verwendet, mit einem Lesezeichen versehen werden kann, während die mit POST nicht verwendet werden kann. Ich kenne auch die Einschränkungen der GET-Methoden.

Nun nehme ich an, ich möchte eine Suchmaschine erstellen, die GET standardmäßig verwendet, sodass Benutzer Lesezeichen setzen können, aber wenn die Länge der Suchphrase das Limit überschreitet, wechseln Sie zu POST. Auf der Serverseite benutze ich $ _GET oder $ _POST, je nachdem welche gesetzt ist.

Ist das machbar? Wenn nein, warum? Wenn ja, geben Sie bitte einen kurzen Überblick.

Danke

    
gameover 10.01.2010, 11:41
quelle

6 Antworten

11

Es ist machbar, kein Problem.

Es gibt das $_REQUEST -Array, das GET-, POST- und COOKIE-Werte zusammenführt, aber der bessere Weg wäre, GET und POST manuell in Ihrem Skript zu behandeln.

Lassen Sie Ihre Engine sowohl $_GET["variable"] als auch $_POST["variable"] überprüfen und verwenden Sie, was gesetzt ist. Wenn eine Variable in beiden Methoden festgelegt ist, müssen Sie entscheiden, welche Priorität Sie haben möchten.

Der einzige bemerkenswerte Unterschied zwischen den beiden Methoden besteht darin, dass ein GET-Parameter je nach Browser und empfangendem Webserver Größenbeschränkungen hat (POST hat ebenfalls Einschränkungen, liegt aber normalerweise im Bereich von mehreren Megabytes). Ich denke, die allgemeine Regel ist, dass eine GET-Zeichenfolge niemals 1024 Zeichen überschreiten sollte.

    
Pekka 웃 10.01.2010, 11:43
quelle
7

So können Sie GET und POST in einem verwenden:

%Vor%

Das PHP:

%Vor%     
nickf 10.01.2010 11:57
quelle
1

Sie könnten etwas wie folgt verwenden:

%Vor%     
hobodave 10.01.2010 11:49
quelle
1

Es ist auch gut zu wissen, dass die Verwendung von GET bei bestimmten Benutzergruppen die Versuchung auslöst, die URL zu manipulieren, um zu sehen, was passiert. Daher ist es absolut notwendig, sicherzustellen, dass der Code die Eingabevariablen angemessen saniert.

>

Natürlich hast du das sowieso gemacht ;-). Aber mit zahlen lohnt es sich doppelt paranoid.

Wenn ich GET benutze, setze ich normalerweise auch einen Cookie und gebe eine ID davon in irgendeiner Form ein und korreliere diese dann mit einer Variablen in der GET-Liste, um sicherzustellen, dass es überhaupt keine Probleme gibt Benutzer A manipuliert die Eingabe und lässt sie alles sehen, was von Benutzer B stammt.

    
Cruachan 10.01.2010 11:59
quelle
1

Ja, es ist machbar, obwohl (IMHO) die Grenze, bei der GET umständlich wird, wesentlich größer ist als der Schwellenwert, bei dem eine Benutzerschnittstelle zum Bereitstellen dieser vielen Informationen unbrauchbar wird. Je komplexer eine Abfrage ist, die Sie an eine herkömmliche Suchmaschine senden, desto effektiver kann sie gelöst werden.

Aber ich vermute, Sie haben Ihre Gründe.

Der einfachste Weg aus den von Ihnen bereitgestellten Informationen besteht darin, die Formmethode zur Laufzeit von GET zu POST mit Javascript zu ändern, z. B.

%Vor%

Was auch für Nicht-JavaScript-Clients gut herabgestuft wird.

C.

    
symcbean 11.01.2010 12:35
quelle
1
%Vor%

Wechseln Sie um $ _GET und $ _POST, um POST über GET vars zu priorisieren.

    
Jakob Sternberg 24.03.2014 18:04
quelle

Tags und Links