max: zwei Fragezeichen in einem Link ?

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

  1. 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.

    1. 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

      1. 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

        1. 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!?

      2. 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.

      3. 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

        1. 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

          1. 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

            1. 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;
               }

              $oldlink=0;

              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);
              }
              ################################################################################

          2. 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