PHP-Anfragen mit mehreren query-strings
Kann ich immer testen, aber ich wollte eine offizielle Antwort von einem PHP-Experte (etwas, was ich am meisten sicher nicht).
Wenn jemand macht eine Anfrage wie diese:
http://www.somedomain.com/a.php?param1=value1¶m2=value2¶m3=value3?param1=value4¶m2=value5¶m3=value6
Welche Konsequenzen gibt es, wenn ich versuche, auf _GET['param2']
zum Beispiel? Wie es aussieht, bekomme ich nur den ersten Wert. In diesem Fall würde es wieder value2
. Ist das erwartete Verhalten?
Beinhaltet das zweite Fragezeichen auf irgendetwas? Gibt es Fehler, zum Beispiel?
- Ich weiß nicht für sicher, aber es könnte die Ursache für parse-Fehler. Der parser könnte annehmen, dass das '&' token nach 'value2', aber begegnet '?', und so ist es nur beenden Parsen der Anfrage.
- Relevante Frage: autoritäre Stellung der doppelte HTTP GET-query-Schlüssel
- Sie können mehrere Separatoren in arg_separator
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es wird nur das Letzte definiert. Die Definition eines Parameters, der mehr als einmal in die query-string läuft einfach Gefahr, sich potentiell irreführende Ergebnisse. Es ist am besten überprüfen Sie Ihre Abfrage-string in diesen Fällen, zumindest das ist, was ich tun.
Dem zweiten Fragezeichen behandelt werden als Teil der Wert für seine vorhergehenden parameter.
Sind Sie offiziell nicht haben soll, zwei
?
in einem query-string. Wenn Sie das tun, sind die Ergebnisse undefiniert. Einige Plattformen (z.B. PHP), behandeln die nachfolgenden?
chars das gleiche wie&
chars, und damit die Wert-Paaren. Andere werden nur behandeln Sie den Wert fürparam3
zuvalue3?param1=value4
.Kurze Antwort: tun Sie das nicht. Wird es wackelig. Und, wie ein server-Autor, sollte man immer überprüfen parameter-Werte sorgfältig und stellen Sie sicher, dass die Werte Sinn machen.