PHP das automatische URL Encoding abgewöhnen bzw te

PHP das automatische URL Encoding abgewöhnen bzw te

am 23.04.2008 18:19:10 von Patrick Dinger

Hallo Zusammen,
mein Ziel ist momentan, ein Script welches aus mathematischen Formeln
Bilder generiert in ein Forum einzubinden. Dazu habe ich leider nur
die Möglichkeit, die eingegebene Formel an die URL anzuhängen.

Beispiel:

http://server.de/mathe?formel=3D(3/2)/2-3

Das Funktioniert auch soweit ganz gut. Das Problem ist: Die Addition,
also das Pluszeichen (+) wird verschluckt. Ganz logisch eigentlich,
den + wird als Space codiert und entsprechend ausgeblendet.

http://server.de/mathe?formel=3D(3/2)/2-3+3 - funktioniert nicht!

Die Frage ist: Wer ist jetzt der Böse? Der Browser, weil er die URL
richtig - für mich jedoch falsch - umcodiert? Oder PHP?

Wenn PHP schuld ist, kann ich dieses automatische Umcodierung temporär
deaktivieren, sodass mir das + erhalten bleibt?

Wie gesagt, ich habe nicht die Möglichkeit den Link auf Seiten des
Forums vorher richtig zu kodieren.

Meine verwendete Methode ist hier dokumentiert:
http://area51.phpbb.com/phpBB/viewtopic.php?f=3D3&t=3D28492& p=3D192557#p1925=
57


Danke & Gruss,
Patrick Dinger

Re: PHP das automatische URL Encoding abgewöhnen bzw temporär deaktivieren

am 23.04.2008 18:32:02 von Carsten Wiedmann

Patrick Dinger schrieb:
> mein Ziel ist momentan, ein Script welches aus mathematischen Formeln
> Bilder generiert in ein Forum einzubinden. Dazu habe ich leider nur
> die Möglichkeit, die eingegebene Formel an die URL anzuhängen.
>=20
> Das Funktioniert auch soweit ganz gut. Das Problem ist: Die Addition,
> also das Pluszeichen (+) wird verschluckt. Ganz logisch eigentlich,
> den + wird als Space codiert und entsprechend ausgeblendet.
>=20
> http://server.de/mathe?formel=3D(3/2)/2-3+3 - funktioniert nicht!
>=20
> Die Frage ist: Wer ist jetzt der Böse? Der Browser, weil er die URL
> richtig - für mich jedoch falsch - umcodiert? Oder PHP?

Deine Forumssoftware, weil sie die URIs nicht korrekt kodiert im HTML aus=
gibt.

(Ansonsten verhält sich dein Browser einfach korrekt, und macht aus ein=
em=20
einfachen "+" ein " ".)

Gruß
Carsten

Re: PHP das automatische URL Encoding abgewöhnen bzw temporär deaktivieren

am 23.04.2008 18:52:14 von Joerg Behrens

Patrick Dinger schrieb:
> Hallo Zusammen,
> mein Ziel ist momentan, ein Script welches aus mathematischen Formeln
> Bilder generiert in ein Forum einzubinden. Dazu habe ich leider nur
> die Möglichkeit, die eingegebene Formel an die URL anzuhängen.
>=20
> Beispiel:
>=20
> http://server.de/mathe?formel=3D(3/2)/2-3
>=20
> Das Funktioniert auch soweit ganz gut. Das Problem ist: Die Addition,
> also das Pluszeichen (+) wird verschluckt. Ganz logisch eigentlich,
> den + wird als Space codiert und entsprechend ausgeblendet.
>=20
> http://server.de/mathe?formel=3D(3/2)/2-3+3 - funktioniert nicht!
>=20
> Die Frage ist: Wer ist jetzt der Böse? Der Browser, weil er die URL
> richtig - für mich jedoch falsch - umcodiert? Oder PHP?

http://example.com/?formel=3D%283%2F2%29%2F2-3%2B3

> Wenn PHP schuld ist, kann ich dieses automatische Umcodierung temporä=
r
> deaktivieren, sodass mir das + erhalten bleibt?
>=20
> Wie gesagt, ich habe nicht die Möglichkeit den Link auf Seiten des
> Forums vorher richtig zu kodieren.

> Meine verwendete Methode ist hier dokumentiert:
> http://area51.phpbb.com/phpBB/viewtopic.php?f=3D3&t=3D28492& p=3D192557#=
p192557

Dann macht die Software etwas falsch.

Gruss
Joerg

--=20
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de

Re: PHP das automatische URL Encoding abgewöhnen bzw temporär deaktivieren

am 23.04.2008 19:17:11 von steffen bruentjen

Patrick Dinger wrote:
>
>mein Ziel ist momentan, ein Script welches aus mathematischen Formeln
>Bilder generiert in ein Forum einzubinden. Dazu habe ich leider nur
>die Möglichkeit, die eingegebene Formel an die URL anzuhängen.
>
>Beispiel:
>
>http://server.de/mathe?formel=(3/2)/2-3
>
>Das Funktioniert auch soweit ganz gut. Das Problem ist: Die Addition,
>also das Pluszeichen (+) wird verschluckt. Ganz logisch eigentlich,
>den + wird als Space codiert und entsprechend ausgeblendet.
>
>http://server.de/mathe?formel=(3/2)/2-3+3 - funktioniert nicht!
>
>Die Frage ist: Wer ist jetzt der Böse? Der Browser, weil er die URL
>richtig - für mich jedoch falsch - umcodiert? Oder PHP?

Du bist der böse, weil Du das '+' fälschlicherweise nur anhängst und
damit ein Leerzeichen ausdrückst.


>Wenn PHP schuld ist, kann ich dieses automatische Umcodierung temporär
>deaktivieren, sodass mir das + erhalten bleibt?

Schaue Dir den Inhalt von $_SERVER['QUERY_STRING'] an.

Die beste Möglichkeit wäre, das Ergebnis von urlencode($formel) an die
url anzuhängen. Da Du das nicht kannst, musst Du den Query-String
verwenden. Benutze nach Möglichkeit nicht urldecode() oder
String-Ersetzungen.


Schöne Grüße, Steffen

--
Das Tastaturlayout für Programmierer:
http://eurkey.steffen.bruentjen.eu

Re: PHP das automatische URL Encoding abgewöhnen bz

am 23.04.2008 19:24:18 von Patrick Dinger

On 23 Apr., 19:17, steffen bruentjen
wrote:
> Schaue Dir den Inhalt von $_SERVER['QUERY_STRING'] an.

Das war das fehlende Puzzle-Stück. Vielen Dank, klappt Prima.

Btw. Ich weis das die verwendete Methode ziemliches Gemurkse ist, aber
geht halt in dem Fall leider nicht anderst =3D)


Gruß,
Patrick

Re: PHP das automatische URL Encoding abgewöhnen bzw temporär deaktivieren

am 23.04.2008 19:27:00 von helmut

Hallo, Carsten,

Du (carsten_sttgt) meintest am 23.04.08:

>> http://server.de/mathe?formel=(3/2)/2-3+3 - funktioniert nicht!


Funktioniert


http://server.de/mathe?formel=(3/2)/2-3-(-3)

denn?

Viele Gruesse!
Helmut

Re: PHP das automatischeURL Encoding abgewöhnen bzw temporärdeaktivieren

am 24.04.2008 12:55:49 von Frank Arthur

Patrick Dinger schrieb:

> http://server.de/mathe?formel=(3/2)/2-3+3 - funktioniert nicht!

$url = 'http://server.de/mathe?formel=' . base64_encode ('(3/2)/2-3+3');

Und beim Empfang base64_decode.