Ralph Segert: Routierende Textbanner

Hallo,

statt rouierende grafische Banner möchte ich verschiedene Textbanner per CGI und per Zufallsauswahl auf folgender Site einbinden lassen:  http://webgrafiker.de/gt/
Es handelt sich um die Textanzeigen unten und oben, die in Tabellen stehen und sozusagen meine Art der Banner sind (sie sind universal einsetzbar und stoeren den grafischen Stil einer Site nur wenig, sie lassen sich zudem leicht aendern und sind keineswegs aufdringlich).

Ich will diese routierenden Texte einsetzen, um nicht nur für meine Projekte ein wenig Werbung zu machen, sondern auch fuer die heissgeliebten Projekte meiner Webfreunde :-)

Gibt es fuer so etwas ein freies Script? Auf was muss ich achten?

Schoenen Gruss,
Ralph

  1. Hallo Ralph,

    Ich will diese routierenden Texte einsetzen, um nicht nur für meine Projekte ein wenig Werbung zu machen, sondern auch fuer die heissgeliebten Projekte meiner Webfreunde :-)
    Gibt es fuer so etwas ein freies Script? Auf was muss ich achten?

    Die ultimative Auswahl gibt's auf http://www.cgi-resources.com/Programs_and_Scripts/Perl/Advertisements/ - achten musst Du da wohl nur noch drauf, das beste zu bekommen <g>.

    viele Gruesse
      Stefan Muenz

    1. Die ultimative Auswahl gibt's auf

      Hallo Stefan,

      danke fuer den Tip :-)

      achten musst Du da wohl nur noch drauf, das beste zu bekommen <g>.

      Ich fuerchte auch. :-|

      Schoenen Gruss,
      Ralph

  2. hi!

    statt rouierende grafische Banner möchte ich verschiedene Textbanner per CGI und per
    Zufallsauswahl auf folgender Site einbinden lassen:  http://webgrafiker.de/gt/
    Es handelt sich um die Textanzeigen unten und oben, die in Tabellen stehen und sozusagen
    meine Art der Banner sind (sie sind universal einsetzbar und stoeren den grafischen Stil
    einer Site nur wenig, sie lassen sich zudem leicht aendern und sind keineswegs
    aufdringlich).
    Gibt es fuer so etwas ein freies Script? Auf was muss ich achten?

    Ich schätze, du willst oben und unten jeweils das gleiche Textbanner stehen haben. Das dürfte wohl das größte Problem sein. Ich würde für so ein Vorhaben kein Perl, sondern PHP3 verwenden.

    Wenn du nur Perl verwenden kannst, wäre es wohl am einfachsten, ein Skript zu schreiben, das den ganzen rechten Frame anzeigt:

    === cut ===
    #!/usr/bin/perl

    %p = getParam;
    $page = $p{'page'};

    print "Content-type: text/html\n\n";

    Datei mit den Bannern auslesen (ein Banner pro Zeile)

    open FILE, "<ads.txt";
    @ads = <FILE>;
    close FILE;

    zufälliges Banner auswählen

    $banner = $ads[rand @ads];

    Oberes Banner anzeigen

    print "$banner\n";
    print "---trennzeile---";

    Anzeige der eigentlichen Seite

    open FILE, "<$page";
    for (<FILE>)
    {
      print;
    }
    close FILE;

    Unteres Banner anzeigen

    print "---trennzeile---";
    print "$banner\n";

    sub getParam
    {
      if ($ENV{'REQUEST_METHOD'} eq "GET")
      {
        $EnvDaten = $ENV{'QUERY_STRING'};
      } else {
        read STDIN, $EnvDaten, $ENV{'CONTENT_LENGTH'};
      }

    for (split /&/, $EnvDaten)
      {
        my ($key, $value) = split /=/;
        $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9]{2})/pack("C", hex($1))/eg;
        $value =~ s/</</g;
        $value =~ s/>/>/g;
        $p{$key} = $value;
      }
      return %p;
    }

    === cut ===

    Du legst das Skript ins cgi-bin-Verzeichnis. Aufgerufen wird es folgendermaßen aus dem linken Frame:
      <a href="cgi-bin/script.pl?page=datei.html" target="rechter_frame">linktext/-bild</a>
    Wobei datei.html der Dateiname der Seite ist, die eigentlich angezeigt werden sollte.
    Achtung: datei.html muss der Dateiname der eigentlichen Datei relativ zum cgi-bin-Verzeichnis sein oder eine absolute Pfadangabe auf der Platte des Servers, nicht im Baum des http-Servers.

    Dann muss du noch eine Datei ads.txt im cgi-bin-Verzeichnis anlegen, in die du deine ganzen Textbanner schreibst, und zwar immer ein Banner pro Zeile. HTML kannst du darin natürlich auch verwenden.

    Ist zwar nicht sonderlich gut getestet, aber ich hoffe, es funktioniert. Ein wenig Perl wirst du wohl auch an deine eigenen Bedürfnisse anpassen können :-)

    bye, Frank!

    1. Hallo Frank,

      danke fuer die schnelle Hilfe und das Script :-) Ich werde es bei Gelegenheit ausprobieren und berichten, ob es klappt.
      Was mache ich denn mit Sites ohne Frames, die bei mir ja ueberwiegen? Siehe http://rare.de/krit/

      Ist zwar nicht sonderlich gut getestet, aber ich hoffe, es funktioniert. Ein wenig Perl wirst du wohl auch an deine eigenen Bedürfnisse anpassen können :-)

      Entweder man versteht Perl oder nicht, wenn nicht, sollte man lieber die Finger davon lassen, macht nur Aerger. Ich kann zwar HTML in Perl-Sripten modifizieren, aber die Sprache selbst ist mir ein Buch mit 7 Siegeln, da ich keine Programmierkenntnisse habe :-)

      Schoenen Gruss,
      Ralph

      1. hi!

        Was mache ich denn mit Sites ohne Frames, die bei mir ja ueberwiegen? Siehe
        http://rare.de/krit/

        Es funktioniert auch bei solchen Seiten. Natürlich sieht die Adresse dann etwas seltsam aus und ist länger ;))

        Wenn du nur einen Textbanner pro Seite hättest, wäre es einfacher, weil es dann per SSI zu realisieren wäre. Bei je einem Banner oben und unten müsste das Skript aber zweimal aufgerufen werden: es würde zwei verschiedene Zufallszahlen erzeugen und damit oben und unten verschiedene Banner darstellen.

        Ist zwar nicht sonderlich gut getestet, aber ich hoffe, es funktioniert. Ein wenig Perl wirst
        du wohl auch an deine eigenen Bedürfnisse anpassen können :-)
        Entweder man versteht Perl oder nicht, wenn nicht, sollte man lieber die Finger davon
        lassen, macht nur Aerger. Ich kann zwar HTML in Perl-Sripten modifizieren, aber die
        Sprache selbst ist mir ein Buch mit 7 Siegeln, da ich keine Programmierkenntnisse habe :-)

        Naja, mein Skript macht ja weiter nichts, als Text- oder HTML-Dateien auszulesen und dann wieder auszugeben. Und ich habe es kommentiert, was sonst bei meinen Skript eher ungewöhnlich ist :-))

        Mir ist übrigens nochwas bei meinem Skript aufgefallen: wenn in den geladenen HTML-Dateien ein "<head>...</head>"-Bereich vorkommt, wird der erst nach dem Textbanner geladen. Jetzt gibt es zwei Möglichkeiten:
        1. du verwendest für alle HTML-Dateien, die von dem Skript geladen werden, den gleichen Header und baust ihn fest ins Skript ein. Ist bei Frames ja nicht allzu schlimm (zb. wegen <title>).
        2. du legst parallel zu jeder Datei datei.html eine Datei datei.header.html und lädst diese vor dem einblenden des Textbanners (analog zur eigentlichen Datei).

        Und der ganze Aufwand nur, weil du den Banner oben und unten brauchst? Reicht es nicht, wenn er nur oben angezeigt wird? ;-))

        bye, Frank!

        1. hi!

          Wenn du nur einen Textbanner pro Seite hättest, wäre es einfacher, weil es dann per SSI zu realisieren wäre. Bei je einem Banner oben und unten müsste das Skript aber zweimal aufgerufen werden: es würde zwei verschiedene Zufallszahlen erzeugen und damit oben und unten verschiedene Banner darstellen.

          Naja, man koennte dem Script ja noch einen Parameter mitgeben, der ihm sagt, ob es fuer oben oder unten aufgerufen wird. Bei oben merkt es sich die neue Zufallszahl in einer Datei, bei unten liest es diese wieder aus und verwendet sie nochmal. Klar, kann zu Konflikten bei fast gleichzeitigen Requests kommen, aber das ist auf weniger stark frequentierten Servern eher unwahrscheinlich. Und wenn es doch mal passiert, ist es auch nicht so schlimm, dann hat man eben mal zwei verschiedene Banner auf der Seite.

          Und der ganze Aufwand nur, weil du den Banner oben und unten brauchst? Reicht es nicht, wenn er nur oben angezeigt wird? ;-))

          Tja, von nichts kommt nichts. Entweder man will es so oder man ergibt sich der Bequemlichkeit. ;-)  (Ich wuerde wahrscheinlich letzteres waehlen)

          Calocybe

        2. Und der ganze Aufwand nur, weil du den Banner oben und unten brauchst? Reicht es nicht, wenn er nur oben angezeigt wird? ;-))

          Wenn ich es recht ueberlege, reicht es auch vollkommen, wenn lediglich oben verschiedene Textbanner routieren. Das ist die wichtigste Stelle, was unten ist, hat ja kaum Bedeutung, da kaum jemand scrollt ;->

          Was muss ich dann rausschmeissen aus dem Script?

          Schoenen Gruss,
          Ralph

          1. hi!

            Und der ganze Aufwand nur, weil du den Banner oben und unten brauchst? Reicht es
            nicht, wenn er nur oben angezeigt wird? ;-))
            Wenn ich es recht ueberlege, reicht es auch vollkommen, wenn lediglich oben verschiedene
            Textbanner routieren. Das ist die wichtigste Stelle, was unten ist, hat ja kaum Bedeutung,
            da kaum jemand scrollt ;->
            Was muss ich dann rausschmeissen aus dem Script?

            Ich hoffe, du darfst SSI verwenden :-)
            === cut ===
            #!/usr/bin/perl

            Bin nicht sicher, ob das reinmuss. Evtl. rausschmeißen!

            print "Content-type: text/html\n\n";

            Datei mit den Bannern auslesen (ein Banner pro Zeile)

            open FILE, "<ads.txt";
            @ads = <FILE>;
            close FILE;

            zufälliges Banner auswählen

            $banner = $ads[rand @ads];

            Banner ausgeben

            print "$banner\n";
            print "---trennzeile---";
            === cut ===

            Du legst das Skript ins cgi-bin-Verzeichnis. In dem Verzeichnis legst du dann auch eine Datei ads.txt an, die jeweils ein Banner pro Zeile enthält.
            Aufrufen kannst du es dann in einer HTML-Datei durch folgendes SSI-Kommando:
              <!--#exec cgi="cgi-bin/script.pl"-->

            Wichtig ist noch, dass du die HTML-Dateien, in denen du dieses Kommando verwendest, nicht als *.html abspeicherst, sondern als *.shtml oder *.shtm, damit der Webserver weiß, dass sie vorher geparsed werden sollen.

            index.shtml-Dateien werden vom Webserver normalerweise genauso als Standarddateien angesehen wie index.html-Dateien, so dass sie ohne Angabe des Dateinamens angezeigt werden. Ansonsten den Administrator ein bisschen nerven... ;-))

            bye, Frank!

            1. Hallo Frank,

              Ich hoffe, du darfst SSI verwenden :-)

              Darf ich und tue ich auch schon. Das ist das mindeste, was ich von meinem Webspace-Provider verlange ;-)

              Danke noch mal fuer die tolle Hilfe :-)

              Schoenen Gruss,
              Ralph