Mehrfach-Import von GET verhindern
Ich übernehme Variablen aus der URL mit
parse_str($_SERVER['QUERY_STRING']);
Wenn das in einem includierten Script nochmal austaucht wird die
Variable natürlich 2x importiert. Bei Skalaren kein Problem. Aber
arrays werden dann verdoppelt:
...script.php?arr[]=1&arr[]=2
ergibt dann:
[0] => 1
[1] => 2
[2] => 1
[3] => 2
Habt ihr 'ne Idee wie man das verhindern kann - ohne den ganzen Code
umzukrempeln? Vielleicht mit einem "magischen Schalter" in der php.ini?
Peter
Re: Mehrfach-Import von GET verhindern
Peter Schleif wrote:
> parse_str($_SERVER['QUERY_STRING']);
Ich verstehe Deine Beweggründe für sowas nicht. Aber wenn Dus unbedingt
so haben willst:
function parse_querystring() {
if (defined('QUERYSTRING_PARSED')) return;
define ('QUERYSTRING_PARSED', true);
parse_str($_SERVER['QUERY_STRING']);
}
die paar Aufrufe von parse_str sind dann schnell durch die neue Funktion
ersetzt.
MfG, Ulf
--
_,
_(_p> Ulf [Kado] Kadner
\<_)
^^
Re: Mehrfach-Import von GET verhindern
Hallo!
>
> Ich übernehme Variablen aus der URL mit
>
> parse_str($_SERVER['QUERY_STRING']);
>
> Wenn das in einem includierten Script nochmal austaucht wird die
> Variable natürlich 2x importiert. Bei Skalaren kein Problem. Aber
> arrays werden dann verdoppelt:
>
Ich hoffe deine Frage richtig zu verstehen.
Wie wäre es statt mit include mit include_once?
Das sollte auch einfach im Code zu finden sein.
Olaf
Re: Mehrfach-Import von GET verhindern
Ulf Kadner wrote:
> function parse_querystring() {
> if (defined('QUERYSTRING_PARSED')) return;
> define ('QUERYSTRING_PARSED', true);
> parse_str($_SERVER['QUERY_STRING']);
> }
oder halt den 2. Parameter von Parse_str nutzen.
MfG, Ulf
--
_,
_(_p> Ulf [Kado] Kadner
\<_) Mitglied der Freizeitvögel? ;-)
^^
Re: Mehrfach-Import von GET verhindern
Ulf [Ingrid] Kadner wrote:
> function parse_querystring() {
> if (defined('QUERYSTRING_PARSED')) return;
> define ('QUERYSTRING_PARSED', true);
> parse_str($_SERVER['QUERY_STRING']);
> }
Ich sehe gerad das das so auch garnicht geht, da parse_str nur im
jeweiligen aktuellen scope die Variablen registriert. Aber wie bereits
angedeutet. Das ist der wohl schlechteste Weg wenn man parsestr nutzt.
Sag doch mal was genau Du machst. Wie kommt diese Notwendigkeit
zustande? Im bin mir sicher das es eine bessere Möglichkeit gibt. (Meist)
MfG, Ulf
--
_,
_(_p> Ulf [Kado] Kadner
\<_)
^^
Re: Mehrfach-Import von GET verhindern
Olaf Schinkel schrieb:
>
> Wie wäre es statt mit include mit include_once?
Das verhindert aber auch nicht das erneute parsen des Query-Strings,
wenn das include-Script noch nicht inkludiert wurde, der String aber
bereits 1x geparsed wurde.
Peter
Re: Mehrfach-Import von GET verhindern
Ulf Kadner schrieb:
>
>
> Sag doch mal was genau Du machst. Wie kommt diese Notwendigkeit
> zustande?
Es steht so im Code einiger Projekte, den ich vor ca. drei Jahren auf
Wunsch des Kunden von einem anderen Programmierer übernehmen musste.
Die Projekte liefen einigermaßen stabil, darum hab' ich sie einfach so
gelassen. Erst jetzt führte der doppelte/dreifache Import der Array zu
Problemen.
Vermutlich ist es am besten alle Vorkommen von
parse_str($_SERVER['QUERY_STRING']);
durch
import_request_variables("G");
zu ersetzen.
Peter
Re: Mehrfach-Import von GET verhindern
Peter Schleif schrieb:
> Olaf Schinkel schrieb:
>> Wie wäre es statt mit include mit include_once?
>
> Das verhindert aber auch nicht das erneute parsen des Query-Strings,
> wenn das include-Script noch nicht inkludiert wurde, der String aber
> bereits 1x geparsed wurde.
parse.php:
parse_str($_SERVER['QUERY_STRING']);
alle anderen .php:
include_once('parse.php');
klar wird dadurch ein mehrfaches parsen verhindert. Das dürfte doch eine
ziemlich einfache Lösung für dein Problem sein. Musst nur alle
vorkommenden parse Befehle durch das include_once der Datei ändern.
--
Mit freundlichen Grüßen,
Christoph Herrmann
http://dragonprojects.de/
Re: Mehrfach-Import von GET verhindern
Hallo!
>
> parse.php:
> parse_str($_SERVER['QUERY_STRING']);
>
> alle anderen .php:
> include_once('parse.php');
>
> klar wird dadurch ein mehrfaches parsen verhindert. Das dürfte doch
> eine ziemlich einfache Lösung für dein Problem sein. Musst nur alle
> vorkommenden parse Befehle durch das include_once der Datei ändern.
Das meinte ich.
Hatte ich mich so unverständlich gegenüber dem OP ausgedrückt?
Olaf
Re: Mehrfach-Import von GET verhindern
Olaf Schinkel schrieb:
> Das meinte ich.
> Hatte ich mich so unverständlich gegenüber dem OP ausgedrückt?
anscheinend, aber ich habe es zumindest kapiert was du wolltest und es
halt nochmal anschaulich erklärt. ;)
--
Mit freundlichen Grüßen,
Christoph Herrmann
http://dragonprojects.de/
Re: Mehrfach-Import von GET verhindern
Olaf Schinkel schrieb (das Original, auf das Du antwortest, ist bei mir
nicht aufgetaucht, deshalb antworte ich mal auf Dein Posting):
>> Ich übernehme Variablen aus der URL mit
>>
>> parse_str($_SERVER['QUERY_STRING']);
Ich benutze $_GET[].
Gruß. Claus