Problem mit encodeURL und "&"
city2000
- javascript
Hallo,
mit folgendem Code erstelle ich eine Statistiksatz
<script language="javascript">
<!--
var Adresse = encodeURI("http://www.domain.de/cgi-bin/statistik.pl?&site=test&plfo="+navigator.platform+"&cook="+navigator.cookieEnabled+"&scrw="+screen.width+"&scrh="+screen.height+"&fbtf="+screen.colorDepth+"&pxtf="+screen.pixelDepth+"&url="+document.URL+"&lang="+navigator.language+"&refe="+document.referrer+"&usag="+navigator.userAgent+"&brow="+navigator.appName+"&brvr="+navigator.appVersion+"&java="+navigator.javaEnabled());
document.write("<img src="" + Adresse + "" width=1 height=1 border=0>");
//-->
</script>
Das encodeing wurde mir geraten, damit dir Leerzeichen escaped werden. So weit läuft das auch, aber jetzt habe ich noch zwei Probleme:
1. Sobald das JS-Objekt document.referrer das Zeichen "&" enthält, werden die Daten abgeschnitten, so daß ich den Referrer immer ohne Parameter erhalte
2. encodeURI funktioniert nicht unter IE5.0
Was muss ich tun, damit beide Fälle trotzdem funktionieren?
Danke und Gruss
hi,
mit folgendem Code erstelle ich eine Statistiksatz
ach, mal wieder die datensammelwut-fraktion ... na ja, wenn's glücklich macht.
- Sobald das JS-Objekt document.referrer das Zeichen "&" enthält, werden die Daten abgeschnitten, so daß ich den Referrer immer ohne Parameter erhalte
natürlich, selfhtml zählt doch in der auflistung der zeichen, die _nicht_ maskiert werden, das & eindeutig mit auf.
aber du musst es an der stelle ja nicht nur einfach kodieren, als &, sondern gleich "zwei mal" - &amp;
btw: unter encodeURI() wird eine funktion genannt, die noch ein bisschen mehr kodiert ...
- encodeURI funktioniert nicht unter IE5.0
na so'n pech aba auch :-)
dann musst du dir wohl über suchen/ersetzen selbst eine lösung basteln, wenn du dieses datensammel-feature für so essentiell hältst, dass es auch im IE 5 funktionieren soll.
gruß,
wahsaga
- encodeURI funktioniert nicht unter IE5.0
na so'n pech aba auch :-)
dann musst du dir wohl über suchen/ersetzen selbst eine lösung basteln, wenn du dieses datensammel-feature für so essentiell hältst, dass es auch im IE 5 funktionieren soll.
oder http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#escape verwenden.
Struppi.
Hallo,
<script language="javascript">
<script type="text/javascript" language="javascript">
<!--
var Adresse = encodeURI("http://www.domain.de/cgi-bin/statistik.pl?"
+navigator.platform +"&!&"
+navigator.cookieEnabled+"&!&"
+screen.width +"&!&"
+screen.height +"&!&"
+screen.colorDepth +"&!&"
+screen.pixelDepth +"&!&"
+document.URL +"&!&"
// unnötig, da im HTTP-Request enthalten
+navigator.language +"&!&"
+document.referrer +"&!&"
+navigator.userAgent +"&!&"
// unnötig, da im HTTP-Request enthalten
+navigator.appName +"&!&"
+navigator.appVersion +"&!&"
+navigator.javaEnabled());
document.write("<img src="" + Adresse + "" width=1 height=1 border=0>");
//-->
</script>
Deine Paramerter sind in einer festen Reihenfolge. Du kannst also auf Serverebene mit einer vergleichbaren Variable $_SERVER['QUERY_STRING'] arbeiten und sie wie im Bsp. nach einem String "&!&" aufsplitten, das scheint mir etwas manipulationssicher, als Dein script per GET mit einzelnen Parametern zu bombardieren, die beim Betrachen der Statistiken immer nette Fragezeichen im Hirn hinterlassen ;). Mit einer Logik, die die Statistik vor solchen Angriffen schützt, solltest Du Dein Script auch noch ausstatten.
- Sobald das JS-Objekt document.referrer das Zeichen "&" enthält, werden die Daten abgeschnitten, so daß ich den Referrer immer ohne Parameter erhalte
Somit ist dies ebenfalls gegenstandslos.
- encodeURI funktioniert nicht unter IE5.0
Was muss ich tun, damit beide Fälle trotzdem funktionieren?
Arbeite mit replace und nimm hin, daß es ein mögliches Modell IE 3.x oder Mozilla 3.x nicht packt!
Gruß aus Berlin!
eddi