Parameterübergabe per URL funktioniert nicht mit jedem Browser
Michael Lehmann
- php
Hallo Leute!
Ich habe folgendes Problem: es sollen mehrere Variablen von
einem PHP-Script an ein anderes Script (ASP, daher fällt eine
Session wohl aus, oder?) Übergeben werden. Ich habe das
per Anhängen an die URL realisiert, natürlich 'URL-encoded'.
Leider funktioniert das bei mir nicht mit jedem Browser.
Netscape 4.7x geht, Mozilla geht, mit dem
Internet-Explorer 6.0.2800 gehts auch, aber mit allen (?)
geringfügig älteren IE Versionen klappt es nicht,
etwa mit 6.0.2600, oder auch einer 5er.
Es kommt dort keine der Variablen im zweiten Script an.
Hatte vielleicht schon jemand anders dieses Problem,
und weiss vielleicht sogar eine Lösung? im Archiv hab ich
leider nichts gefunden.
Ciao
Mike
Hallo Mike,
Hatte vielleicht schon jemand anders dieses Problem,
und weiss vielleicht sogar eine Lösung? im Archiv hab ich
leider nichts gefunden.
Warum zeigst Du uns nicht mal einen Codeausschnitt, der nicht funktioniert? (Ein <a>-Element würde vmtl. ausreichen)
Christian
Hallo Mike,
Hatte vielleicht schon jemand anders dieses Problem,
und weiss vielleicht sogar eine Lösung? im Archiv hab ich
leider nichts gefunden.Warum zeigst Du uns nicht mal einen Codeausschnitt, der nicht funktioniert? (Ein <a>-Element würde vmtl. ausreichen)
Wie ist das mit dem <a>-Element in diesem Zusammenhang gemeint?
Ansonsten geht es um folgendes:
Am Ende des PHP-Scripts steht:
...
$variable=urlencode($variable);
$andere=urlencode($andere);
header ("Location: http://www.test.de/script/test.asp?vriable=$variable&andere=$andere");
Im richtigen Script sind es allerdings insgesamt 19 Variablen
die auf diese Weise übergeben werden.
in "test.asp" kommt allerdings nichts an, wie gesagt, nur bei
manchen IE Versionen, mit Mozilla funktioniert alles bestens.
Ciao
Mike
Hallo Mike,
Im richtigen Script sind es allerdings insgesamt 19 Variablen
die auf diese Weise übergeben werden.
in "test.asp" kommt allerdings nichts an, wie gesagt, nur bei
manchen IE Versionen, mit Mozilla funktioniert alles bestens.
Oh oh. Ich fürche, Du bist an die Grenzen der Länge des GET-Strings gekommen. Der kann je nach Browser nur eine bestimmte Menge an Zeichen aufnehmen. (Im Archiv finden sich die genauen Längen, ich selbst würde ihn aber nicht länger als 256 Zeichen machen)
Lösungsmöglichkeiten:
1. Paramter verkürzen, also z.B. k=blabla statt kapitel=blabla nehmen. (hat seine Grenzen)
2. Sessions mit anderen Methoden simulieren
Zu 2: Sowohl PHP als auch ASP verstehen WDDX. Das ist ein XML-basiertes Datenaustauschformat. Für PHP: http://de3.php.net/manual/de/function.wddx-serialize-vars.php (und andere) Bei ASP müßtest Du etwas suchen, aber das unterstützt das auch.
Du müßtest dann sowohl in PHP als auch in ASP den ganzen Lowlevel-Session-Kram selbst schreiben. Das ist ein haufen Aufwand, aber das einzig brauchbare, was mir im Moment einfällt.
Diese Art von Sessions funktionieren natürlich nur, wenn sowohl PHP als auch ASP auf gemeinsame Resourcen (die möglichst nicht öffentlich sind) zugreifen (d.h. lesen und schreiben) können.
Christian
- Sessions mit anderen Methoden simulieren
Ja, das werde ich dann wohl mal versuchen.
Trotzdem danke schonmal für die Tipps.
Ciao
Mike
Hallo Mike,
- Sessions mit anderen Methoden simulieren
Ja, das werde ich dann wohl mal versuchen.
Mich selbst würde so etwas auch mal interessieren. Eventuell könnte man sogar einen Teil des Session-Mechanismus von PHP wiederverwenden und an gezielten Stellen eingreifen, dort, wo halt Kommunikation notwendig ist, also Serialisierung (ich sehe gerade, dass PHP Serialisierung mit WDDX direkt unterstützt, nämlich in der ini-Einstellung session.serialize_handler) und Datenhaltung. (da müßte man sich was überlegen)
Christian
Moin!
header ("Location: http://www.test.de/script/test.asp?vriable=$variable&andere=$andere");
Im richtigen Script sind es allerdings insgesamt 19 Variablen
die auf diese Weise übergeben werden.
Und wie viele Daten werden da so übergeben? In Kilobyte? Bedenke, dass es zwar im HTTP-Standard keine Begrenzung für die Länge einer URL (und deren Parameter) gibt, in der realen Implementierung von Browsern aber sehr wohl.
Das Verhalten läßt darauf schließen, dass die älteren IEs irgendwie den Parameter abschneiden - vielleicht, weil er zu lang ist. "Zu lang" bedeutet in diesem Fall durchaus schon, dass eine Länge von 2, 4 oder 8 KB überschritten wird (Apache macht z.B. bei 8KB Schluß).
- Sven Rautenberg
Das Verhalten läßt darauf schließen, dass die älteren IEs irgendwie den Parameter abschneiden - vielleicht, weil er zu lang ist. "Zu lang" bedeutet in diesem Fall durchaus schon, dass eine Länge von 2, 4 oder 8 KB überschritten wird (Apache macht z.B. bei 8KB Schluß).
Das hatte ich auch vermutet, aber mein Teststring ist nur etwa 1k
lang, une mehr al 3k sollten es eigentlich nie werden.
Ciao
Mike