opi: Cookie ohne Modul setzen

Hallo,

ich möchte gerne "manuell" einen Cookie setzen.

Geht das überhaupt? Hier mein Beispiel:

print "Set-Cookie: id=$id; expires=+30m; path=/cgi;\n";

Greez,
opi

--
Für Syntaxfehler bitte ich um Entschuldigung!
  1. ich möchte gerne "manuell" einen Cookie setzen.

    Nicht unbedingt sinnvoll, da ein CGI Skript ohne CGI Modul ein zielmicher Krampf ist und insofern hast du die nötigen Funktionen sowieso schon eingebunden.

    Geht das überhaupt? Hier mein Beispiel:

    print "Set-Cookie: id=$id; expires=+30m; path=/cgi;\n";

    Schau dir einfach an, was rauskommt, wenn du mit dem Modul die Cookies setzt:
    use CGI;
    print CGI::cookie(-name => 'id', -value => 'test', -expires => '+30m');

    Struppi.

    1. Hallo,

      Nicht unbedingt sinnvoll, da ein CGI Skript ohne CGI Modul ein zielmicher Krampf ist und insofern hast du die nötigen Funktionen sowieso schon eingebunden.

      Nun ich habe in kaum einem Perlskript das CGI.pm eingebunden und nutze Perl lediglich für die Dynamik.

      print "Content-type: text/html\n\n";
      print "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n";
      print "<html>\n";
      print "<head>\n";
      print "   <title>Irgend ein Titel</title>\n";
      print "   <link rel="stylesheet" type="text/css" href="/css.css">\n";
      print "</head>\n";
      print "<body>\n";
      foreach(@dyn) { print "Irgendeine Dynamik\n"; }
      print "</body>\n";
      print "</html>\n";

      print "Set-Cookie: id=$id; expires=+30m; path=/cgi;\n";

      Schau dir einfach an, was rauskommt, wenn du mit dem Modul die Cookies setzt:
      use CGI;
      print CGI::cookie(-name => 'id', -value => 'test', -expires => '+30m');

      Aus dem oben genannten Grund wollte ich nicht nicht für diesen einen Zweck das CGI Modul einbinden. Aber wenn ich mir die Datumsformatierung anschaue, die bei deinem Beispiel herauskommt, sollte ich das eventuell doch tun... oder mir halt ein paar Zeilen hierfür speziell schreiben.

      Greez,
      opi

      --
      Für Syntaxfehler bitte ich um Entschuldigung!
      1. Nun ich habe in kaum einem Perlskript das CGI.pm eingebunden und nutze Perl lediglich für die Dynamik.

        Gibt es sonst noch einen Grund Perl für CGI Skripte zu verwenden?

        print "Content-type: text/html\n\n";
        print "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n";
        print "<html>\n";
        print "<head>\n";
        print "   <title>Irgend ein Titel</title>\n";
        print "   <link rel="stylesheet" type="text/css" href="/css.css">\n";
        print "</head>\n";
        print "<body>\n";
        foreach(@dyn) { print "Irgendeine Dynamik\n"; }
        print "</body>\n";
        print "</html>\n";

        use CGI;

        print CGI::header(),
        CGI::start_html( -title => 'Irgend ein Titel', -style => { -src => 'css.css' } );

        foreach(@dyn) { print "Irgendeine Dynamik\n"; }

        print CG::end_html();

        wenn @dyn noch z.b. eine Liste oder gar eine Tabelle ist wird das ganze mit dem Modul noch schöner:

        print CGI::ul( CGI::li(@dyn) );

        Aus dem oben genannten Grund wollte ich nicht nicht für diesen einen Zweck das CGI Modul einbinden. Aber wenn ich mir die Datumsformatierung anschaue, die bei deinem Beispiel herauskommt, sollte ich das eventuell doch tun... oder mir halt ein paar Zeilen hierfür speziell schreiben.

        so fängt's an, dann brauchst du noch ein paar Zeilen, für den Header, für Body, für Tabellen, Formulare, Listen usw. usf.

        Nicht umsonst ist das Modul so gross, du kannst dir damit sehr viel Arbeit bei CGI Skripten sparen.

        Ich habe anfangen aufzuhören eigene CGI/HTML Funktionen zu schreiben, als ich Formulare mit Dropdownfeldern und Checkboxen bauen musste und die Systematik hinter dem Modul verstanden habe. Danach kannst du dich dann darauf konzentrieren, was das Skript wirklich tun soll und musst dir keine Gedanken mehr darüber machen, welche nützliche Funktionen du brauchst um dir dieses oder jenes zu erleichtern oder - wie in deinem Fall - es überhaupt umzusetzen ist.

        Struppi.

        1. Hallo Struppi,

          Nun ich habe in kaum einem Perlskript das CGI.pm eingebunden und nutze Perl lediglich für die Dynamik.

          Gibt es sonst noch einen Grund Perl für CGI Skripte zu verwenden?

          Wenn ich in einem Skript kein CGI eingebunden habe, dürfte ich dann überhaupt CGI-Skript dazu sagen? Hätte solch ein Skript überhaupt die Endung .cgi nötig, oder erkennt der Webserver auch ein Skript Names skript.pl? Da ich sehr viele Systemdaten in meine Ausgabe einbinde, finde ich die Nutzung von Perl besonders gut. CGI mag zwar in den meisten Fällen eine Erleichterung sein, aber es geht doch auch ohne und ich halte es für keinen Beinbruch

          print "<table class="beispiel">\n";
          print "   <tr><td>hallo</td><td>Struppi</td></tr>\n";
          print "</table>\n";

          Ich habe anfangen aufzuhören eigene CGI/HTML Funktionen zu schreiben, als ich Formulare mit Dropdownfeldern und Checkboxen bauen musste und die Systematik hinter dem Modul verstanden habe.

          Bis es soweit ist, schreibe ich lieber noch selfmake. Ist das so altmodisch? :)

          Greez,
          opi

          --
          Für Syntaxfehler bitte ich um Entschuldigung!
          1. print "<table class="beispiel">\n";
            print "   <tr><td>hallo</td><td>Struppi</td></tr>\n";
            print "</table>\n";

            use CGI;
            print CGI::table( { -class => 'beispiel'},
            CGI::Tr( CGI::td( ['Hallo', 'Opi!'] )));

            Ich habe anfangen aufzuhören eigene CGI/HTML Funktionen zu schreiben, als ich Formulare mit Dropdownfeldern und Checkboxen bauen musste und die Systematik hinter dem Modul verstanden habe.

            Bis es soweit ist, schreibe ich lieber noch selfmake. Ist das so altmodisch? :)

            Nö, aber umständlich.

            Struppi.

            1. print "<table class="beispiel">\n";
              print "   <tr><td>hallo</td><td>Struppi</td></tr>\n";
              print "</table>\n";

              use CGI;
              print CGI::table( { -class => 'beispiel'},
              CGI::Tr( CGI::td( ['Hallo', 'Opi!'] )));

              Ich habe anfangen aufzuhören eigene CGI/HTML Funktionen zu schreiben, als ich Formulare mit Dropdownfeldern und Checkboxen bauen musste und die Systematik hinter dem Modul verstanden habe.

              Bis es soweit ist, schreibe ich lieber noch selfmake. Ist das so altmodisch? :)

              Nö, aber umständlich.

              hö, das passt zu mir... bin ich auch :)

              bis dann,
              opi