Gary: Variabelwert in Javascript einsetzen via perl!

0 55

Variabelwert in Javascript einsetzen via perl!

Gary
  • perl
  1. 0
    Struppi
    1. 0
      Gary
      1. 0
        Struppi
        1. 0
          Gary
          1. 0
            Struppi
            1. 0
              Gary
              1. 0
                Struppi
              2. 0
                RobRobson
                1. 0
                  Gary
                  1. 0
                    Gary
                    1. 0
                      Struppi
                      1. 0

                        Immer noch Cookie -> aber Header!

                        Gary
                        1. 0
                          Gary
                          1. 0
                            Struppi
                            1. 0

                              Fertig!!!

                              Gary
                              1. 0
                                Gary
                                1. 0

                                  It' still not working!

                                  Gary
                                  1. 0
                                    Gary
                                    1. 0
                                      Beat
                                      1. 0
                                        Gary
                                        1. 0
                                          Matti Maekitalo
                                          1. 0
                                            Gary
                                            1. 0

                                              Alles in Ordnung !!!

                                              Gary
                                            2. 0
                                              Struppi
                                              1. 0
                                                Gary
                                                1. 0
                                                  Struppi
                                                  1. 0
                                                    Gary
                                                    1. 0
                                                      Struppi
                                                      1. 0

                                                        Ende...

                                                        Gary
                                                        1. 0
                                                          Struppi
                                                          1. 0
                                                            Gary
                                                            1. 0
                                                              Gary
                                                            2. 0
                                                              Struppi
                                                              1. 0

                                                                Unbekannte Länge verarbeiten?

                                                                Gary
                                                                1. 0
                                                                  Struppi
                                                                  1. 0
                                                                    Gary
                                                                    1. 0

                                                                      Zählerproblem

                                                                      Gary
                                                                      1. 0

                                                                        Zählerproblem - präzisiert!

                                                                        Gary
                                                                        1. 0
                                                                          Beat
                                                                          1. 0
                                                                            Beat
                                                                          2. 0
                                                                            Gary
                                                                    2. 0
                                                                      Struppi
                                                                      1. 0
                                                                        Jean-Max
                                                                        1. 0
                                                                          Beat
                                                                          1. 0
                                                                            Gary
                                                                2. 0
                                                                  Beat
                                                                  1. 0
                                                                    Gary
                                                                    1. 0
                                                                      Beat
                                    2. 0
                                      Matti Maekitalo
                    2. 0

                      Erledigt!

                      Gary
  2. 1
    ChrisB
    1. 0
      Gary
      1. 0
        Der Martin
      2. 0
        Struppi

Morgen zusammen

Ich habe diese Zeile:

print qq(document.cookie = 'userid=meinwert; expires='24h+a.toGMTString()+';';),"\n";

im _Perlcode_ stehen, und möchte für "meinwert" gerne die Variable $Zeitstempel verwenden - aber so, das es das JS später in der html-Ausgabe auch versteht.

Wie schreib ich das korrekt ?

Gruß Gary

PS.:Hatte ich schon erwähnt das mir JS gar nicht liegt? *g*

  1. Ich habe diese Zeile:

    print qq(document.cookie = 'userid=meinwert; expires='24h+a.toGMTString()+';';),"\n";

    Warum nutzt du nicht das CGI Modul, dass du schon eingebunden hast?

    im _Perlcode_ stehen, und möchte für "meinwert" gerne die Variable $Zeitstempel verwenden - aber so, das es das JS später in der html-Ausgabe auch versteht.

    Das verstehe ich nicht? meinwert ist der Name des Cookies, was ist $zeitstempel? Was hat das in dem Kontext mit JS zu tun?

    Struppi.

    1. Morgen Struppi

      print qq(document.cookie = 'userid=meinwert; expires='24h+a.toGMTString()+';';),"\n";

      Warum nutzt du nicht das CGI Modul, dass du schon eingebunden hast?

      ???

      Das verstehe ich nicht? meinwert ist der Name des Cookies, was ist $zeitstempel? Was hat das in dem Kontext mit JS zu tun?

      Das habe ich im Netz gefunden:
      ------------------------------------------------
      var a = new Date();
      a = new Date(a.getTime() +1000*60*60*24*365);
      document.cookie = 'meincookie=meinwert; expires='+a.toGMTString()+';';
      ------------------------------------------------

      Meincookie habe ich in userid umbenannt. So heist der Keks.
      für meinwert möchte ich $Zeitstempel verwenden. Das kommt von:
      my $Zeitstempel = time;

      Die Html-Seite ist http://www.euro-superconductors.com/de-produkte-be.html

      Nur das diese zukünftig (bei mir auf dem rechner bereits Fakt) folgende uri bekommt:
      ------------------
      www.euro-superconductors.com/de-produkte-be.pl
      ------------------

      Das heist, wenn ein User auf Bestellung klickt, wird das Perlscript angeworfen, und dieses liefert die Bestellungsseite aus - mit Cookie.
      Das ist der Trick dabei!

      Dann hat der den Keks mit dem Zeitstempel. Schritt eins ist eben eine Identifizierung des Clients. Auf das kann ich dann die Aktionen des Warenkorbes beziehen.

      Bei der zu generierenden Bestellungs-Html möchte ich im Perl die JS funktion vom Internet nutzen. Das müsste irgendwie so gehen:

      print qq(document.cookie = 'userid=),"\n";
      print $Zeitstempel;
      print qq; expires='24h+a.toGMTString()+';';),"\n";

      Aber er schreibt kein Cookie!

      Gruß Gary

      1. print qq(document.cookie = 'userid=meinwert; expires='24h+a.toGMTString()+';';),"\n";

        Warum nutzt du nicht das CGI Modul, dass du schon eingebunden hast?
        ???

        Bitte! Du kannst mir nicht erzählen, dass ich dir nicht schon x-mal einen Link auf die Doku gezeigt habe und warum liest du sie nicht einfach????

        http://perldoc.perl.org/CGI.html#HTTP-COOKIES
        Damit hast du eine jahrelang millioenfach erprobte Cookie Funktion.

        Bei der zu generierenden Bestellungs-Html möchte ich im Perl die JS funktion vom Internet nutzen. Das müsste irgendwie so gehen:

        Du kannst mit Perl keine JS Funktion nutzen und der Wert des Cookies ist auf dem Server genau der Gleiche wie auf dem Client.

        Aber er schreibt kein Cookie!

        Vielleicht willst du einfach die Funktion von CGI.pm nutzen

        Struppi.

        1. Hi Struppi

          ##################

          Skalar Cookies

          ##################
          my $cookie;

          $cookie = cookie(-name=>'sessionid',
                          -value=> $Zeitstempel,
                          -expires=>'+1h',
                          -path=>'http://localhost/cgi-bin/de-produkte-be.pl',
                          -domain=>'.euro-superconductors.com',
                          );

          #############

          HTML-Kopf

          #############
          print header(-cookie=>$cookie);
          print CGI->header('text/html');

          ergibt:
          Undefined subroutine &main::cookie called at /usr/lib/cgi-bin/de-produkte-be.pl line 43.

          Ein &main habe ich nirgens verwendet. Und subroutinen auch nicht. Was will der von mir?

          Gruß Gary

          1. ergibt:
            Undefined subroutine &main::cookie called at /usr/lib/cgi-bin/de-produkte-be.pl line 43.

            Ein &main habe ich nirgens verwendet. Und subroutinen auch nicht. Was will der von mir?

            Natürlich hast du die funktion (sub) cookie verwendet, du musst diese natürlich irgendwie bekannt machen oder einen anderen Mechanismus verwenden, der ausführlich in der CGI.pm Doku (ich verlink sie aber jetzt nicht noch mal) beschrieben wird.

            und main:: ist der Namespace (package) des Skripts solange du keinen anderen angibst.

            Wie gesagt, solange du nichts liest, solange wirst du in immer neue Fallen tappen und Probleme nicht lösen können.

            Struppi.

            1. Hi

              Ich finde es nicht.
              Ich habe all dies probiert:

              use CGI::Cookie;
              use CGI::cookie;
              use CGI::pm;
              use CGI::PM;
              use CGI -Cookie;
              use CGI -cookie;

              und zum Schluß, daß ich auch wirklich nichts vergesse:

              use CGI::all;
              use CGI::All;
              use CGI -all;
              use CGI -All;

              Manmanman...

              Das kann doch nicht so schwer sein, so ein doofes Cookie zu setzen!

              Wie wäre es Alternativ einfach ein Input-Hiddenfeld oder Input- disabled mitzuschicken? Sonst fällt mir zu identifizierung auch nichts mehr ein...

              Ah, einen hätte ich noch:
              Ich könnte doch die IP als Referenz für den Warenkorb nehmen. Das habe ich schon gemacht - sprich wie das geht weis ich.

              Gruß Gary

              1. Ich finde es nicht.

                http://perldoc.perl.org/CGI.html#PROGRAMMING-STYLE

                Wobei es noch eine Möglichkeit gibt, die ich gerne nutze: CGI::funktion()

                Struppi.

              2. Ah, einen hätte ich noch:
                Ich könnte doch die IP als Referenz für den Warenkorb nehmen. Das habe ich schon gemacht - sprich wie das geht weis ich.

                Und wenn 3 Leute in nem Uninetzwerk sitzen und bestellen, oder in nem Firmennetzwerk oder hinter ner Tor-Geschichte oder über andere Techniken die die IP beinflussen?

                cookies sind schon das sinvollste!

                Viele Grüße,
                Rob

                1. Hi Rob

                  Schade, dabei geht es gerade so gut vorwärts *g*

                  Kannst gerne mal ausprobieren, die Variablen die via CGI kommen gibt er auf jedenfall korrekt zurück.

                  IP dachte ich ist unikat? Außer natürlich dein Netzwerkbeispiel. Wie oft kommt das vor, daß drei Abteilungen unabhängig von einander bestellen? Normalerweise bestellt doch eine Art Zentrale den Materialbedarf - oder?

                  Spass beiseite - Cookies wahrscheinlich besser!

                  *schrottigen cookies - I hate Biskuit!*

                  Gruß Gary

                  1. Hi nochmal

                    Ich habe auf jedenfall mal was gefunde, wie ich das Cooke nacher auslesen kann:

                    $ENV{HTTP_COOKIE}

                    Scheint so einfach zu sein, wie die IP auszulesen. Nur wie man es setzt, weiss ich immer noch nicht...

                    Gruß Gary

                    1. Ich habe auf jedenfall mal was gefunde, wie ich das Cooke nacher auslesen kann:

                      $ENV{HTTP_COOKIE}

                      Oder einfach mit CGI::cookie(-name => 'name');

                      Scheint so einfach zu sein, wie die IP auszulesen. Nur wie man es setzt, weiss ich immer noch nicht...

                      Mit CGI::cookie, wie es in der Doku beschrieben wird.

                      Struppi.

                      1. Ojeeeh...

                        In der Doku aus dem Netz habe ich dies (uri-escape ist nicht relevant):
                        ------------------------------------------------------------
                        011: $\ = "\n";
                        012:
                        013: my $value = uri_escape("das gab's noch nie: 10% Nachlass");
                        014: my $header = "Content-Type: text/html\n";
                        015: $header .=   "Set-Cookie: top-news=$value;";
                        016: $header .=   " expires=Wed, 21 Nov 2001 18:00:00 +0100\n";
                        017: $header .=   "Set-Cookie: session=2840957abg4\n";
                        018:
                        019: print $header;
                        ------------------------------------------------------------

                        Mir ist Zeile 11 nicht klar! Der Header wird aus dem Skalar $header gebildet, was man daran erkennt, daß er geprintet - also rausgeschickt wird (19).

                        Mein Perlscript beginnt den HTML-Teil aber so:
                        ------------------------------------------------------------
                        print CGI->header('text/html');
                        ------------------------------------------------------------

                        Dannach das:
                        ------------------------------------------------------------
                        print qq(<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">),"\n";
                        print qq(<html>),"\n";
                        print qq(<head>),"\n";
                        usw.
                        ------------------------------------------------------------

                        Mein Kopf und mein HTML-Teil laufen ohne Fehler (Log ist sauber).

                        Wie bekomme ich den Doku-Teil mit meinem header unter ein Dach?

                        Soweit ich das verstanden habe, muss das cookie mit dem header herausgeschickt werden - ist doch so -oder?

                        Ich werd noch bedeppert...

                        Gruß Gary

                        1. Hi

                          Bareword "CGI::cookie" not allowed while "strict subs" in use at /usr/lib/cgi-bin/warenkorb.pl line 6.

                          Kann es sein, daß unter perl im Modus strict, keine cookies gehen?

                          Gruß Gary

                          1. Bareword "CGI::cookie" not allowed while "strict subs" in use at /usr/lib/cgi-bin/warenkorb.pl line 6.

                            Um die Funktion so aufzurufen, musst du schon die Klammern hinzufügen CGI::cookie(); (oder wie du es schon bei einer Funktion machst CGI->cookie )

                            Kann es sein, daß unter perl im Modus strict, keine cookies gehen?

                            Nein, das kann nicht sein. Les die Doku!

                            Struppi.

                            1. Hi...

                              Ich habe das so geschrieben:
                              ----------------------------------------------------------
                              my $header;
                              $header .=   "Set-Cookie2: eus-session=$Zeitstempel;";
                              $header .=   "expires= \n";

                              #############

                              HTML-Kopf

                              #############

                              print CGI->header('text/html');
                              print $header;
                              ----------------------------------------------------------

                              So geht es! Frag bitzte nicht warum - ich habe keinen blassen...

                              Zwar kann ich bei expires keinen Zeitpunkt setzen (z.B. +1h) aber meinBrowser sagt bis zum Ende der Sitzung. Ich muss nur noch herauskriegen ob das bis zum Schießen des Browsers oder bis zum Wechsel der Domain gemeint ist *yes!*

                              Gruß und Bye

                              Gary

                              1. Nachtrag:

                                Ich mach das nicht um dich zu ärgern - nur alles andere ging nicht - keine der Versionen mit CGI und blablabla....

                                Das einzige was läuft ist das was ich uben schrieb.

                                Gruß Gary

                                1. Zu früh gefreut !!! geht wieder nicht!

                                  Oben im Perl steht:
                                  ----------------------------------------------
                                  #!/usr/bin/perl -w
                                  use strict;
                                  use Fcntl ':flock';
                                  use CGI -no_xhtml;
                                  use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
                                  CGI::cookie();
                                  ----------------------------------------------

                                  Unten steht:
                                  ----------------------------------------------
                                  #################

                                  Skalar Cookie

                                  #################
                                  my $cookie;

                                  $cookie = cookie(-name=>'eus-session',
                                          -value=> $Zeitstempel,
                                          -expires=>'+1h',
                                          -path=>'/cgi-bin/warenkorb.pl',
                                          -domain=>'.euro-superconductors.com',
                                          -secure=>1);

                                  print header(-cookie=>$cookie);

                                  #############

                                  HTML-Kopf

                                  #############
                                  print CGI->header('text/html');
                                  ----------------------------------------------

                                  Er sendet den Gottverdammten Keks einfach nicht!!!!!!!!!!!!!!!!

                                  R.I.P

                                  ++
                                  ++++++
                                    ++
                                    ++
                                    ++

                                  g.a.r.y.

                                  1. Hallo zusammen

                                    Es ist nicht möglich ein Cookie und gleichzeitig eine Webseite auszuliefern:
                                    ------------------------------------------------------------------------
                                    Wichtig ist, dass Sie vorher keinen HTML-Header gesendet haben. Daher ist es auch unmöglich, gleichzeitig ein Cookie und eine normale HTML-Seite zu senden. Was jedoch möglich ist: erst das Cookie zu senden und dann den Benutzer auf eine normale HTML-Seite weiterzuleiten, wo ihn dann eine z.B. eine Bestätigungs-Meldung erwartet. Dazu dient der Parameter -URL.
                                    ------------------------------------------------------------------------

                                    Nachzulesen hier:

                                    http://www.aboutwebdesign.de/awd/content/978832689.shtml

                                    Also einen ganzen Tag umsonst ...

                                    Bye Gary

                                    1. Es ist nicht möglich ein Cookie und gleichzeitig eine Webseite auszuliefern:

                                      Quatsch! Gerade dies passiert aber auf meinen Websites und auf 99.9% Cookie verwendender Perl-betriebener Sites anstandslos.

                                      So where's the problem

                                      Use Brain
                                      Use CGI::Cookie;

                                      http://perldoc.perl.org/CGI/Cookie.html

                                      mfg Beat

                                      --
                                      ><o(((°>           ><o(((°>
                                         <°)))o><                     ><o(((°>o
                                      Der Valigator leibt diese Fische
                                      1. Hi Beat

                                        Quatsch! Gerade dies passiert aber auf meinen Websites und auf 99.9% Cookie verwendender Perl-betriebener Sites anstandslos.

                                        Sorry, das schreibt halt der webdesigner auf seiner Page - und da ich keine Ahnung habe musste ich das wohl glauben.

                                        So where's the problem

                                        Use Brain
                                        Use CGI::Cookie;

                                        Jajaja, das ist alles schön und gut. Und es funktioniert ja auch ohne Fehler - bis ! ja bis zu dem Print header:
                                        ---------------------------------------
                                        print header(-cookie=>[$cookie1]);
                                        ---------------------------------------

                                        das setzt nämlich diesen Befehl ausser Kraft:
                                        ---------------------------------------
                                        print CGI->header('text/html');
                                        ---------------------------------------

                                        Und alle ÄÜÖ sehen wieder beschissen aus.

                                        Ich habe mal das Perlskript online - sieh selbst, was nach dem Cookiesetzen mit den Umlauten passiert:

                                        http://www.euro-superconductors.com/de-produkte-be.html

                                        Gruß Gary

                                        PS.: Das Problem ist der Korrekte Header mit cookies drinne!

                                        1. Tach auch.

                                          Jajaja, das ist alles schön und gut. Und es funktioniert ja auch ohne Fehler - bis ! ja bis zu dem Print header:

                                          print header(-cookie=>[$cookie1]);

                                          das setzt nämlich diesen Befehl ausser Kraft:

                                          print CGI->header('text/html');

                                          Wie in meinem anderen Posting erwähnt ... Content-Type und Cookies kann und sollte man zusammen in einem CGI::header()-Aufruf unterbringen.

                                          Bis die Tage,
                                          Matti

                                          1. Hi Matti

                                            print CGI::header(-cookie=>$cookie1, -type=> 'text/html');
                                                                                                 ^
                                            Habe dein Plain in HTML geändert - sonst geht es gar nicht ;-)

                                            Aber das Umlauteproblem besteht weiter:
                                            ---------------------------------------------------------------------------
                                            my $cookie1;

                                            $cookie1 = new CGI::Cookie(-name=>'eus-session',-value=>$Zeitstempel);

                                            print header(-cookie=>[$cookie1]);

                                            print CGI::header(-cookie=>$cookie1, -type=> 'text/html');

                                            #############

                                            HTML-Kopf

                                            #############

                                            print CGI->header('text/html');

                                            ---------------------------------------------------------------------------

                                            Vielleicht hat der Webdesigner doch recht, und es geht nicht beides "korrekte Codierung und Cookie" ?

                                            -Kaffeepause- + Zigi ...

                                            Gary

                                            1. An Alle:

                                              Jetzt geht es - Beweis ist online!

                                              Auflösung des Rätsels:
                                              -----------------------

                                              Im Kopfbereich von Perl:
                                              -------------------
                                              use CGI::Cookie;
                                              -------------------

                                              Cookie Befehl:
                                              -----------------------------------------------------------------------
                                              my $cookie1;
                                              $cookie1 = new CGI::Cookie(-name=>'eus-session',-value=>$Zeitstempel);
                                              -----------------------------------------------------------------------

                                              Der Aussendebefehl(!):
                                              ---------------------------------------------------------
                                              print CGI->header(-type=> 'text/html', -cookie=>$cookie1);
                                              ---------------------------------------------------------

                                              Resümmee:

                                              1. Es darf nicht text/plain heissen, sondern text/html

                                              2. Der -type muss zwingend _vor_ dem -cookie stehen. Anders herum geht es nicht.

                                              3. Es darf nicht CGI::header heissen, sondern CGI->header.

                                              Nur dann wird alles gut!

                                              Grüße und Ende mit Cookie

                                              Gary

                                            2. Aber das Umlauteproblem besteht weiter:

                                              my $cookie1;

                                              $cookie1 = new CGI::Cookie(-name=>'eus-session',-value=>$Zeitstempel);

                                              Das kann doch nicht funtkionieren und es kommt auch eine entsprechende Fehlermeldung.

                                              Einmal ist das 'new' zuviel und dann heißt die Funktion: cookie, nicht '_C_ookie' und $Zeitstempel muss natürlich entsprechend formatiert sein und du hast dir durchgelesen, was in der Doku steht, welche Werte du da eintragen kannst?

                                              print CGI::header(-cookie=>$cookie1, -type=> 'text/html');

                                              Wenn du das CGI Modul eingebunden und das Cookie ohne new erzeugt hast, dann geht das und die Reihgenfolge ist egal.

                                              -Kaffeepause- + Zigi ...

                                              Du solltest die Ratschläge befolgen, die du schon mehrfach bekommen hast. Verwende use strict und lass dir die Fehlermeldungen im Browser anzeigen oder besser teste das Skript im Zweifel auch mal in der Konsole.

                                              So könnte das Skript aussehen:

                                              #!/usr/bin/perl -w  
                                                
                                              use strict;  
                                              use CGI;  
                                                
                                              my $cookie1 = CGI::cookie(-name=>'eus-session',-value=>'+1h');  
                                                
                                              print CGI::header(-cookie=>$cookie1, -type=> 'text/html');  
                                              
                                              

                                              Struppi.

                                              1. Abend Struppi

                                                Ich habe mir noch mal die Mühe gemacht, und alles so wie du empfiehlst eingegeben. Leider geht es auf deine Weise nicht. Ich habe das ausprobiert, weil meine Version auch nur unter der standartmethode läuft. Sobald ich use strict eingebe geht nichts mehr. Auch dein header mit :: geht bei mir nicht. Er will den Pfeil ->

                                                Nachfolgend mal ausnamsweise den ganzen Code. Sind noch alte Skalare drin, die ich aber wahrscheinlich im laufe der Bestellung eh brauchen werde. Du kannst dir den Kopf und den Mittelteil ansehen, weiter unten ist eh nur HTML-Stuff. Es läuft, ind macht mir auch keine Fehlermeldung. Ah, wegen der Funktion ober CGI::Cookie und CGI::cookie ---> Mein Perl will Cookie groß geschrieben. Klein meckert er no such xxx fund usw...

                                                Hier der Vorläufige Perl-Code:

                                                #!/usr/bin/perl -w use Fcntl ':flock'; use CGI -no_xhtml; use CGI::Carp qw(fatalsToBrowser warningsToBrowser); use CGI qw(:standard); use CGI::Cookie; #######################

                                                Skalare Adressmaske

                                                ####################### my $task = CGI::param('task') || 'X'; my $menge01 = CGI::param('menge01') || 'X'; my $artikel01 = CGI::param('artikel01') || 'X'; my $anrede = CGI::param('anrede') || 'X'; my $vorname = CGI::param('vorname') || 'X'; my $name = CGI::param('name') || 'X'; my $geboren = CGI::param('geboren') || 'X'; my $hausnummer = CGI::param('hausnummer') || 'X'; my $land = CGI::param('land') || 'X'; my $plz = CGI::param('plz') || 'X'; my $ort = CGI::param('ort') || 'X'; my $telefon = CGI::param('telefon') || 'X'; my $fax = CGI::param('fax') || 'X'; my $email = CGI::param('mobil') || 'X'; ######################

                                                Skalar Zeitstempel

                                                ###################### my $Zeitstempel = time; ###############

                                                Datenfilter

                                                ############### $anrede =~ s/;//g; $vorname =~ s/;//g; $name =~ s/;//g; $geboren =~ s/;//g; $hausnummer =~ s/;//g; $land =~ s/;//g; $plz =~ s/;//g; $ort =~ s/;//g; $telefon =~ s/;//g; $fax =~ s/;//g; $email =~ s/;//g; #################

                                                Skalar Cookie

                                                ################# my $cookie1;

                                                $cookie1 = new CGI::Cookie(-name=>'eus-session',-value=>$Zeitstempel);

                                                #############

                                                HTML-Kopf

                                                ############# print CGI->header(-type=> 'text/html', -cookie=>$cookie1); print qq(<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">),"\n"; print qq(<html>),"\n"; print qq(<head>),"\n"; print qq(<title>Euro-Superconductors</title>),"\n"; print qq(<link rel="stylesheet" type="text/css" href="http://localhost/eus-home-de.css" media="screen, projection" >),"\n"; print qq(<meta http-equiv="Content-Language" content="de">),"\n"; print qq(<meta http-equiv="Content-Type" content="text/html; charset=utf-8">),"\n"; print qq(<meta name="generator" content="Texteditor/Gnome-Ubuntu">),"\n"; print qq(<meta name="title" content="Euro-Superconductors">),"\n"; print qq(<meta name="description" content="öffentliche Forschung und Handel mit Supraleiter, public research and trading with superconductors">),"\n"; print qq(<meta name="organization" content="Euro-Superconductors e. G.">),"\n"; print qq(<meta name="owner" content="Gary R.">),"\n"; print qq(<meta name="author" content="Gary R.">),"\n"; print qq(<meta name="publisher" content="www.euro-superconductors.com">),"\n"; print qq(<meta name="copyright" content="Euro-Superconductors / 2010">),"\n"; print qq(<meta name="abstract" content="Forschung, Entwicklung, Handel, Verkauf mit Supraleiter, science, development and trading with superconductors">),"\n"; print qq(<meta name="page-type" content="business">),"\n"; print qq(<meta name="distribution" content="global">),"\n"; print qq(<meta name="page-topic" content="Supraleiter, superconductors">),"\n"; print qq(<meta name="rating" content="general">),"\n"; print qq(<meta name="audience" content="Schüler, Studenten, Forscher, Wissenschaftler, pupils, students, explorers, scientists">),"\n"; print qq(<meta name="revisit" content="after 30 days">),"\n"; print qq(<meta name="robots" content="index, follow">),"\n"; print qq(<meta name="googlebot" content="noodp">),"\n"; print qq(<meta name="keywords" content="Supraleiter Informationen, informations about superconductors, Supraleiter kaufen, buy a superconductor, Supraleiter, superconductor, wo kann ich einen Supraleiter kaufen, where can I buy a superconductor, YBCO, ybco">),"\n";

                                                print qq(</head>),"\n";

                                                print qq(<body>),"\n"; print qq(<div class="hintergrund-oben">),"\n"; print qq(</div>),"\n"; print qq(<div class="hintergrund-oben-traverse">),"\n"; print qq(</div>),"\n"; print qq(<div class="hintergrund-unten">),"\n"; print qq(</div>),"\n"; print qq(<div class="hintergrund-links">),"\n"; print qq(</div>),"\n"; print qq(<div class="hintergrund-rechts">),"\n"; print qq(</div>),"\n"; print qq(<div class="ecke-oben-links">),"\n"; print qq(</div>),"\n"; print qq(<div class="ecke-oben-rechts">),"\n"; print qq(</div>),"\n"; print qq(<div class="ecke-unten-links">),"\n"; print qq(</div>),"\n"; print qq(<div class="ecke-unten-rechts">),"\n"; print qq(</div>),"\n"; print qq(<div class="haupt-banner">),"\n"; print qq(</div>),"\n"; print qq(<div class="inhalt-box-links">),"\n"; print qq(     <ul class="liste-links">),"\n"; print qq(     <li><a href="http://www.euro-superconductors.com/de-home.html">Willkommen</a></li>),"\n"; print qq(     <li><a href="http://www.euro-superconductors.com/de-idee.html">Idee</a></li>),"\n"; print qq(     <li><a href="http://www.euro-superconductors.com/de-forschung.html">Forschung</a></li>),"\n"; print qq(     <li><a href="http://www.euro-superconductors.com/de-produkte.html">Produkte</a></li>),"\n"; print qq(     <li><a href="http://www.euro-superconductors.com/de-sicherheit.html">Sicherheit</a></li>),"\n"; print qq(     </ul>),"\n"; print qq(<a class="grafiklink" href="http://www.euro-superconductors.com/index.html"><img class="zeichen-unten-links" src="http://www.euro-superconductors.com/up-symbol.png" width="50" height="18" alt="^"></a>),"\n"; print qq(</div>),"\n"; print qq(<div class="schiebe-box-links">),"\n"; print qq(</div>),"\n"; print qq(<div class="inhalt-box-rechts">),"\n"; print qq(     <ul class="liste-rechts">),"\n"; print qq(     <li><a href="http://www.euro-superconductors.com/de-garantie.html">Garantie</a></li>),"\n"; print qq(     <li><a href="http://www.euro-superconductors.com/de-kontakt.html">Kontakt</a></li>),"\n"; print qq(     <li><a href="http://www.euro-superconductors.com/de-impressum.html">Impressum</a></li>),"\n"; print qq(     <li><a href="http://www.euro-superconductors.com/de-quellen.html">Quellen</a></li>),"\n"; print qq(     <li><a href="http://www.euro-superconductors.com/de-agb.html">AGB</a></li>),"\n"; print qq(     </ul>),"\n"; print qq(<a class="grafiklink" href="http://www.euro-superconductors.com/index.html"><img class="zeichen-unten-rechts" src="http://www.euro-superconductors.com/up-symbol.png" width="50" height="18" alt="^"></a>),"\n"; print qq(</div>),"\n"; print qq(<div class="schiebe-box-rechts">),"\n"; print qq(</div>),"\n"; print qq(<div class="zentrum-box-mitte2">),"\n"; print qq(<h1>Produkte</h1>),"\n"; print qq(<p>&nbsp</p>),"\n"; print qq(<ul class="zentrum-liste">),"\n"; print qq(    <li><a class="littlelink" href="http://www.euro-superconductors.com/de-produkte.html">Supraleiter</a></li>),"\n"; print qq(    <li><a class="littlelink" href="http://www.euro-superconductors.com/de-produkte-zu.html">Zubehör</a></li>),"\n"; print qq(    <li><a class="littlelink" href="http://www.euro-superconductors.com/http://localhost/cgi-bin/de-produkte-be.pl">Bestellung</a></li>),"\n"; print qq(</ul>),"\n"; print qq(<div class="zentrum-viewer-be">),"\n"; print qq(<p class="minizeile">&nbsp</p>),"\n"; print qq(<form action="http://www.euro-superconductors.com/cgi-bin/warenkorb.pl" method="get">),"\n"; print qq(<label>),"\n"; print qq(<select class="mengenbreite" size="1" name="menge01">),"\n"; print qq(<option value="">---</option>),"\n"; print qq(<option value="1">1x</option>),"\n"; print qq(<option value="2">2x</option>),"\n"; print qq(<option value="3">3x</option>),"\n"; print qq(<option value="4">4x</option>),"\n"; print qq(<option value="5">5x</option>),"\n"; print qq(<option value="6">6x</option>),"\n"; print qq(<option value="7">7x</option>),"\n"; print qq(<option value="8">8x</option>),"\n"; print qq(<option value="9">9x</option>),"\n"; print qq(<option value="10">10x</option>),"\n"; print qq(</select>),"\n"; print qq(</label>),"\n"; print qq(<label>),"\n"; print qq(<select class="artikelbreite" size="1" name="artikel01">),"\n"; print qq(<option value="">---</option>),"\n"; print qq(<option value="10x5">YBCO&nbsp; 10x5 mm</option>),"\n"; print qq(<option value="10x5x2">YBCO&nbsp; 10x5x2 mm</option>),"\n"; print qq(<option value="20x5">YBCO&nbsp; 20x5 mm</option>),"\n"; print qq(<option value="20x5x6">YBCO&nbsp; 20x5x6 mm</option>),"\n"; print qq(<option value="30x5">YBCO&nbsp; 30x5 mm</option>),"\n"; print qq(<option value="30x5x8">YBCO&nbsp; 30x5x8 mm</option>),"\n"; print qq(<option value="40x5">YBCO&nbsp; 40x5 mm</option>),"\n"; print qq(<option value="40x5x10">YBCO&nbsp; 40x5x10 mm</option>),"\n"; print qq(<option value="50x8">YBCO&nbsp; 50x8 mm</option>),"\n"; print qq(<option value="50x8x14">YBCO&nbsp; 50x8x14 mm</option>),"\n"; print qq(<option value="60x8">YBCO&nbsp; 60x8 mm</option>),"\n"; print qq(<option value="60x8x14">YBCO&nbsp; 60x8x14 mm</option>),"\n"; print qq(<option value="70x8">YBCO&nbsp; 70x8 mm</option>),"\n"; print qq(<option value="70x8x14">YBCO&nbsp; 70x8x14 mm</option>),"\n"; print qq(<option value="80x10">YBCO&nbsp; 80x10 mm</option>),"\n"; print qq(<option value="80x10x22">YBCO&nbsp; 80x10x22 mm</option>),"\n"; print qq(<option value="90x10">YBCO&nbsp; 90x10 mm</option>),"\n"; print qq(<option value="90x10x22">YBCO&nbsp; 90x10x22 mm</option>),"\n"; print qq(<option value="100x10">YBCO 100x10 mm</option>),"\n"; print qq(<option value="100x10x22">YBCO 100x10x22 mm</option>),"\n"; print qq(</select>),"\n";

                                                print qq(</label>),"\n"; print qq(<p class="minizeile">&nbsp</p>),"\n"; print qq(<label><input type="radio" name="task" value="plus-things"> Artikel hinzufügen!</label><br>),"\n"; print qq(<label><input type="radio" name="task" value="minus-things"> Artikel löschen!</label><br>),"\n"; print qq(<label><input type="radio" name="task" value="show-things"> Warenkorb ansehen!</label><br>),"\n"; print qq(<label><input type="radio" name="task" value="order-things"> Warenkorb bestellen!</label><br>),"\n"; print qq(<p class="minizeile">&nbsp</p>),"\n"; print qq(<input type="submit" value="Ausführen!" />),"\n";

                                                print qq(</form>),"\n";

                                                print qq(<p class="report">Ihre IP: ),$ENV {'REMOTE_ADDR'}; print qq(</p>),"\n"; print qq(<p class="report">Ihre Menge: ),$menge01; print qq(</p>),"\n"; print qq(<p class="report">Ihr Artikel: ),$artikel01; print qq(</p>),"\n"; print qq(<p class="report">Ihre gewählte Aufgabe: ),$task; print qq(</p>),"\n"; print qq(<p class="report">Ihr Cookie-Inhalt: ),$Zeitstempel; print qq(</p>),"\n";

                                                print qq(</div>),"\n"; print qq(<p></p>),"\n"; print qq(<img class="kleine-ecke-oben-links" src="http://www.euro-superconductors.com/kleine-ecke-oben-links.png" width="8" height="8" alt="ecke-o-l">),"\n"; print qq(<img class="kleine-ecke-oben-rechts" src="http://www.euro-superconductors.com/kleine-ecke-oben-rechts.png" width="8" height="8" alt="ecke-o-r">),"\n"; print qq(<img class="kleine-ecke-unten-rechts" src="http://www.euro-superconductors.com/kleine-ecke-unten-rechts.png" width="8" height="8" alt="ecke-u-r">),"\n"; print qq(<img class="kleine-ecke-unten-links" src="http://www.euro-superconductors.com/kleine-ecke-unten-links.png" width="8" height="8" alt="ecke-o-l">),"\n"; print qq(</div>),"\n";

                                                print qq(</body>),"\n"; print qq(</html>),"\n"; print qq(</html>),"\n";

                                                Ja, wie gesagt - es geht - und keiner weiss warum >:-)

                                                Gruß

                                                Gary

                                                1. Ich habe mir noch mal die Mühe gemacht, und alles so wie du empfiehlst eingegeben. Leider geht es auf deine Weise nicht.

                                                  Natürlich geht das.

                                                  Ich habe das ausprobiert, weil meine Version auch nur unter der standartmethode läuft. Sobald ich use strict eingebe geht nichts mehr.

                                                  Natürlich geht das, ich hab es ebenfalls ausprobiert und selbst deine Version ist sogar strict

                                                  Nachfolgend mal ausnamsweise den ganzen Code.

                                                  Wenn ich an all die alten Perl Threads von dir denke, dann ist in deinem Code so wenig von dem drin, was wir dir ermpfohlen hatten, dass es wirklich müsig ist sich Gedanken zu machen.

                                                  Ah, wegen der Funktion ober CGI::Cookie und CGI::cookie ---> Mein Perl _will_ Cookie groß geschrieben. Klein meckert er no such xxx fund usw...

                                                  Sicher nicht. Das Problem ist, du verwechselst etwas, weil du immer noch nicht verstanden hast, was Module, Packages, Objekte und Funktionen sind.

                                                  Du bindest CGI::Cookie ein und erzeugst daraus ein Objekt. Das ist nicht nötig, das Modul wird bereits vom Modul CGI eingebunden.

                                                  Das musst du auch nur EINMAL einbinden (auch wenn es im Prinzip egal ist ob du es zweimal im Code schreibst, es zeigt aber dass du immer noch nicht die Doku gelesen hast).

                                                  Das du das so benutzt: use CGI qw(:standard); zeigt, dass du nicht weißt was du tust.

                                                  Das Cookie Objekt wird von der Funktion Cookie->cookie() erzeugt, dass musst nicht du machen.

                                                  Hier der Vorläufige Perl-Code:

                                                  Neben den oben erwähnten Mängeln muss eines dazu gesagt werden: BENUTZE FUNKTIONEN!!!!!

                                                  Sowas ist furchtbar und da war es schon zu Zeiten des C64

                                                  ###############

                                                  Datenfilter

                                                  ###############
                                                  $anrede =~ s/;//g;
                                                  $vorname =~ s/;//g;
                                                  $name =~ s/;//g;
                                                  $geboren =~ s/;//g;
                                                  $hausnummer =~ s/;//g;
                                                  $land =~ s/;//g;
                                                  $plz =~ s/;//g;
                                                  $ort =~ s/;//g;
                                                  $telefon =~ s/;//g;
                                                  $fax =~ s/;//g;
                                                  $email =~ s/;//g;

                                                  12 Mal der gleiche Code, vor allem warum filterst du nur den Strichpunkt?

                                                  #############

                                                  HTML-Kopf

                                                  #############
                                                  print CGI->header(-type=> 'text/html', -cookie=>$cookie1);

                                                  Hier benutzt du eine Funktion des sehr grossen CGI.pm Modul.

                                                  Ich hab dir in dem Thread schon mehrmals einen Link auf die Dokumentation gezeigt. Wenn du sie gelesen hättest, würdest du sehen, dass das Modul noch viel, viel mehr kann, das fängt an hier:

                                                  print qq(<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">),"\n";
                                                  print qq(<html>),"\n";
                                                  print qq(<head>),"\n";
                                                  print qq(<title>Euro-Superconductors</title>),"\n";
                                                  print qq(<link rel="stylesheet" type="text/css" href="http://localhost/eus-home-de.css" media="screen, projection" >),"\n";
                                                  print qq(<meta http-equiv="Content-Language" content="de">),"\n";

                                                  [usw. usf.]

                                                  print qq(</head>),"\n";

                                                  Den ganzen Header Kram kann das CGI Modul besser und schöner (wobei die meisten meta Angaben völlig überflüssig sind).

                                                  print qq(<body>),"\n";
                                                  print qq(<div class="hintergrund-oben">),"\n";
                                                  print qq(</div>),"\n";
                                                  print qq(<div class="hintergrund-oben-traverse">),"\n";
                                                  print qq(</div>),"\n";
                                                  print qq(<div class="hintergrund-unten">),"\n";
                                                  print qq(</div>),"\n";
                                                  print qq(<div class="hintergrund-links">),"\n";
                                                  print qq(</div>),"\n";
                                                  print qq(<div class="hintergrund-rechts">),"\n";
                                                  print qq(</div>),"\n";
                                                  print qq(<div class="ecke-oben-links">),"\n";
                                                  print qq(</div>),"\n";
                                                  print qq(<div class="ecke-oben-rechts">),"\n";
                                                  print qq(</div>),"\n";
                                                  print qq(<div class="ecke-unten-links">),"\n";
                                                  print qq(</div>),"\n";
                                                  print qq(<div class="ecke-unten-rechts">),"\n";
                                                  print qq(</div>),"\n";
                                                  print qq(<div class="haupt-banner">),"\n";
                                                  print qq(</div>),"\n";

                                                  Mal abgesehen davon, dass ich sowas für ein riesen Gemurkse halte, nur um einen vermeintlich "schönen" Rahmen zu machen, das HTML dermassen aufblähen, ist eben das: gebläht

                                                  Stattdessen würde sich in so einem Fall anbieten ein Template zu verwenden. HTML::Template ist zwar veraltet, aber für den Einstieg durchaus brauchbar. Aber da du eh keine Dokumentationen liest, ist der Hinweis wohl überflüssig.

                                                  print qq(<select class="mengenbreite" size="1" name="menge01">),"\n";
                                                  print qq(<option value="">---</option>),"\n";
                                                  print qq(<option value="1">1x</option>),"\n";
                                                  print qq(<option value="2">2x</option>),"\n";
                                                  print qq(<option value="3">3x</option>),"\n";
                                                  print qq(<option value="4">4x</option>),"\n";
                                                  print qq(<option value="5">5x</option>),"\n";
                                                  print qq(<option value="6">6x</option>),"\n";
                                                  print qq(<option value="7">7x</option>),"\n";
                                                  print qq(<option value="8">8x</option>),"\n";
                                                  print qq(<option value="9">9x</option>),"\n";
                                                  print qq(<option value="10">10x</option>),"\n";
                                                  print qq(</select>),"\n";

                                                  Hast du dir schon mal angeschaut was das CGI Modul kann?
                                                  Nein?

                                                  Genau für solche Formularelemente ist es top und erspart dir Arbeit und macht den Code lesbarer.

                                                  Ja, wie gesagt - es geht - und keiner weiss warum >:-)

                                                  Wenn das dir reicht.

                                                  Wie gesagt, lese Dokumentationen!
                                                  Schau dir an welche Module es gibt und guck dir auch mal ein paar Grundllagen an - auch dazu gibt es bei perldoc viele, viele nützliche Seiten. Ich persönlich weigere mich dir weiterhin zu helfen, solange ich nicht erkenne, dass du das wirklich tust.

                                                  Struppi.

                                                  1. Ich habe mir noch mal die Mühe gemacht, und alles so wie du empfiehlst eingegeben. Leider geht es auf deine Weise nicht.

                                                    Natürlich geht das.

                                                    Ich könnte schreiben: Nein! aber du glaubst es ja eh nicht.

                                                    Natürlich geht das, ich hab es ebenfalls ausprobiert und selbst deine Version ist sogar strict

                                                    Ich kann nur meine Tests schildern: use strict; - nix geht mehr!

                                                    Wenn ich an all die alten Perl Threads von dir denke, dann ist in deinem Code so wenig von dem drin, was wir dir ermpfohlen hatten, dass es wirklich müsig ist sich Gedanken zu machen.

                                                    ? In dem Code ist so gut wie gar nichts drin. Nur ein paar Skalare und HTML-Ausgabe. Was soll dabei professionell drinne sein?

                                                    Du bindest CGI::Cookie ein und erzeugst daraus ein Objekt. Das ist nicht nötig, das Modul wird bereits vom Modul CGI eingebunden.

                                                    Ich habe keine Ahnung, ob das nörig ist, oder nicht. Ich kann hier nur testen. Und der Test hat gezeigt, daß alle Versionen die ich im Internet fand, und die hier vorgeschlagen wurden immer nur eines können: Entweder ein Cookie oder ein HTML-Kopf. Ich kann doch nichts dafür, wenn es nur so wie in meinem Code steht, funktioniert.

                                                    Das du das so benutzt: use CGI qw(:standard); zeigt, dass du nicht weißt was du tust.

                                                    Auch da gebe ich dir völlig recht - ich habe keine genaue Vorstellung über Module. Warum ich das zusätzlich im Code habe? -> Weil wenn ich es herausnehme, funktioniert es wieder nicht mit Cookie und HTML-Head.
                                                    Es steht im Code, weil ein Test ohne diese Zeile nicht zum Erfolg führte.
                                                    Wie oben geschrieben: Ich kann nur Programmieren, und schauen, was er macht.

                                                    Das Cookie Objekt wird von der Funktion Cookie->cookie() erzeugt, dass musst nicht du machen.

                                                    Du magst ja recht haben, bei dir wird das so sein - ich galaube dir! Hier gilt es aber nicht-  warum auch immer.

                                                    Neben den oben erwähnten Mängeln muss eines dazu gesagt werden: BENUTZE FUNKTIONEN!!!!!

                                                    Sowas ist furchtbar und da war es schon zu Zeiten des C64

                                                    ###############

                                                    Datenfilter

                                                    ###############
                                                    $anrede =~ s/;//g;
                                                    $vorname =~ s/;//g;
                                                    $name =~ s/;//g;
                                                    [...]
                                                    12 Mal der gleiche Code, vor allem warum filterst du nur den Strichpunkt?

                                                    1. So hab ich Zugriff auf jede einzelne Filteroption - ist doch eher ein Vorteil.
                                                    2. Weil ich fast ausschließlich mit csv-Dateien arbeite, und diese von mir naturgemäß mit Semikolon getrennt werden. Was ein vom Benutzer eingegebenes Semikolon in einer csv - Datei anrichten kann ist klar.

                                                    #############

                                                    HTML-Kopf

                                                    #############
                                                    print CGI->header(-type=> 'text/html', -cookie=>$cookie1);

                                                    Hier benutzt du eine Funktion des sehr grossen CGI.pm Modul.

                                                    Die habe ich von MaekItalo abgekupfert und weiter umgebaut, bis es endlich geklappt hat.

                                                    Ich hab dir in dem Thread schon mehrmals einen Link auf die Dokumentation gezeigt. Wenn du sie gelesen hättest, würdest du sehen, dass das Modul noch viel, viel mehr kann,

                                                    Die Perl-Zwiebelknolle ist bei mir im Browser oben als Quicklink angelegt. Da lese ich öfters mal was nach. Leider nütz die Doku auch nicht immer: Da sind oft Platzhalter oder Optionen mit angegeben, die man nicht so einfach begreift. Oftmals setzt die Doku auch voraus, das gewisse einbindungen von Modulen bereits gemacht worden sind. Aber nicht genau wie man das macht.
                                                    Und stellenweise ist sie auch noch unverständlich geschrieben.

                                                    das fängt an hier:

                                                    print qq(<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">),"\n";
                                                    print qq(<html>),"\n"; [...]
                                                    print qq(</head>),"\n";

                                                    Den ganzen Header Kram kann das CGI Modul besser und schöner (wobei die meisten meta Angaben völlig überflüssig sind).

                                                    Die qq sind meine Lieblinge! Ich Kopiere HTML-Code in das Perlprog und schmücke ihn nur noch vorne mit  print qq(  und hinten mit   ),"\n";  aus.
                                                    Fertig ist Perlgerechter HTML-Code. Mir ist es so lieber, weil ich 1:1 den HTML-Quellcode vergleichen und editieren kann.

                                                    Meta existiert, also kann ein sauberer HTML-Quelltext auch welche enthalten.

                                                    Mal abgesehen davon, dass ich sowas für ein riesen Gemurkse halte, nur um einen vermeintlich "schönen" Rahmen zu machen, das HTML dermassen aufblähen, ist eben das: gebläht

                                                    Das ist HTML-Inhalt, und hat mit dem Perlverhalten nichts zu tun - abgesehen davon weiß ich inzwischen selber, das beim CSS wohl ein wenig Nachbesserungsbedarf besteht. Ich habe dazu ja noch einen offenen Thread.

                                                    Stattdessen würde sich in so einem Fall anbieten ein Template zu verwenden.

                                                    Das kenne ich leider nicht - und kann deshalb auch nichts dazu sagen.

                                                    Hast du dir schon mal angeschaut was das CGI Modul kann?
                                                    Nein?

                                                    Ich kann cgi param übergeben und mit den Daten arbeiten.

                                                    Genau für solche Formularelemente ist es top und erspart dir Arbeit und macht den Code lesbarer.

                                                    ? Wo Formular ?

                                                    Ja, wie gesagt - es geht - und keiner weiss warum >:-)

                                                    Wenn das dir reicht.

                                                    Natürlich ist das ganz und gar nicht meine Auffassung vom Programmieren. Aber was will ich machen? Nach allen Tests hier, ist dies die einzige Variante, die ich gefunden habe die in der Lage ist HTML-Kopf und Cookie Teitgleich( bei einem Aufruf auszugeben, ohne ein Fehlerlog zu produzieren.

                                                    Warum sich hier die Theorie von der Praxis trennt - ich weiss es wirklich nicht!

                                                    Ich persönlich weigere mich dir weiterhin zu helfen, solange ich nicht erkenne, dass du das wirklich tust.

                                                    Das kannst du natürlich tun. Mir ist aber trotzdem wichtig, daß du weist, daß ich dich keinesfalls ärgern will. Ich kann dir nur sagen, was mein PC macht, egal ob ich die Beispiele von Perldoc oder hier von Euch eingebe.
                                                    Es ist wie es ist.

                                                    Danke nochmals

                                                    Gruß Gary

                                                    PS.: Wenn ich jetzt genug Kohle hätte, würde ich dich mit dem Helikopter nach süddeutschland einfliegen lassen, um dir zu beweisen, das es so ist wie ich sage! Du könntest eigenhändig deinen bevorzugten Code eintippen und würdest sehen, das es so ist.

                                                    1. Ich habe mir noch mal die Mühe gemacht, und alles so wie du empfiehlst eingegeben. Leider geht es auf deine Weise nicht.

                                                      Natürlich geht das.

                                                      Ich könnte schreiben: Nein! aber du glaubst es ja eh nicht.

                                                      Nein, ich weiß es und du kannst es hier sehen, dass es funktioniert.

                                                      Natürlich geht das, ich hab es ebenfalls ausprobiert und selbst deine Version ist sogar strict

                                                      Ich kann nur meine Tests schildern: use strict; - nix geht mehr!

                                                      s.o.

                                                      Wenn ich an all die alten Perl Threads von dir denke, dann ist in deinem Code so wenig von dem drin, was wir dir ermpfohlen hatten, dass es wirklich müsig ist sich Gedanken zu machen.

                                                      ? In dem Code ist so gut wie gar nichts drin. Nur ein paar Skalare und HTML-Ausgabe. Was soll dabei professionell drinne sein?

                                                      * use CGI;
                                                      * benutze Funktionen/subs
                                                      * use strict

                                                      Du bindest CGI::Cookie ein und erzeugst daraus ein Objekt. Das ist nicht nötig, das Modul wird bereits vom Modul CGI eingebunden.

                                                      Ich habe keine Ahnung, ob das nörig ist, oder nicht. Ich kann hier nur testen.

                                                      Nein du kannst auch lesen, oder? warum tust du es nicht?

                                                      Das du das so benutzt: use CGI qw(:standard); zeigt, dass du nicht weißt was du tust.

                                                      Auch da gebe ich dir völlig recht - ich habe keine genaue Vorstellung über Module. Warum ich das zusätzlich im Code habe? -> Weil wenn ich es herausnehme, funktioniert es wieder nicht mit Cookie und HTML-Head.

                                                      Natürlich funktioniert es, weil du das Modul ja bereits eingebunden hast mit use CGI -no_xhtml

                                                      Neben den oben erwähnten Mängeln muss eines dazu gesagt werden: BENUTZE FUNKTIONEN!!!!!

                                                      Sowas ist furchtbar und da war es schon zu Zeiten des C64

                                                      ###############

                                                      Datenfilter

                                                      ###############
                                                      $anrede =~ s/;//g;
                                                      $vorname =~ s/;//g;
                                                      $name =~ s/;//g;
                                                      [...]
                                                      12 Mal der gleiche Code, vor allem warum filterst du nur den Strichpunkt?

                                                      1. So hab ich Zugriff auf jede einzelne Filteroption - ist doch eher ein Vorteil.

                                                      Wenn du 12 Mal das gleiche tust ist es kein Vorteil diesen Code zwölmal zu schreiben, wenn du merkst dass du etwas anderes filtern willst, musst du zwölfmal den Code umschreiben.

                                                      1. Weil ich fast ausschließlich mit csv-Dateien arbeite, und diese von mir naturgemäß mit Semikolon getrennt werden. Was ein vom Benutzer eingegebenes Semikolon in einer csv - Datei anrichten kann ist klar.

                                                      Hier sehe ich kein CSV ich sehe auch nicht warum es hier in dem Code ein Problem damit geben sollen. Du solltest dort filtern, wo es Probleme geben kann, nicht einfach wahllos mal alles entfernen.

                                                      Die Perl-Zwiebelknolle ist bei mir im Browser oben als Quicklink angelegt. Da lese ich öfters mal was nach. Leider nütz die Doku auch nicht immer: Da sind oft Platzhalter oder Optionen mit angegeben, die man nicht so einfach begreift. Oftmals setzt die Doku auch voraus, das gewisse einbindungen von Modulen bereits gemacht worden sind. Aber nicht genau wie man das macht.
                                                      Und stellenweise ist sie auch noch unverständlich geschrieben.

                                                      Nein, die Doku setzt voraus, dass du ein gewisses Wissen über Perl hast. Du musst Wissen, wie Arrays und Hashes in Perl funktionieren, wie Arrays of Arrays und List of Hashes. Was Referenzen sind und wie du damit umgehst. Insofern hilft hier nur lesen.

                                                      Die qq sind meine Lieblinge! Ich Kopiere HTML-Code in das Perlprog und schmücke ihn nur noch vorne mit  print qq(  und hinten mit   ),"\n";  aus.
                                                      Fertig ist Perlgerechter HTML-Code. Mir ist es so lieber, weil ich 1:1 den HTML-Quellcode vergleichen und editieren kann.

                                                      Dann willst du HTML::Template benutzen!

                                                      Meta existiert, also kann ein sauberer HTML-Quelltext auch welche enthalten.

                                                      Ich habe nicht gesagt das meta nicht existiert, es sind nur völlig überflüssige Angaben die du da reinbaust.

                                                      Stattdessen würde sich in so einem Fall anbieten ein Template zu verwenden.
                                                      Das kenne ich leider nicht - und kann deshalb auch nichts dazu sagen.

                                                      Ist google kaputt? Ich hab wirklich keine Lust ständig Links rauszsuchen (wenn ich dir den nicht sowieso schon gezeiogt hatte) um dann hinterher festzustellen, es ist dir zu mühselig und du willst weiterhin auf dem Gemurkse stehen bleiben.

                                                      Hast du dir schon mal angeschaut was das CGI Modul kann?
                                                      Nein?
                                                      Ich kann cgi param übergeben und mit den Daten arbeiten.

                                                      OK, hier ist Schluss :-(

                                                      Struppi.

                                                      1. Hi Struppi

                                                        use strict; >> eingebaut!
                                                        use CGI qw(:standard); >> entfernt!

                                                        Ergebnis: <ganz-leise> -es läuft- </ganz-leise>

                                                        Hast du dir schon mal angeschaut was das CGI Modul kann?
                                                        Nein?
                                                        Ich kann cgi param übergeben und mit den Daten arbeiten.

                                                        OK, hier ist Schluss :-(

                                                        Unglücklich ausgedrückt. CGI ist Schnittstelle zwischen Browser und Server zur Übergabe von URL-Parametern wie sie bit get mitgeschickt werden. Außerdem erlaubt CGI das Auslesen weiterer Parameter. Die ich sicher noch nicht alle kenne. Teilweise sind die auch über den Server greifbar : IP, Von welcher seite kommt der Besucher, Was für ein Browser nutz er und vieles mehr. Mit Param meinte ich Parameter, oder wie du diese Sendestückchen nennen willst.

                                                        Gruß Gary

                                                        1. Unglücklich ausgedrückt. CGI ist Schnittstelle zwischen Browser und Server ...

                                                          Ich sprach vom CGI Modul und dem was es kann.

                                                          Struppi.

                                                          1. Hi Struppi

                                                            Natürlich weis ich nicht alles über cgi. Ich weis das ich es für die Formulardatenübermittlung brauche. Und das es beispielsweise die komischen Zeichenumwandlung bei ö ä ü usw., die method="get" mitschickt für mich managed.

                                                            Es sollte auch die Cookie managen:
                                                            ------------------------------------
                                                            %cookies = fetch CGI::Cookie;
                                                            ------------------------------------

                                                            oder:
                                                            ------------------------------------
                                                            %cookies = fetch CGI::Cookie;
                                                            ------------------------------------

                                                            oder:
                                                            ------------------------------------
                                                            foreach (keys %cookies) {
                                                                                    do_something($cookies{$_});
                                                                                    }
                                                            ------------------------------------

                                                            oder:
                                                            ------------------------------------
                                                            CGI::Cookie->fetch($r);
                                                            ------------------------------------

                                                            Aber keines funktioniert. Da sind wir jetzt beim Thema lesen->die Doku...

                                                            Was soll das %-Zeichen? Es gibt Skalare mit "$" und arrays mit "@" eingeleitet. Über Prozent finde ich nix.

                                                            Laut Perl dok soll das % auch ein Array sein. Es heist, daß das Cookie als Array auszulesen ist. Was passiert bei der Cookieübermittlung? Liefert der Browser des Clients alle Cookies aus, oder nur die der Aussendeseite?

                                                            Das Cookie setzt das Perl ja jetzt. Aber ich probier schon ne Weile, wie das Perl das auch wieder auslesen kann.

                                                            Hier habe ich mal ein Schema angefangen.

                                                            Im Prinzip will ich nur ein Cookie auslesen.
                                                            Wie stell ich das an?

                                                            Gruß Gary

                                                            1. Hi

                                                              Es geht, hatte vergessen, das ich mir das ja schon notiert hatte:

                                                              $ENV {HTTP_COOKIE};

                                                              Gruß Gary

                                                            2. Natürlich weis ich nicht alles über cgi. Ich weis das ich es für die Formulardatenübermittlung brauche. Und das es beispielsweise die komischen Zeichenumwandlung bei ö ä ü usw., die method="get" mitschickt für mich managed.

                                                              Das ist ein winziger Bruchteil von dem was das Modul macht.

                                                              Es sollte auch die Cookie managen:

                                                              %cookies = fetch CGI::Cookie;

                                                              Wenn du nicht die Doku liest, hat das keinen taug.

                                                              Aber keines funktioniert. Da sind wir jetzt beim Thema lesen->die Doku...

                                                              Genau, da steht es anders drin, ich hab dir sogar schon gezeihgt wie und du hattest es auch in deinem Code.

                                                              Was soll das %-Zeichen? Es gibt Skalare mit "$" und arrays mit "@" eingeleitet. Über Prozent finde ich nix.

                                                              Lies die Doku :-(

                                                              Laut Perl dok soll das % auch ein Array sein.

                                                              Nein, es ist ein Hash

                                                              Im Prinzip will ich nur ein Cookie auslesen.
                                                              Wie stell ich das an?

                                                              so wie es in der Doku zum CGI Modul steht.

                                                              Struppi.

                                                              1. Hi Struppi

                                                                Lies die Doku :-(

                                                                Bin ja dabei *g*

                                                                Laut Perl dok soll das % auch ein Array sein.

                                                                Nein, es ist ein Hash

                                                                Ja, wobei die doch ein wenig ähnlich sind: In beide passt mehr als ein Wert rein - soweit ich das verstanden habe *hoffentlich gibts jetzt keine "Haue"*

                                                                Aufbau meines Cookies (Beispiel):
                                                                -----------------------------------
                                                                eus-session=1_10x5_50.00

                                                                Cookiename = Menge_Artikel_Preis
                                                                -----------------------------------

                                                                Trenner ist "_" <-das wird im Cookie übertragen und in Perl mit split zerlegt

                                                                bei zwei Artikeln:
                                                                -----------------------------------
                                                                eus-session=1_10x5_50.00_5_10x5x2_50.00

                                                                Cookiename = Menge_Artikel_Preis_Menge_Artikel_Preis
                                                                -----------------------------------

                                                                Da sieht man dann auch schon die Problematik. Beim Zerlegen des Cookies in seine Bestandteile (Menge_Artikel_Preis) weis ich ja gar nicht, wie viele Artikel cookie liefert. Weiteres Problem: STeht in der überlieferten Kette vorne irgendwo 2_ (2 Stück) vom 10x5er Artikel und hinten etwas anderes, und der Besteller drückt hinzufügen 1_ (1 Stück) vom 10x5er, dann muss Perl das erkennen und insgesamt 3_ (3 Stück) vom 10x5er Artikel daraus machen.

                                                                Ich möchte das System so, das HTML sowohl die Menge, den Artikel und den Preis Liefert.

                                                                Einen Vorschlag, wie ma diese und weitere dazukommende Artikel vernünftig in einen Keks einpackt?

                                                                Ausgangsseite ist hier

                                                                http://www.euro-superconductors.com/de-produkte-be.html
                                                                Die Preise sind schon im HTML-Code drin (es sind nur wenige Artikel und es kommen auch nicht viel mehr dazu - deswegen braucht man nicht unbedingt eine DB)

                                                                Das Perl ist noch das alte. Das Cookie Auslesen funktioniert nur hier bei mir lokal. Also bracht ihr da nichts testen ;-)

                                                                Gruß Gary

                                                                1. Lies die Doku :-(
                                                                  Bin ja dabei *g*

                                                                  Das ist aus deinen Code nicht erkennbar. Wie du Cookies setzt und liest, steht in der Doku zum CGI Modul und ist völlig simpel.
                                                                  Warum du den umständlichen Weg über das CGI::Cookie Modul wählst, ist ein Rätsel, da dies alles das CGI Modul für dich macht und unrelvant für deinen Code wäre.

                                                                  Laut Perl dok soll das % auch ein Array sein.

                                                                  Nein, es ist ein Hash
                                                                  Ja, wobei die doch ein wenig ähnlich sind: In beide passt mehr als ein Wert rein - soweit ich das verstanden habe *hoffentlich gibts jetzt keine "Haue"*

                                                                  Lies die Doku - diesmal meine ich nicht die zum CGI Modul, sondern die Per Doku, wo alles steht, was du über Datentypen in Perl Wissen musst.

                                                                  Struppi.

                                                                  1. Hi Struppi

                                                                    Lies die Doku :-(
                                                                    Bin ja dabei *g*

                                                                    Und immernoch lese ich...

                                                                    Dieses logische Problem läßt sich aber nicht lösen:

                                                                    -------------------------------------------------------------
                                                                    -> von hier ....
                                                                    if ($sessioncut =~ m/_/) {
                                                                                             $zeichenanzahl = $zeichenanzahl + 1;
                                                                                             }
                                                                    -> bis hier ...

                                                                    $zeichenanzahl = ($zeichenanzahl +1) / 3;
                                                                    -------------------------------------------------------------

                                                                    Die if-Schleife soll solange laufen, bis $sessioncut fertig ausgelesen ist.
                                                                    Ich kann aber per substr keine feste Länge angeben, weil die unbekannt ist.

                                                                    Klizekleinen Hinweis?

                                                                    Gruß Gary

                                                                    1. Hi zusammen

                                                                      Irgendwas zählt hier falsch:
                                                                      ---------------------------------------------------------------
                                                                      for(my $i = 0; $i <= length($sessioncut); $i++) {
                                                                      if ($sessioncut =~ m/'_'/) {
                                                                                                 $zeichenanzahl = $zeichenanzahl + 1;
                                                                                                 }
                                                                                                                      }

                                                                      $zeichenanzahl = ($zeichenanzahl + 1) / 3;
                                                                      ---------------------------------------------------------------

                                                                      Ich komme einfach nicht weiter :-(

                                                                      Gruß Gary

                                                                      1. Abend zusammen

                                                                        Ich versuch mal präziesere Angaben zu machen:

                                                                        $sessioncut enthält z.B. folgenden String:
                                                                        ---------------------------
                                                                        1_10x5_50.00_2_10x5x2_50.00
                                                                        ---------------------------

                                                                        Ich möchte die Unterstriche in diesem String zählen.
                                                                        Dann möchte ich zum Ergebnis eins (+1) dazuzählen.
                                                                        Dann den so erhaltenen Wert durch drei (geteilt 3) teilen.

                                                                        -> Ergebnis = Anzahl Datensätze (Artikel).

                                                                        Der Perl-Code dazu sieht so aus:
                                                                        -----------------------------------------------
                                                                        for(my $i = 0; $i <= length($sessioncut); $i++) {
                                                                        if ($sessioncut =~ m/_/) {
                                                                                                 $zeichenanzahl = $zeichenanzahl + 1;
                                                                                                 }
                                                                                                                        }

                                                                        $zeichenanzahl = ($zeichenanzahl + 1) / 3;
                                                                        -----------------------------------------------
                                                                        Die for Schleife ermittelt über length die Länge von $sessioncut und läuft so lange durch, bis $sessioncut endet. Bei jedem Durchlauf sieht die if-Anweisung nach, ob ein Unterstrich gefunden wurde. Wenn ja, erhöht sich $zeichenanzahl um eins.
                                                                        Unter der For-Schleife wird dann eins dazugezählt und duch drei dividiert.

                                                                        Soweit zur Theorie...

                                                                        Irgendwo muss in der Schleife ein Fehler sein.

                                                                        Er liefert 4,666666666667 (Periode) statt 5 (Unterstriche) plus 1 (dazu) Ergebnis durch drei also (5+1)/3 = 2 Artikel!

                                                                        Warum?

                                                                        1. Abend zusammen

                                                                          Ich versuch mal präziesere Angaben zu machen:

                                                                          $sessioncut enthält z.B. folgenden String:

                                                                          1_10x5_50.00_2_10x5x2_50.00

                                                                          Ich möchte die Unterstriche in diesem String zählen.

                                                                          $cnt = $sessioncut =~ tr/_/_/;

                                                                          Dann möchte ich zum Ergebnis eins (+1) dazuzählen.

                                                                          $cnt++;

                                                                          Dann den so erhaltenen Wert durch drei (geteilt 3) teilen.

                                                                          $cnt /= 3;

                                                                          -> Ergebnis = Anzahl Datensätze (Artikel).

                                                                          Mann du machst dir echt das Leben schwer.

                                                                          my @data = split(/_/, $sessioncut);
                                                                          my @aricles;
                                                                          for(my $i=0; i < @data, i+=3 ){
                                                                              push @article, @data[$i .. $i+2];
                                                                          }

                                                                          Der Perl-Code dazu sieht so aus:

                                                                          Bloss nicht hingucken...


                                                                          for(my $i = 0; $i <= length($sessioncut); $i++) {
                                                                          if ($sessioncut =~ m/_/) {
                                                                                                   $zeichenanzahl = $zeichenanzahl + 1;
                                                                                                   }
                                                                                                                          }

                                                                          Hier testest du pro Zeichen in $sessionslut, ob der Text ein _ enthält.
                                                                          Es zählt mitnichten die _

                                                                          $zeichenanzahl = ($zeichenanzahl + 1) / 3;

                                                                          Das kannst du einfacher haben:
                                                                          $bukllshit = length($sessioncut)+1 / 3


                                                                          Die for Schleife ermittelt über length die Länge von $sessioncut und läuft so lange durch, bis $sessioncut endet. Bei jedem Durchlauf sieht die if-Anweisung nach, ob ein Unterstrich gefunden wurde. Wenn ja, erhöht sich $zeichenanzahl um eins.

                                                                          Genau, und es findet immer ein _

                                                                          Unter der For-Schleife wird dann eins dazugezählt und duch drei dividiert.

                                                                          Soweit zur Theorie...

                                                                          Irgendwo muss in der Schleife ein Fehler sein.

                                                                          Nö, der Fehler ist in deinem Denken. Die Schleife ist durchaus OK, wenn auch programmatischer Nonsense.

                                                                          Er liefert 4,666666666667 (Periode) statt 5 (Unterstriche) plus 1 (dazu) Ergebnis durch drei also (5+1)/3 = 2 Artikel!

                                                                          Warum?

                                                                          Weil du das so programmiert hast.

                                                                          mfg Beat

                                                                          --
                                                                          ><o(((°>           ><o(((°>
                                                                             <°)))o><                     ><o(((°>o
                                                                          Der Valigator leibt diese Fische
                                                                          1. my @data = split(/_/, $sessioncut);
                                                                            my @aricles;
                                                                            for(my $i=0; i < @data, i+=3 ){
                                                                                push @article, @data[$i .. $i+2];
                                                                            }

                                                                            oder besser so.

                                                                              
                                                                            my @data = split(/_/, $sessioncut);  
                                                                            my @aricles;  
                                                                            for(my $i=0; i < @data, i+=3 ){  
                                                                                push @articles, [ @data[$i .. $i+2] ];  
                                                                            }  
                                                                            
                                                                            

                                                                            oder so

                                                                            my @data = split(/_/, $sessioncut);  
                                                                            my @aricles;  
                                                                            for(my $i=0; i < @data, i+=3 ){  
                                                                                push @articles, {  
                                                                                                  amount  => $data[$i],  
                                                                                                  article => $data[$i+1]  
                                                                                                  prize   => $data[$i+2]  
                                                                                               };  
                                                                            
                                                                            ~~~}  
                                                                              
                                                                            mfg Beat
                                                                            
                                                                            -- 
                                                                            
                                                                            ><o(((°>           ><o(((°>  
                                                                            
                                                                               <°)))o><                     ><o(((°>o  
                                                                            Der Valigator leibt diese Fische
                                                                            
                                                                          2. Hi Beat

                                                                            Gottverdammt du hast recht! Es ist über Cookie nicht zu machen!

                                                                            Ich habe zwar eine megasimple Lösung für mein Unterstrichzählproblem:

                                                                            $zeichenanzahl = $OrderList =~ tr/_//;

                                                                            Das funktioniert auch, aber weitere Rechenoperationen gestallten sich mit der von mir begonnenen Methode schwierig bis unlösbar.
                                                                            (Man soll ja Artikel hinzu und entfernen können. Dann noch die Menge und später die Preis Geschichte. Da bekomme ich nicht in einem Cookie geregelt.

                                                                            Also muss ich in "meinem Haus" Space für die Einkaufswagen der Clients freilegen - mit dem Risiko, das er von Bösen Buben zugebaggert/gemüllt wird.

                                                                            Also  muss ein anderes Konzept, als das bisherige her. So wie von mir begonnen - No Way!

                                                                            Gruß Gary

                                                                    2. Lies die Doku :-(
                                                                      Bin ja dabei *g*

                                                                      Und immernoch lese ich...

                                                                      Kaum zu glauben

                                                                      Die if-Schleife soll solange laufen, bis $sessioncut fertig ausgelesen ist.
                                                                      Ich kann aber per substr keine feste Länge angeben, weil die unbekannt ist.

                                                                      http://if-schleife.de/

                                                                      Klizekleinen Hinweis?

                                                                      Lies die Doku

                                                                      Struppi.

                                                                      1. Bounjoun Struppi,

                                                                        Lies die Doku

                                                                        Wobei ich Gary eher erstmals die »Einführung in Perl« von Randal L. Schwartz empfehlen würde. Gibt's bei Online-Buchhändler für ca. 30 EUR, die gut investiert sind, wenn er vorhat, sich weiter mit Perl zu beschäftigen.

                                                                        Adiou.

                                                                        --
                                                                        Ich bin eigentlich ganz anders, aber ich komme so selten dazu. - Ödön von Horwáth
                                                                        1. Wobei ich Gary eher erstmals die »Einführung in Perl« von Randal L. Schwartz empfehlen würde. Gibt's bei Online-Buchhändler für ca. 30 EUR, die gut investiert sind, wenn er vorhat, sich weiter mit Perl zu beschäftigen.

                                                                          Bei Google Books vollständig:
                                                                          http://books.google.ch/books?id=fL8BzMjbAEsC&printsec=frontcover&dq=Einführung+in+Perl&source=bl&ots=U4vbSl4n_o&sig=ADLEl4biQBBrMlbbsxd8wYHr4nE&hl=de&ei=UFvNTP-0I43oOY2jhcwB&sa=X&oi=book_result&ct=result&resnum=3&ved=0CCEQ6AEwAg#v=onepage&q&f=false

                                                                          mfg Beat

                                                                          --
                                                                          ><o(((°>           ><o(((°>
                                                                             <°)))o><                     ><o(((°>o
                                                                          Der Valigator leibt diese Fische
                                                                          1. Hi Beat

                                                                            Für diesen Link gibts 100 Punkte...

                                                                            Gruß Gary

                                                                2. Aufbau meines Cookies (Beispiel):

                                                                  eus-session=1_10x5_50.00

                                                                  Cookiename = Menge_Artikel_Preis

                                                                  Trenner ist "_" <-das wird im Cookie übertragen und in Perl mit split zerlegt

                                                                  bei zwei Artikeln:

                                                                  eus-session=1_10x5_50.00_5_10x5x2_50.00

                                                                  Cookiename = Menge_Artikel_Preis_Menge_Artikel_Preis

                                                                  Da sieht man dann auch schon die Problematik. Beim Zerlegen des Cookies in seine Bestandteile (Menge_Artikel_Preis) weis ich ja gar nicht, wie viele Artikel cookie liefert.

                                                                  Du stellst also fest, dass dein Cookie vollkommen unwartbaren Unsinn transportiert.

                                                                  Tipp: Verwende eine SessionID und speichere effektive Userdaten auf dem Server.

                                                                  Einen Vorschlag, wie ma diese und weitere dazukommende Artikel vernünftig in einen Keks einpackt?

                                                                  Gar nicht!

                                                                  mfg Beat

                                                                  --
                                                                  ><o(((°>           ><o(((°>
                                                                     <°)))o><                     ><o(((°>o
                                                                  Der Valigator leibt diese Fische
                                                                  1. Hi Beat

                                                                    Du stellst also fest, dass dein Cookie vollkommen unwartbaren Unsinn transportiert.

                                                                    Tipp: Verwende eine SessionID und speichere effektive Userdaten auf dem Server.

                                                                    Das wollte ich zuerst. Aber: Jeder Besuch endet damit, das Perl auf dem Server eine Datei für die Userdaten öffnet. (Entweder eine eigene Dat für jeden User oder eine Große für alle user) Das war mir aber vom Prinzip zu unsicher. ->Ein Generator, böswillig programmiert, haut mir die Serverplatte zu. Wenn bei der Clientseitigen Speicherung einer blödsinn macht, hat er den Mist auf dem eigenen Rechner. Soweit meine Intension.

                                                                    Einen Vorschlag, wie ma diese und weitere dazukommende Artikel vernünftig in einen Keks einpackt?

                                                                    Gar nicht!

                                                                    Na dann halt unvernünftig in einen Keks einpackt -

                                                                    Gruß Gary

                                                                    1. Tipp: Verwende eine SessionID und speichere effektive Userdaten auf dem Server.
                                                                      Das wollte ich zuerst. Aber: Jeder Besuch endet damit, das Perl auf dem Server eine Datei für die Userdaten öffnet. (Entweder eine eigene Dat für jeden User oder eine Große für alle user) Das war mir aber vom Prinzip zu unsicher. ->Ein Generator, böswillig programmiert, haut mir die Serverplatte zu. Wenn bei der Clientseitigen Speicherung einer blödsinn macht, hat er den Mist auf dem eigenen Rechner. Soweit meine Intension.

                                                                      Ich bin mit deiner Begründung einverstanden, denn ehrlich gesagt, eine <del>geladene Kanone</del> <ins>open()</ins> gehört nicht in Kinderhände.

                                                                      mfg Beat

                                                                      --
                                                                      ><o(((°>           ><o(((°>
                                                                         <°)))o><                     ><o(((°>o
                                                                      Der Valigator leibt diese Fische
                                    2. Tach auch.

                                      Folgendes funktioniert bei mir anstandslos:

                                      #!/usr/bin/perl -w  
                                        
                                      use strict;  
                                      use CGI;  
                                        
                                      my $cookie = CGI::cookie(-name=>'sessionID',  
                                           -value=>'xyzzy',  
                                           -expires=>'+1h');  
                                        
                                      print CGI::header(-cookie=>$cookie, -type=> 'text/plain');  
                                        
                                      my @c = CGI::cookie();  
                                      foreach my $c (@c) {  
                                          my $val = CGI::cookie($c);  
                                          print "$c => $val\n";  
                                      }  
                                      
                                      

                                      Setzt einen Cookie. Beim zweiten Aufruf zeigt es die gesetzten und mitgeschickten Cookies.
                                      Wichtig: du solltest die Header-Methode nur einmal aufrufen, nicht mehrmals.

                                      Bis die Tage,
                                      Matti

                    2. So Jetzt:

                      014: my $header = "Content-Type: text/html\n";
                      015: $header .=   "Set-Cookie: top-news=$value;";
                      016: $header .=   " expires=Wed, 21 Nov 2001 18:00:00 +0100\n";
                      017: $header .=   "Set-Cookie: session=2840957abg4\n";
                      018:
                      019: print $header;

                      So wird es gemacht! Muss ich nur noch umbauen *g*

                      Dazu gab es dann noch den Hinweis:
                      -------------------------------------------------
                      Zum Setzen eines Cookies muss die HTTP-Response zusätzliche Header-Felder Set-Cookie oder Set-Cookie2 enthalten. Diese Header-Felder enthalten als Wert das Paar name=value sowie, jeweils durch ein Semikolon getrennt, weitere Angaben, die die Speicherung und den Zugriff auf das Cookie limitieren. Um die verschiedenen Varianten der Cookies-Spezifikation zu unterscheiden, wurde das Header-Feld Set-Cookie2  definiert: Set-Cookie2 wird für Cookies nach RFC 2965 verwendet, während Set-Cookie für Cookies nach der älteren Netscape-Spezifikation verwendet wird.
                      -------------------------------------------------

                      ->Dann muss das RFC2965 das neuere sein?
                        Also sollte ich set cookie2 verwenden?

                      Gruß

                      Gary

                      PS.: Werd damir noch ein wenig herumprobieren...

  2. Hi,

    PS.:Hatte ich schon erwähnt das mir JS gar nicht liegt? *g*

    Dann verwende es gar nicht erst - für Sachen, die überhaupt nicht clientseitig erledigt werden müssen, sondern auch gleich vom Server aus passieren können.
    Das Setzen eines Cookies ist so eine.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hi ChrisB

      Dann kann der Server(perl) direkt ein Cookie in den Browser der das Script aufruft setzen?

      Und verräts du auch wie das gehen soll?

      Gruß Gary

      1. Hallo,

        Dann kann der Server(perl) direkt ein Cookie in den Browser der das Script aufruft setzen?

        ja, und das ist eigentlich sogar der Normalfall.

        Und verräts du auch wie das gehen soll?

        Wie es mit Perl konkret realisiert wird, weiß ich nicht.
        Aber im Prinzip wird das Cookie einfach als weiterer HTTP-Header namens "Set-Cookie" transportiert.

        Ciao,
         Martin

        --
        Wer morgens zerknittert aufsteht, hat den ganzen Tag Gelegenheit, sich zu entfalten.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      2. Und verräts du auch wie das gehen soll?

        Wie schon gesagt, dass steht in der Doku, die ich dir schon mehrmals gezeigt habe und die du anscheinend geflissentlich ignorierst. Nicht das mich das stört, du machst dir das Leben schwer, aber viele Fragen kommen einfach daher, dass du dir nicht die Mühe machst auch mal einen Blick in die Doku zu werfen.

        Struppi.