Pfeifenproblem mit bp - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Claus S. (1671 Beiträge) am Montag, 9.Oktober.2006, 10:46.
    Pfeifenproblem mit bp

      Hallo,

      ich setze seit Jahren ein Script mit dem ich Logdaten sammle.
      Unter anderem schreibe ich die Useragents weg wie folgt

      --- schnipp ---
      $_HTTP_USER_AGENT =~ s/ /\\ /g;
          $_HTTP_USER_AGENT =~ s/\&/\\&/g;
      
          get "lg2_useragent==$_HTTP_USER_AGENT", "$gv_logfile2"; # Sammeln der versch. Useragents zwecks Kontrolle     $_HTTP_USER_AGENT =~ s/\\ / /g;     $_HTTP_USER_AGENT =~ s/\\&/\&/g;
          $work_proof1=$lg2_useragent;     $work_proof2=$_HTTP_USER_AGENT;     if ($lg2_useragent eq $_HTTP_USER_AGENT)        {         # Eintrag existiert schon         $_HTTP_USER_AGENT =~ s/ /\\ /g;         $_HTTP_USER_AGENT =~ s/\&/\\&/g;
              $work_count=$lg2_count+1;         mod "lg2_useragent==$_HTTP_USER_AGENT", ["lg2_count", "$work_count"],"$gv_logfile2";        }     else        {         # Eintrag wird hinzugefügt         $lg2_count=1;         put ["lg2_useragent", "$_HTTP_USER_AGENT", "lg2_count", "$lg2_count"],"$gv_logfile2";
      --- schnapp ---

      Seit gestern wird ein bestimmter Useragent immer wieder fortgeschrieben, obwohl er schon vorhanden ist.

      Neuer Useragent = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; snprtz|T04337394360899#899|isdn; .NET CLR 1.1.4322)

      Was diesen Useragent von anderen unterscheidet, ist, dass er Pipes beinhaltet.
      Vor Monaten hatte ich ein ähnliches Problem, da war in einem Useragent ein Ampersand ( ... 1&1 Internet AG ...), da hatte mir Claus C. oder Sander obige Maskierung empfohlen ( $_HTTP_USER_AGENT =~ s/\\&/\&/g; ). Das funktioniert aber im Fall der Pipes nicht.

      Wie kann ich das Problem lösen?
      Warum verhält sich das get bei bestimmten Zeichen anders?

      Danke und Gruss

      Claus


    Ihre Antwort:

    Name: EMail: EMail bei Antwort? WWW:
    Titel:
    Text:

    Neuer Eintrag


 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Claus S. (1671 Beiträge) am Montag, 9.Oktober.2006, 10:46.
    Pfeifenproblem mit bp

      Hallo,

      ich setze seit Jahren ein Script mit dem ich Logdaten sammle.
      Unter anderem schreibe ich die Useragents weg wie folgt

      --- schnipp ---
      $_HTTP_USER_AGENT =~ s/ /\\ /g;
          $_HTTP_USER_AGENT =~ s/\&/\\&/g;
      
          get "lg2_useragent==$_HTTP_USER_AGENT", "$gv_logfile2"; # Sammeln der versch. Useragents zwecks Kontrolle     $_HTTP_USER_AGENT =~ s/\\ / /g;     $_HTTP_USER_AGENT =~ s/\\&/\&/g;
          $work_proof1=$lg2_useragent;     $work_proof2=$_HTTP_USER_AGENT;     if ($lg2_useragent eq $_HTTP_USER_AGENT)        {         # Eintrag existiert schon         $_HTTP_USER_AGENT =~ s/ /\\ /g;         $_HTTP_USER_AGENT =~ s/\&/\\&/g;
              $work_count=$lg2_count+1;         mod "lg2_useragent==$_HTTP_USER_AGENT", ["lg2_count", "$work_count"],"$gv_logfile2";        }     else        {         # Eintrag wird hinzugefügt         $lg2_count=1;         put ["lg2_useragent", "$_HTTP_USER_AGENT", "lg2_count", "$lg2_count"],"$gv_logfile2";
      --- schnapp ---

      Seit gestern wird ein bestimmter Useragent immer wieder fortgeschrieben, obwohl er schon vorhanden ist.

      Neuer Useragent = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; snprtz|T04337394360899#899|isdn; .NET CLR 1.1.4322)

      Was diesen Useragent von anderen unterscheidet, ist, dass er Pipes beinhaltet.
      Vor Monaten hatte ich ein ähnliches Problem, da war in einem Useragent ein Ampersand ( ... 1&1 Internet AG ...), da hatte mir Claus C. oder Sander obige Maskierung empfohlen ( $_HTTP_USER_AGENT =~ s/\\&/\&/g; ). Das funktioniert aber im Fall der Pipes nicht.

      Wie kann ich das Problem lösen?
      Warum verhält sich das get bei bestimmten Zeichen anders?

      Danke und Gruss

      Claus

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 9.Oktober.2006, 11:13.
    Re: Pfeifenproblem mit bp

      Die Pipe | steht für die Oder-Verknüpfung:

      get "Name==hans|Name==stefan", "db";
      

      Wenn Du

      get ["lg2_useragent", "==", $_HTTP_USER_AGENT], $gv_logfile2;
      

      schreibst, wird das nicht ausgewertet. Beim mod brauchste das auch:

      mod ["lg2_useragent", "==", $_HTTP_USER_AGENT], ["lg2_count", "$work_count"], $gv_logfile2;
      

     Antworten

    Beitrag von Claus S. (1671 Beiträge) am Montag, 9.Oktober.2006, 11:45.
    Re: Pfeifenproblem mit bp

      Danke Christoph,

      so etwas in dieser Richtung hatte ich mir schon gedacht,
      Ampersand steht für Und-Verknüpfung, warum hat es denn da bisher geklappt?

      Gruss

      Claus

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 10.Oktober.2006, 06:10.
    Re: Pfeifenproblem mit bp

      Weil Du das & "geschützt" hast, mit den Zeilen wie diesen:

       $_HTTP_USER_AGENT =~ s/\&/\\&/g;
      

     Antworten

    Beitrag von Claus S. (1671 Beiträge) am Dienstag, 10.Oktober.2006, 12:30.
    Re: Pfeifenproblem mit bp

      Hallo Christoph,

      >>Weil Du das & "geschützt" hast, mit den Zeilen wie diesen:
      

      >> $_HTTP_USER_AGENT =~ s/\&/\\&/g;

      das hatte ich doch auch mit der Pipe gemacht (wie ich schon schrieb), warum klappte es da nicht?

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 11.Oktober.2006, 00:04.
    Re: Pfeifenproblem mit bp

      Das weiss ich nicht, dazu müsstest Du mal die genaue Zeile posten, mit der Du das gemacht hast...

     Antworten

    Beitrag von Claus S. (1671 Beiträge) am Montag, 9.Oktober.2006, 11:50.
    Re: Pfeifenproblem mit bp

      Sorry Christoph,

      aber mit dem Code, den Du angegeben hast, wird jetzt bei jedem Useragent ein neuer Satz angelegt, unabhängig vom Inhalt

      Gruss

      Claus

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 10.Oktober.2006, 06:14.
    Re: Pfeifenproblem mit bp

      Habe übersehen, dass die ganzen Ersetzungen jetzt kontraproduktiv sind:

       get ["lg2_useragent", "==", $_HTTP_USER_AGENT], $gv_logfile2; # Sammeln der versch. Useragents zwecks Kontrolle
       if($_amount>0)
       {
         # Eintrag existiert schon
         mod ["lg2_useragent", "==", $_HTTP_USER_AGENT], ["lg2_count", $lg2_count+1], $gv_logfile2;
       } else
       {
         # Eintrag wird hinzugefügt
         put ["lg2_useragent", $_HTTP_USER_AGENT, "lg2_count", 1], $gv_logfile2;
       }
      

      So sollte es eigentlich funktionieren...

     Antworten

    Beitrag von Claus S. (1671 Beiträge) am Dienstag, 10.Oktober.2006, 12:34.
    Re: Pfeifenproblem mit bp

      Hallo Christoph,

      danke für die Lösung,
      aber könntest Du bitte auch was zur Wirkungsweise sagen (Unterschied vorher/nachher)?

      Einmal verstanden, stellt man so eine Frage nicht mehr ;-)
      Hoffe, DU verstehst, was ich meine.

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 11.Oktober.2006, 00:02.
    Re: Pfeifenproblem mit bp

      Also wenn Du sowas schreibst:

      get "...", "db";
      

      dann wird das in "..." von baseportal analysiert und in eine Abfrage umgewandelt, also nach ==, <, >, &, | etc. gesucht und aufgeteilt. Wenn Du Variablen verwendest, wie z.B. $_HTTP_USER_AGENT, dann können sich auch in der Variablen diese Zeichen "verstecken", so dass man es nicht sofort sieht...

      "lg2_useragent==$_HTTP_USER_AGENT"

      wird dann z.B. zu

      "lg2_useragent==Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; snprtz|T04337394360899#899|isdn; .NET CLR 1.1.4322)"

      was für baseportal (ganz ohne vorherige Ersetzungen) nach einer Abfrage

      lg2_useragent==Mozilla/4.0

      aussieht... Der Rest wäre eine 2. Abfrage... Nun kann man entweder alle speziellen Zeichen vorher eretzen (&, °, |, Leerzeichen, =, < etc.) oder einfach

      get ["Feld", "Vergleich", "Wert", "Verknüpfung", ...etc.]
      

      schreiben, denn das ist bereits in einzelne Abfragen zerlegt und wird von baseportal nicht mehr analysiert - es gibt also auch keine speziellen Zeichen und funktioniert immer...

      Klarer?

     Antworten


     
 Liste der ersten 150 Einträge:Einklappen Zur Eingabe 
 Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.05s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!