andreasf: redirect über ID script

wer kenn denn nicht solche scripts bei den man in einer datei paar links gespeichert hat und dann per script diese daten abrufen will... bei mir klappts nur nicht so richtig:

#!/usr/bin/perl
use CGI;
use CGI::Carp qw(fatalsToBrowser);
my $query = new CGI;
my $ID = $query->param("ID");
open (REDIRURL, "<redirconf.dat") || die "datei nicht gefunden ";
@redir = split /::/, <REDIRURL>;
close(REDIRURL);
if ("$ID" eq "$redir[0]") {
print "Location: $redir[1]\n\n";
}
exit;

und zwar will ich über einen link http://www.domain.de/cgi-bin/redir.cgi?ID=1 dann den zugehörigen link für die nr. 1 haben.
aber ich weis nicht wie ich die zeilen einzeln ansprechen kann z.b. mit ID nr. 2
oder kann man sich irgendwo so einscript runterladen so zum vergeleich-lernnen-testen?
danke

  • andreas f. -
  1. #!/usr/bin/perl
    use CGI;
    use CGI::Carp qw(fatalsToBrowser);
    my $query = new CGI;
    my $ID = $query->param("ID");
    open (REDIRURL, "<redirconf.dat") || die "datei nicht gefunden ";
    @redir = split /::/, <REDIRURL>;
    close(REDIRURL);

    Das erscheint mir falsch:

    if ("$ID" eq "$redir[0]") {
    print "Location: $redir[1]\n\n";
    }

    IMHO sollte dies besser sein:

    if ($ID <= $#redir) {
      print "Location: $redir[$ID]\n\n";
    } else {
      print "Location: $redir[$#redir]\n\n";
    }

    exit;

    Nämlich dann, wenn in der Datei redirconf.dat nur URLs stehen
    und ID die Zeile definiert.

    Ciao,
     Wolfgang

    P.S.: Das Location ist etwas mangelhaft, da muesste noch etwas mehr stehen, aber dazu schau mal in die Dokus im Web dazu.

    1. bis dahin ja schon ok, aber das script liest immer nur noch die erste zeile in der datenbank ab.
      also bei dem links
      http://www.domain.de/cgi-bin/redir.cgi?ID=1
      http://www.domain.de/cgi-bin/redir.cgi?ID=2
      http://www.domain.de/cgi-bin/redir.cgi?ID=3
      ...
      liest das script trotzdem nur die erste zeile
      kann man das nicht irgdenwie realisieren das man zeilenzahlen ansteuern kann?

      • andreas f. -
      1. Hi Andreas,

        aber das script liest immer nur noch die erste zeile

        welches Skript?

        kann man das nicht irgdenwie realisieren das man zeilenzahlen
        ansteuern kann?

        Genau das hat xwolf Dir gerade eingebaut:

        Wenn ID kleiner oder gleich der Anzahl der vorhandenen Links,

        • dann leite zum entsprechenden Link weiter ([$ID]!),
        • ansonsten zum letzten.
          (An dieser Stelle kannst Du ggf. eine andere Reaktion vorsehen, beispiels-
           weise eine Fehlermeldung; Deine Aufgabenstellung war unterdefiniert,
           Wolfgang mußte also raten.)

        Viele Grüße
              Michael

  2. sorry, funktioniert doch... hab nur ein klitze kleines detail vergessen.

    also DANKE es funktioniert

    • andreas f. -