Pitt: Cookie

hi,

ich hab ein programm das cookies setzen soll wenn die startseite meiner homepage geladen wird.

aber da ist irgendwo ein fehler.
so sieht meine tag aus der das programm startet:

<script src="http://www.homepage.de/cgi-bin/keks.pl"></script>

wenn ich das programm jetzt aber mit nem link starte dann setzt es den cookie:

<a href="http://www.homepage.de/cgi-bin/keks.pl">Cookie</a>

danke im voraus

  1. Hallo Pit,

    Du kannst mit <script> kein Perl/CGI-Skript in eine HTML-Seite einbinden.

    greets
    myMojito

    --
    -------------------------------------------
    Mode ist eine Variable, Stil eine Konstante
    1. Hi,

      Du kannst mit <script> kein Perl/CGI-Skript in eine HTML-Seite einbinden.

      doch, warum denn nicht? Es muss lediglich eine gültige JavaScript-Ressource erzeugen. Zudem fehlt im <script>-Tag jedoch das notwendige type-Attribut.

      Cheatah

      --
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. Zudem fehlt im <script>-Tag jedoch das notwendige type-Attribut.

        und aber wenn ich diese type attribut hinzufüge geht es auch nicht:

        type="html/text"

        1. und aber wenn ich diese type attribut hinzufüge geht es auch nicht:

          type="html/text"

          Hallo!

          Er hat ja nicht behauptet, daß dies die Lösung für Dein Problem ist. :-)

          MfG
          MarkX.

          1. kann mir jetzt jemand endlich mal sagen wie das geht??

            1. Halihallo Pitt

              kann mir jetzt jemand endlich mal sagen wie das geht??

              Nein. Da das Problem von Sourcecode, Einbindung und Konfiguration abhängt. Alles vor-
              enthälst du uns. Ob das Problem in "endlicher" Zeit gelöst wird, hängt primär von dir
              ab, nur sekundär von uns.

              Viele Grüsse

              Philipp

              --
              RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
              Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
              1. Nein. Da das Problem von Sourcecode, Einbindung und Konfiguration abhängt. Alles vor-
                enthälst du uns. Ob das Problem in "endlicher" Zeit gelöst wird, hängt primär von dir
                ab, nur sekundär von uns.

                ok also so sieht mein quelltext aus.

                <html>
                <head>
                <script src="http://www.hammerpreise.de/cgi-bin/hallo/counter.cgi" type="html/text"></script>
                </head>

                <body>
                </body>
                </html>

                der text von meinem cgi sieht so aus:

                #!/usr/bin/perl

                use CGI;
                $cgi = new CGI;
                use CGI::Carp qw(fatalsToBrowser);

                $multi_zaehler = "no"; #doppelt zählen ausschalten

                if($multi_zaehler eq "no") {

                if($ENV{'HTTP_COOKIE'}) {}

                else {
                  $neuCookie = $cgi->cookie(-name=>'zaehler',
                     -value=>'zaehlen',
                     -expires=>'+10s',
                     -path=>'/');
                  print $cgi->header(-cookie=>$neuCookie);

                HOLEN();
                  ERNEUERN();
                 }
                }
                else {
                 HOLEN();
                 ERNEUERN();
                }

                ######Subroutine######

                sub HOLEN {
                   open(Datenspeich, "<DS.txt") or die;
                   $Beanzahl = <Datenspeich>;
                   close(Datenspeich);
                }

                sub ERNEUERN {
                   open (Datenspeich, ">DS.txt") or die;
                   print Datenspeich ++$Beanzahl;
                   close (Datenspeich);
                }
                #########End##########

                1. Hi,

                  ok also so sieht mein quelltext aus.

                  Dein Perl-Script generiert keinen JavaScript-Code.

                  #!/usr/bin/perl

                  #!/usr/bin/perl -w
                  use strict;

                  Anschließend korrigiere die Fehler, die bereits bei der Kompilierung, also noch vor der Zeile

                  use CGI::Carp qw(fatalsToBrowser);

                  angezeigt werden. Tipp:

                  perldoc -f my

                  Steht aber auch schon n-mal im Archiv.

                  Cheatah

                  --
                  X-Will-Answer-Email: No
                  X-Please-Search-Archive-First: Absolutely Yes
                2. der text von meinem cgi sieht so aus:

                  hast du dieses Skript mal auf der Konsole ausgeführt?

                  Dort würdest du weahrscheinlich sehen, das die ausgabe nicht die ist die du erwartest (und der Browser).

                  #!/usr/bin/perl

                  #!/usr/bin/perl -w
                  use strict;

                  Damit vermeidest du (Tipp)Fehler in der Entwicklungsphase.
                  http://perldoc.com/perl5.8.0/pod/perldebtut.html

                  use CGI;
                  $cgi = new CGI;
                  use CGI::Carp qw(fatalsToBrowser);

                  $multi_zaehler = "no"; #doppelt zählen ausschalten

                  if($multi_zaehler eq "no") {

                  if($ENV{'HTTP_COOKIE'}) {}

                  else {
                    $neuCookie = $cgi->cookie(-name=>'zaehler',
                       -value=>'zaehlen',
                       -expires=>'+10s',
                       -path=>'/');
                    print $cgi->header(-cookie=>$neuCookie);

                  HOLEN();
                    ERNEUERN();
                   }
                  }
                  else {
                   HOLEN();
                   ERNEUERN();
                  }

                  Wenn $ENV{'HTTP_COOKIE'} keinen Wert enthält, dann gibst du keinen Header aus.

                  Grossbuchstaben sollten für Konstanten reserviert werden.
                  http://perldoc.com/perl5.8.0/pod/perlstyle.html

                  ######Subroutine######

                  sub HOLEN {
                     open(Datenspeich, "<DS.txt") or die;

                  was 'die'? warum läßt du dir nicht ausgeben was passiert ist? Filehandles sollten auch mit Grossbuchstaben geschrieben werden.

                  open(FH , "<DS.txt") or die "kann DS.txt nicht öffnen, weil: $!";

                  $Beanzahl = <Datenspeich>;
                     close(Datenspeich);
                  }

                  sub ERNEUERN {
                     open (Datenspeich, ">DS.txt") or die;
                     print Datenspeich ++$Beanzahl;
                     close (Datenspeich);
                  }

                  Und ob du wirklich einen Zähler programmieren willst (der so nicht funktionieren wird) halte ich für fraglich, aber gut:
                  les wenigstens dass vorher: http://perldoc.com/perl5.8.0/pod/perlfaq5.html#I-still-don't-get-locking.--I-just-want-to-increment-the-number-in-the-file.--How-can-I-do-this-

                  Struppi.

                  1. #!/usr/bin/perl -w

                    Damit vermeidest du (Tipp)Fehler in der Entwicklungsphase.
                    http://perldoc.com/perl5.8.0/pod/perldebtut.html

                    »»
                    wenn ich das -w dahinter schreibe dann werden sowieso keine fehler mehr angezeigt, weil ich die alle schon behoben habe.

                    Wenn $ENV{'HTTP_COOKIE'} keinen Wert enthält, dann gibst du keinen Header aus.

                    der im header soll nicht ausgegeben werden, weil das programm ja nur im hintergrund läuft.

                    open(Datenspeich, "<DS.txt") or die;

                    was 'die'? warum läßt du dir nicht ausgeben was passiert ist? Filehandles sollten auch mit Grossbuchstaben geschrieben werden.

                    "die" die fehlermeldung lass ich weg damit auf der startseite keine fehlerbenachrichtigungen auftauchen

                    Und ob du wirklich einen Zähler programmieren willst (der so nicht funktionieren wird) halte ich für fraglich, aber gut:
                    les wenigstens dass vorher:

                    der zähler funktioniert jetzt ohne ein einzigen fehler. :-)))) endlich

                    1. #!/usr/bin/perl -w

                      Damit vermeidest du (Tipp)Fehler in der Entwicklungsphase.
                      http://perldoc.com/perl5.8.0/pod/perldebtut.html

                      »»
                      wenn ich das -w dahinter schreibe dann werden sowieso keine fehler mehr angezeigt, weil ich die alle schon behoben habe.

                      -w => warnings, das zeigt keine Fehler an sondern Warnungen und diese können dir helfen Fehler zu vermeiden. genauso wie: use strict

                      Wenn $ENV{'HTTP_COOKIE'} keinen Wert enthält, dann gibst du keinen Header aus.

                      der im header soll nicht ausgegeben werden, weil das programm ja nur im hintergrund läuft.

                      Das hat nichts damit zu tun, da es CGI Skript ist, erwartet der client einen gültigen Header, ansonsten wird ein Fehler erzeugt.

                      open(Datenspeich, "<DS.txt") or die;

                      was 'die'? warum läßt du dir nicht ausgeben was passiert ist? Filehandles sollten auch mit Grossbuchstaben geschrieben werden.

                      "die" die fehlermeldung lass ich weg damit auf der startseite keine fehlerbenachrichtigungen auftauchen

                      Und du selber willst de nicht sehen?

                      Und ob du wirklich einen Zähler programmieren willst (der so nicht funktionieren wird) halte ich für fraglich, aber gut:
                      les wenigstens dass vorher:

                      der zähler funktioniert jetzt ohne ein einzigen fehler. :-)))) endlich

                      Das stimmt 100% nicht, da ich mir 100% sicher bin dass du die Datei nicht flockst. Aber wer mit sowenig Kenntnissen sich so aus dem Fenster lehnt, kann es auch verschmerzen wenn der Zähler sich ständig wieder nullt.

                      Struppi.

        2. Hi,

          Zudem fehlt im <script>-Tag jedoch das notwendige type-Attribut.
          und aber wenn ich diese type attribut hinzufüge geht es auch nicht:
          type="html/text"

          Diesen mime-type gibt es nicht. Meintest Du text/html? Das ist aber auch kein sinnvoller mime-type für javascript. text/javascript (oder u.U. auch application/x-javascript) wären sinnvoller.

          cu,
          Andreas

          --
          Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
          http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/