zwei Fragezeichen in einem Link ?
max
- html
0 Björn Höhrmann0 %3F funktioniert nicht
max0 Mase0 Björn Höhrmann0 Sönke Tesch0 max0 Christian Seiler0 max
0 Sönke Tesch
Hallo,
ich setze einen Linkcounter ein, dem ich den eigentlichen Link übergebe.
Der Linkcounter hat dieses Format
http://mydomain.de/cgi-bin/clickcount/clickcount.pl?
Dhinter hänge ich den eigentlichen Link. Leider beinhalten die meisten Links auch ein Fragezeichen (News-Links) und das funktioniert nicht.
Der Link würde also so aussehen:
http://mydomain.de/cgi-bin/clickcount/clickcount.pl?http://www.aerzteblatt.de/v4/news/news.asp?id=9972
Kann man da was machen ?
Vielen Dank
Max
Der Link würde also so aussehen:
http://mydomain.de/cgi-bin/clickcount/clickcount.pl?http://www.aerzteblatt.de/v4/news/news.asp?id=9972
Kann man da was machen ?
Das findest du nur wenig weiter unten, http://forum.de.selfhtml.org/?m=125748&t=22612.
Hallo,
vielen Dank für die Antwort.
Ich hatte diesen Eintrag schon gelesen. Dort wird erklärt, wie das zweite Fragezeichen maskiert wird wenn es keine besondere Bedeutung haben soll. In meinem Fall hat es aber eine besondere Bedeutung (Abfrage). Wenn ich es maskiere verschwindet es genauso als wenn ich es nicht maskiere.
Noch eine Idee ?
Danke
Max
Hi,
müßte es nicht klappen wenn du das zweite Fragezeichen einfach zwischen zwei ausgeschriebenen Leerzeichen setzt ?
dann hängt es ja nicht mehr direkt dran...
grüsse
Mase
müßte es nicht klappen wenn du das zweite Fragezeichen einfach zwischen zwei ausgeschriebenen Leerzeichen setzt ?
dann hängt es ja nicht mehr direkt dran...
Leerzeichen sind in URIs nicht erlaubt!?
Ich hatte diesen Eintrag schon gelesen. Dort wird erklärt, wie das zweite Fragezeichen maskiert wird wenn es keine besondere Bedeutung haben soll. In meinem Fall hat es aber eine besondere Bedeutung (Abfrage).
Nein, das erste Fragezeichen hat diese besondere Bedeutung, das zweite - so habe ich dich verstanden - ist Teil der Daten.
Wenn ich es maskiere verschwindet es genauso als wenn ich es nicht maskiere.
Dann hast du definitiv was falsch gemacht.
Ich hatte diesen Eintrag schon gelesen. Dort wird erklärt, wie das zweite Fragezeichen maskiert wird wenn es keine besondere Bedeutung haben soll. In meinem Fall hat es aber eine besondere Bedeutung (Abfrage). Wenn ich es maskiere verschwindet es genauso als wenn ich es nicht maskiere.
Was heißt, es verschwindet? Der Parameterteil sollte mit bereits genannten Funktionen wie urlencode() oder escape() maskiert werden. Punkt. Eventuell mußt Du am anderen Ende die Parameter wieder auspacken (urldecode() bzw. unescape()).
Aber wie aus einer URL etwas verschwinden kann, mußt Du nochmal erklären.
Gruß,
soenk.e
Was heißt es verschwindet ? Na, es verschwindet halt beim Aufruf des Links.
Ich geb hier mal den echten Link an - bitte einfach mal testen um zu sehen wie ein Fragezeichen verschwindet !
http://mega.cdaweb.de/cgi-bin/clickcount/clickcount.pl?http://www.aerzteblatt.de/v4/news/news.asp?id=9972
Wär mir echt wichtig.
Danke für das Bemühen
Max
Hallo,
http://mega.cdaweb.de/cgi-bin/clickcount/clickcount.pl?http://www.aerzteblatt.de/v4/news/news.asp?id=9972
Wie ich sehe, machst Du einen HTTP-Redirect mit einem PERL-Script. Zeig doch mal den Source-Code deines Scripts, dann können wir dir sagen, wo du was einsetzen musst, damit das auch mit maskierten Fragezeichen klappt. (mit unmaskierten klappts nicht, siehst du ja selbst)
Grüße,
Christian
Ok,
das ist das Script von Wolfgang Wiese - hab mir schon gedacht, dass es daran liegt. Damit sind meine Möglichkeiten dann erschöpft. Meine Perl-Kenntnisse beschränkgen sich auf "Downloaden" und "Pfade anpassen"
Here it comes:
$LOCK_SH = 1;
$LOCK_EX = 2;
$LOCK_NB = 4;
$LOCK_UN = 8;
$notignore=1;
if ($ENV{'REQUEST_METHOD'} eq "GET") { $buffer = $ENV{'QUERY_STRING'}; }
else { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
if (!($buffer)) {$buffer=substr($ENV{'PATH_INFO'},1,length($ENV{'PATH_INFO'}));}
if (!($buffer)) {$buffer=@ARGV; }
$buffer =~ tr/+//;
$buffer =~ tr/ //;
$buffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$buffer =~ s/[\x00-\x20<>|;()$^+!^[]?"'`]//g;
if (!($buffer)) {&Redirect($ALTLINK);}
for ($i=0;$i<=$#ignore_host;$i++) {
if ($ignore_host[$i] eq $ENV{'REMOTE_ADDR'}) {$notignore=0;}
}
if ($notignore) {&WriteLog;}
&Redirect($buffer);
exit(0);
#################### Subroutines ########################
sub WriteLog {
my ($i)=0;
my ($oldlink)=0;
my ($name,$version);
if (-r $LOGFILE) {
open(f1,"$LOGFILE") || &Redirect($ALTLINK);
while(<f1>) {
chop($_);
$clickinfo[$i++]=$_;
if ($_ =~ /^$buffer/) {
$oldlink=1;
}
}
close f1;
}
if ($oldlink==0) {
open(f1,">>$LOGFILE") || &Redirect($ALTLINK);
flock(f1,$LOCK_EX);
seek(f1, 0, 2);
print f1 "$buffer, 1\n";
flock(f1,$LOCK_UN);
close f1;
} else {
open(f1,">$LOGFILE") || &Redirect($ALTLINK);
flock(f1,$LOCK_EX);
seek(f1, 0, 2);
for ($i=0;$i<=$#clickinfo;$i++) {
if ($clickinfo[$i] =~ /^$buffer/) {
($page,$hit)=split(/, /,$clickinfo[$i]);
$hit++;
print f1 "$page, $hit\n";
} else {
print f1 "$clickinfo[$i]\n";
}
}
flock(f1,$LOCK_UN);
close f1;
}
}
################################################################################
sub Redirect {
my($url)=@_;
print "Status: 302 Found\n";
print "Location: $url\n";
print "URI: <$url>\n";
print "Content-type: text/html\r\n\r\n";
exit(1);
}
################################################################################
Was heißt es verschwindet ? Na, es verschwindet halt beim Aufruf des Links.
Kann ich hier nicht nachvollziehen, Fragezeichen kommt problemlos an: http://kino-fahrplan.de/privat/st/self/test1.php bzw. http://kino-fahrplan.de/privat/st/self/test2?manche+m�gen's+hei�%3F+aber+sicher!.
Gruß,
soenk.e