phpbar.de logo

Mailinglisten-Archive

[php] [OT] URL Argument Separator: ;

[php] [OT] URL Argument Separator: ;

Sebastian Mendel lists at sebastianmendel.de
Fre Mar 24 10:36:20 CET 2006


Hi Martin,

Martin Adler schrieb:
> Hallo Sebastian,
> 
> Ich habe leider auch keine Lösung für *get Forms* gefunden.
> Jedoch möchte ich bezgl. dieser Problematik hierauf verweisen:
> 
> "PHP supports changing the argument separator to the W3C-suggested
> semi-colon through the arg_separator .ini directive. Unfortunately most
> user agents do not send form data in this semi-colon separated format. A
> more portable way around this is to use & instead of & as the
> separator. You don't need to change PHP's arg_separator for this. Leave
> it as &, but simply encode your URLs using htmlentities() or
> htmlspecialchars()."
> 
> http://de2.php.net/urlencode

Das Handbuch ist immer das erste wo ich schaue ... dann Google ... dann
die Liste ... ;-)

Und mit "A more portable way around this" zielt das Handbuch wohl eher
auf Applikation ab die auf mehreren Servern laufen - ist aber nicht der
Fall.

Viel wichtiger finde ich aber den Satz davor:

"Note: Be careful about variables that may match HTML entities. Things
like &amp, &copy and &pound are parsed by the browser and the actual
entity is used instead of the desired variable name. This is an obvious
hassle that the W3C has been telling people about for years. The
reference is here: http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2."

Und das W3C zählt bei mir eh mehr wenn es um Internet-Standards (oder
Recommendations) geht als das PHP-Handbuch.


> Vieleicht hilft dir das. Leider Weiß ich nicht wieso du dich für *;*
> entschieden hast

Weil es wesentlich unproblematischer ist mit ; anstelle von & zu
arbeiten - man muss z. B. nicht mehr unterscheiden ob eine URL als Link
(also mit &) oder als HTTP-Header (also mit &) geschrieben werden
muss. Ebenso in JavaScripts.


> anstatt den CGI Standard &.

Wo steht dieser CGI-Standard? Und warum sollte ich mich an diesen
CGI-Standard halten wenn ich gar kein CGI verwende?


> Wenn es lediglich um einen
> Validitätsanspruch geht wäre nichts weiter zu tun, als deine urls in
> A-Tags (usw.) mit & zu bauen bzw. htmlentities/htmlspecialchats auf
> diese urls anzusetzen.

Und Valid sind die Seiten sowieso, vorher mit &(amp;) und jetzt mit ;
genauso - und jetzt sogar mit weniger Aufwand und Code. Außerdem sehen
die URLs im Code/Templates jetzt übersichtlicher aus.

Es funktioniert ja auch alles ohne Probleme - es ist nur ein
'Schönheitsfehler'


-- 
Sebastian Mendel

www.sebastianmendel.de
www.sf.net/projects/phpdatetime | www.sf.net/projects/phptimesheet

php::bar PHP Wiki   -   Listenarchive