Erri: PHP Counter wird durch crawlen verfälscht...

Hi an alle hier im Forum.

Ich beschäftige mich grad mit dem "Problem" Counter...

Zum Hintergrund
---------------------------------
Mein Counter nimmt die IP des Besuchers und schreibt diese mit einem Zeitstempel (TIME) in eine Datenbank  Besucht der User die Seite öfters am selben Tag, ändert dies nichts an der Counter-Zahl, da die IP des Users erst nach einer Reloadzeit (24h) erneut in die DB geschrieben wird.
Soweit so gut
Nun wird meine Seite aber ebenfalls von gewissen Servern (z.B. Suchmaschinen Google, Yahoo, Alexa ) aufgesucht. Hierbei werden immer gleich mehrere (ca. 4-7) IPs in die DB geschrieben. Ein wirklicher Besucher war jedoch nicht auf meiner Seite  und somit wird die Zahl leider verfälscht. Bisher habe ich diese IPs gelegentlich von Hand gelöscht... *boar*
----------------------------------

Jetzt habe ich vor, dies zu automatisieren, jedoch habe ich dabei folgendes Problem, welches ich anhand von Google beschreiben möchte.
Google verwendet laut whois.ws den IP-Bereich 66.249.64.0 - 66.249.95.255. Jedesmal beim crawlen meiner Seite wird somit eine andere IP verwendet.

Und jede IP von Hand in ein Script (DELETE FROM tbl_counter WHERE IP LIKE '66.249.64.%' OR ...)  schreiben --> ist mir ehrlich gesagt etwas zu aufwendig?

Hat sich von euch schon einmal jemand mit dieser Thematik beschäftigt oder hat jemand eine Idee, wie ich die IP-Bereiche verwenden kann, ohne jede IP einzeln in ein Script zu schreiben?

Ich danke euch vielmals für eure Hilfe, Tipps  Ideen
Gruß
Erri

  1. Hi,

    Ich beschäftige mich grad mit dem "Problem" Counter...

    Zum Hintergrund

    Mein Counter nimmt die IP des Besuchers und schreibt diese mit einem Zeitstempel (TIME) in eine Datenbank  Besucht der User die Seite öfters am selben Tag, ändert dies nichts an der Counter-Zahl, da die IP des Users erst nach einer Reloadzeit (24h) erneut in die DB geschrieben wird.
    Soweit so gut
    Nun wird meine Seite aber ebenfalls von gewissen Servern (z.B. Suchmaschinen Google, Yahoo, Alexa ) aufgesucht. Hierbei werden immer gleich mehrere (ca. 4-7) IPs in die DB geschrieben. Ein wirklicher Besucher war jedoch nicht auf meiner Seite  und somit wird die Zahl leider verfälscht. Bisher habe ich diese IPs gelegentlich von Hand gelöscht... *boar*

    Jetzt habe ich vor, dies zu automatisieren, jedoch habe ich dabei folgendes Problem, welches ich anhand von Google beschreiben möchte.
    Google verwendet laut whois.ws den IP-Bereich 66.249.64.0 - 66.249.95.255. Jedesmal beim crawlen meiner Seite wird somit eine andere IP verwendet.

    Und jede IP von Hand in ein Script (DELETE FROM tbl_counter WHERE IP LIKE '66.249.64.%' OR ...)  schreiben --> ist mir ehrlich gesagt etwas zu aufwendig?

    Hat sich von euch schon einmal jemand mit dieser Thematik beschäftigt oder hat jemand eine Idee, wie ich die IP-Bereiche verwenden kann, ohne jede IP einzeln in ein Script zu schreiben?

    meiner Meinung nach, ist es ein falscher Ansatz, schon vorab eine IP zu verwerfen. Wie unterscheidest Du denn zwei User mit gleicher IP?

    Bzgl. Crawler wäre es vielleicht einfacher, Sie am Useragent zu erkennen. D.h. verwerfe Sie nicht, sondern untersuche das im Nachhinein in Deiner Auswertung.

    Gruß
    Reiner

    1. Hi Reiner,

      meiner Meinung nach, ist es ein falscher Ansatz, schon vorab eine IP zu verwerfen. Wie unterscheidest Du denn zwei User mit gleicher IP?

      Zwei User und dieselbe IP? (Sag niemals nie), aber rein technisch gesehen funktioniert dies nicht, zumindestens zur selben Zeit...
      Ich möchte auch nur IPs von Crawlern nach dem Besuch verwerfen... Diese verwenden statische IPs, welche also nicht von "normalen" Surfern genutzt werden... Diese haben (meist) dynamische IP`s von Ihren Providern. Deswegen ja die vorgegebenen Bereiche.

      Bzgl. Crawler wäre es vielleicht einfacher, Sie am Useragent zu erkennen. D.h. verwerfe Sie nicht, sondern untersuche das im Nachhinein in Deiner Auswertung.

      Das möchte ich ja auch im Nachhinein tun...

      Könntest du mir dies mit dem Useragent genauer erklären? Dies habe ich nicht ganz verstanden.

      Viele Grüße und vielen Dank,
      Erri

      1. »» Zwei User und dieselbe IP? (Sag niemals nie), aber rein technisch gesehen funktioniert dies nicht, zumindestens zur selben Zeit...

        Ich meinte auch nicht zur selben Zeit!

        Ich möchte auch nur IPs von Crawlern nach dem Besuch verwerfen... Diese verwenden statische IPs, welche also nicht von "normalen" Surfern genutzt werden... Diese haben (meist) dynamische IP`s von Ihren Providern. Deswegen ja die vorgegebenen Bereiche.

        Bzgl. Crawler wäre es vielleicht einfacher, Sie am Useragent zu erkennen. D.h. verwerfe Sie nicht, sondern untersuche das im Nachhinein in Deiner Auswertung.
        Das möchte ich ja auch im Nachhinein tun...

        Könntest du mir dies mit dem Useragent genauer erklären? Dies habe ich nicht ganz verstanden.

        Na, zumindest Google verwendet sowas wie "Googlebot....".
        Das kannst Du rausfiltern.

        Gruß
        Reiner

      2. Hallo Erri,

        Zwei User und dieselbe IP? (Sag niemals nie), aber rein technisch gesehen funktioniert dies nicht, zumindestens zur selben Zeit...

        Warum nicht? Router mit NAT gibts ...

        Viele Grüße
        Frank

      3. Moin.

        Zwei User und dieselbe IP? (Sag niemals nie), aber rein technisch gesehen funktioniert dies nicht, zumindestens zur selben Zeit...

        Doch. Und zwar dann, wenn die beiden Kollegen sind und über einen Proxy in Netz gehen. Du siehst dann nicht die IP der User sondern die Proxy-IP.

        Und ein andere Fall: Alle User, die sich über denselben Provider einwählen teilen sich die Adressen aus dessen IP-Pool. Die IP, die Du jetzt hast, bekommt, wenn Du "aufgelegt" hast, sofort ein anderer. Und wenn der Provider noch Load-Sharing bei seinen Proxies macht, dann hast Du sogar während einer Session mehrere IPs.

        Könntest du mir dies mit dem Useragent genauer erklären? Dies habe ich nicht ganz verstanden.

        In jeden HTTP-Request steckt unter anderem auch ein Feld "User Agent" ((HTTP_USER_AGENT), das Du auswerten kannst.

        Gruß Frank

        1. Hi Frank,

          Zwei User und dieselbe IP? (Sag niemals nie), aber rein technisch gesehen funktioniert dies nicht, zumindestens zur selben Zeit...

          Doch. Und zwar dann, wenn die beiden Kollegen sind und über einen Proxy in Netz gehen. Du siehst dann nicht die IP der User sondern die Proxy-IP.

          Das ist mir schon klar, aber dies wird wohl auf meiner Homepage im seltensten Fall so sein... Daher wäre es meiner Meinung nach unproblematisch, einen Besucher weniger zu zählen :-)

          Und ein andere Fall: Alle User, die sich über denselben Provider einwählen teilen sich die Adressen aus dessen IP-Pool. Die IP, die Du jetzt hast, bekommt, wenn Du "aufgelegt" hast, sofort ein anderer. Und wenn der Provider noch Load-Sharing bei seinen Proxies macht, dann hast Du sogar während einer Session mehrere IPs.

          Ein Besucher meiner Website hat seine Internet-Verbindung getrennt und ein anderer User bekommt die selbe IP... Wie wahrscheinlich wäre es, dass dieser User ebenalls auf meine Website kommt?

          Könntest du mir dies mit dem Useragent genauer erklären? Dies habe ich nicht ganz verstanden.

          In jeden HTTP-Request steckt unter anderem auch ein Feld "User Agent" ((HTTP_USER_AGENT), das Du auswerten kannst.

          Danke für die Hilfe.

          Gruß und Vielen Dank
          Erri

      4. Hi Erri,

        Zwei User und dieselbe IP? (Sag niemals nie), aber rein technisch gesehen funktioniert dies nicht, zumindestens zur selben Zeit...

        Wie dir bereits gesagt wurde, haben mehrere PC's, die hinter einen Route hängen die gleiche IP (auch zur gleichen Zeit, zumindest nach außen hin - intern gibts wieder andere IP's *g*).
        Und das dürfte wohl in jedem Firmennetzwerk so sein...

        Ich möchte auch nur IPs von Crawlern nach dem Besuch verwerfen... Diese verwenden statische IPs, welche also nicht von "normalen" Surfern genutzt werden... Diese haben (meist) dynamische IP`s von Ihren Providern. Deswegen ja die vorgegebenen Bereiche.

        Nun, dann überlegen wir doch mal, wie wir es auf die "faule" Art anstellen könnten, alle entsprechenden IP's rauszuwerfen.

        Du sagstest Google hätte die IP's von 66.249.64.0 bis 66.249.95.255, da gehen wir am besten mit einer for Schleife ran:

          
        for($x = 64; $x <= 95; $x ++)  
        {  
          for($y = 0; $y <= 255; $y++)  
          {  
            $sql = "DELETE FROM  
                      my_table  
                    WHERE  
                      ip = '66.149.".$x.".".$y.'  
                   ";  
            mysql_query($sql) OR die(mysql_error());  
          }  
        }  
        
        

        Durch einen Aufruf dieses Scriptes solltest du eigentlich alle entsprechenden IP's rauswerfen können. Wird aber vielleicht trotzdem noch etwas aufwendig, wenn du das für mehrere Robots machen musst....

        Bzgl. Crawler wäre es vielleicht einfacher, Sie am Useragent zu erkennen. D.h. verwerfe Sie nicht, sondern untersuche das im Nachhinein in Deiner Auswertung.
        Das möchte ich ja auch im Nachhinein tun...

        Könntest du mir dies mit dem Useragent genauer erklären? Dies habe ich nicht ganz verstanden.

        Der Useragent ist eine Umgebungsvariable, die du in $_SERVER findest. Da steht im Idealfall eine Zeichenkette drin, die dir verrät, welches User Agent (= Browser) deine Seite aufgerufen hat. Beachte aber, dass ein Besucher diesen User Agenten nach Belieben fälschen kann, oft wird dies z.B. auch von einer Firewall gemacht.

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
        Sinnvolles Zitieren: Man zitiert nur Teilsätze des Vorposters auf die man sich bezieht! Nicht einfach alles.
        1. Hi again,

          for($x = 64; $x <= 95; $x ++)
          {
            for($y = 0; $y <= 255; $y++)
            {
              $sql = "DELETE FROM
                        my_table
                      WHERE
                        ip = '66.149.".$x.".".$y.'
                     ";
              mysql_query($sql) OR die(mysql_error());
            }
          }

            
          Hm, warum wird dieser Code jetzt falsch angezeigt? Wenn man mal in die Antworten Box schaut, da steht er wieder richtig drin...  
            
          Also zur Sicherheit hier der Code nochmal ohne das Syntax Highlighting:  
            
          for($x = 64; $x <= 95; $x ++)  
          {  
            for($y = 0; $y <= 255; $y++)  
            {  
              $sql = "DELETE FROM  
                        my\_table  
                      WHERE  
                        ip = '66.149.".$x.".".$y.'  
                     ";  
              mysql\_query($sql) OR die(mysql\_error());  
            }  
          }  
            
            
          MfG, Dennis.
          
          -- 
          Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [[decode](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%5B+fo%3A%29+rl%3A%28+n4%3A%23+ss%3A%29+de%3A%5D+js%3A%7C+ch%3A%7B+sh%3A%28+mo%3A%7D+zu%3A%7C)]  
            
          Das Motto des SELFForums ist das \_self\_made, also das selbermachen. Deshalb sollte man bevor man irgendetwas fragt, immer erst öffentliche Quellen zu Rate ziehen!
          
          1. And Again: Hi!

            Hm, warum wird dieser Code jetzt falsch angezeigt? Wenn man mal in die Antworten Box schaut, da steht er wieder richtig drin...

            Hier mal noch ein Screenshot: http://tutorial.riehle-web.com/selfforum/tmp/tmp2.gif

            MfG, Dennis.

            --
            Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
            Die Definition des SelfCodes ist hier zu finden, es gibt auch einen Encoder.
          2. Hallo,

            for($x = 64; $x <= 95; $x ++)
            {
              for($y = 0; $y <= 255; $y++)
              {
                $sql = "DELETE FROM
                          my_table
                        WHERE
                          ip = '66.149.".$x.".".$y.'
                       ";
                mysql_query($sql) OR die(mysql_error());
              }
            }

            
            >   
            > Hm, warum wird dieser Code jetzt falsch angezeigt? Wenn man mal in die Antworten Box schaut, da steht er wieder richtig drin...  
              
            Christian Kruse hat ein neues Modul eingebaut, daß uneffizienten Code erkennt! ;-)  
            Im Ernst: warum gehst Du in der Schleife $y durch?  
            Du erfaßt doch sowieso alle von 0..255, d.h. mehr gibt es nicht, somit ist die Schleife unnötig, oder?  
              
            Gruß  
            Reiner  
              
              
            
            
          3. 你好 Dennis,

            Hm, warum wird dieser Code jetzt falsch angezeigt?

            Weil du ihn falsch geschrieben hast... ;-) Syntax-Fehler, da fehlte ein
            doppeltes Anfuehrungszeichen.

              
            for($x = 64; $x <= 95; $x ++){  
              for($y = 0; $y <= 255; $y++) {  
                $sql = "DELETE FROM  
                          my_table  
                        WHERE  
                           ip = '66.149.".$x.".".$y."'  
                       ";  
                mysql_query($sql) OR die(mysql_error());  
              }  
            }  
            
            

            再见,
            CK

            --
            Wenn auf Erden alle das Schoene als schoen erkennen, so ist dadurch schon das Haessliche bestimmt.
            1. Hi Christian,

              Hm, warum wird dieser Code jetzt falsch angezeigt?

              Weil du ihn falsch geschrieben hast... ;-) Syntax-Fehler, da fehlte ein
              doppeltes Anfuehrungszeichen.

              Uuuups, peinlich, aber du hast natürlich recht ;-)

              ip = '66.149.".$x.".".$y."'

              ^- Das hat gefehlt!

              Hab dementsprechende gerade meinen Eintrag im BugTracker als "Not a Bug" gekenntzeichnet.

              Nun aber zum nächsten:

                
              mysql_query($sql) OR die(mysql_error());  
              
              

              Das "or" von mysql_error() wird als Operator rot hervorgehoben (bei mir), das OR hingegen, welches davor kommt und ein wirklicher Operator ist, wird nicht hervorgehoben...

              Is ist a Bug? ;-)

              MfG, Dennis.

              --
              Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
              Die Definition des SelfCodes ist hier zu finden, es gibt auch einen Encoder.
              1. Hi again,

                mysql_query($sql) OR die(mysql_error());

                  
                Ich habs einfach noch nicht raus :-/  
                  
                ~~~php
                  
                mysql_query($sql) OR die(mysql_error());  
                
                

                Ach ja, könnte man das SH nicht noch in die Vorschau mit einbinden? Ich hatte z.B. gerade auf Vorschau geklickt, um zu sehen, ob das SH klappt, musste dann aber wieder feststellen, dass in der Vorschau SH deaktiviert ist - und na ja, was ich da abgeschickt habe war natürlich prompt Mist ;-)

                Übrigens habe ich in der Vorschau auch die Textarea nicht so, wie ich selbige konfiguriert habe (cols gleich 100). Ist in meinen Augen ein "Bug - Annoyance" *g*

                MfG, Dennis.

                --
                Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
                Antworten per E-Mail gibts hier nicht!
            2. Hallo du da draußen,

              for($x = 64; $x <= 95; $x ++){
                for($y = 0; $y <= 255; $y++) {
                  $sql = "DELETE FROM
                            my_table
                          WHERE
                             ip = '66.149.".$x.".".$y."'
                         ";
                  mysql_query($sql) OR die(mysql_error());
                }
              }

                
              Sehe ich das richtig? Das äußerste  for  wird nicht als keyword erkannt, das innere aber schon. Außerdem werden keine normalen Klammern, und nur die geschweiften Klammern der inneren For-Schleife angezeigt.  
                
              Jaja, Christian, was hast du da bloß zusammengewerkelt... ;-)  
                
                
              Grüße von hier drinnen, aus Biberach an der Riss,  
              Candid Dauth (ehemals Dogfish)  
              
              -- 
               Bismarck biss Mark, bis Mark Bismarck biss!  
                
              <http://cdauth.net.tc/>  
                
              ie:{ fl:( br: va:} ls:[ fo:| rl:( n4:( ss:) de:> js:( ch:| sh:( mo:) zu:|
              
        2. » Nun, dann überlegen wir doch mal, wie wir es auf die "faule" Art anstellen könnten, alle entsprechenden IP's rauszuwerfen.

          Du sagstest Google hätte die IP's von 66.249.64.0 bis 66.249.95.255, da gehen wir am besten mit einer for Schleife ran:

          Das nennst du "faul"?  :-)  "Faul" geht so:

          $sql = "DELETE FROM my_table WHERE LEFT(ip,7)='66.149.' AND INTERVAL(SUBSTR(ip,8,2),64,96)=1"

          $sql = "DELETE FROM
                        my_table
                      WHERE
                        ip = '66.149.".$x.".".$y.'";

          Warum machst du das so und nicht so: $sql = "... '64.149.$x.$y'";
          Sprich: Wenn schon "doppeltes Anführungszeichen" dann Variablen gleich mit hinein.

          1. Hi dedlfix,

            Du sagstest Google hätte die IP's von 66.249.64.0 bis 66.249.95.255, da gehen wir am besten mit einer for Schleife ran:

            Das nennst du "faul"?  :-)  "Faul" geht so:

            $sql = "DELETE FROM my_table WHERE LEFT(ip,7)='66.149.' AND INTERVAL(SUBSTR(ip,8,2),64,96)=1"

            Ich verneige mich zutiefst vor der "Majestät der Faulheit" :-P

            Mit LEFT, INTERNAL, JOIN usw. hab ich mich noch nicht so wirklich beschäftigt.

            Warum machst du das so und nicht so: $sql = "... '64.149.$x.$y'";
            Sprich: Wenn schon "doppeltes Anführungszeichen" dann Variablen gleich mit hinein.

            Prinzip. Mache ich es so wie ich es mache, dann zeigt mir mein Editor im Highlighting das auch als Variablen an.

            MfG, Dennis.

            --
            Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
            Wissen ist gut, Können ist besser, aber das Beste und Interessanteste ist der Weg dahin! (Detlef G.)
            1. » Ich verneige mich zutiefst vor der "Majestät der Faulheit" :-P

              Wenn du schon mal fast unten bist, kannst du dich ja auch gleich etwas hinlegen und "Faulheit" üben. :-)

              Mit LEFT, INTERNAL, JOIN usw. hab ich mich noch nicht so wirklich beschäftigt.

              Nicht dass du da was verwechselst:

              LEFT() ist eine simple String-Funktion
              INTER_V_AL() zählt zu den Operatoren (wie z.B. =, <, >, IS NULL)

              beides also ziemlich einfach.

              Erst JOIN (tritt gelegentlich auch mit einem LEFT auf) gehört zur "hohen Kunst" der Tabellen-Verknüpfung.

              Prinzip. Mache ich es so wie ich es mache, dann zeigt mir mein Editor im Highlighting das auch als Variablen an.

              Du solltest dir überlegen, deinen Editor zu wechseln. Der Editor sollte ein Werkzeug sein, kein Meister, dem man sich beugt.

              1. Hi dedlfix,

                Nicht dass du da was verwechselst:
                (...)

                Ne, das war mir schon klar so, das MySQL Manual hilft ja auch weiter.

                Prinzip. Mache ich es so wie ich es mache, dann zeigt mir mein Editor im Highlighting das auch als Variablen an.

                Du solltest dir überlegen, deinen Editor zu wechseln. Der Editor sollte ein Werkzeug sein, kein Meister, dem man sich beugt.

                Habe schon oft andere Editoren ausprobiert, aber irgendwie war ich bis jetzt noch mit keinem so zufrieden wie mit HomeSite 5.

                MfG, Dennis.

                --
                Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
                Antworten per E-Mail gibts hier nicht!
                1. » Habe schon oft andere Editoren ausprobiert, aber irgendwie war ich bis jetzt noch mit keinem so zufrieden wie mit HomeSite 5.

                  Hast du es statt eines Editors auch schon mal mit einer PHP-IDE probiert? z.B. PHPEdit

                  1. Hi dedlfix,

                    Hast du es statt eines Editors auch schon mal mit einer PHP-IDE probiert? z.B. PHPEdit

                    Hm, habe ich irgendwie noch nicht ganz verstanden. IDE - "Integrierte Entwicklungsumgebung" - was ist daran besser, als an meinem Editor (mit SH) plus meinem Apachen + MySQL und Browser?

                    Jetzt mal ganz einfach so doof gefragt ;-)

                    MfG, Dennis.

                    --
                    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
                    Schon gewusst, dass Bugs und Feature Vorschläge für das CForum ins Entwicklerforum oder in den BugTracker gehören und nicht hier her?
                    1. » » Hast du es statt eines Editors auch schon mal mit einer PHP-IDE probiert? z.B. PHPEdit

                      Hm, habe ich irgendwie noch nicht ganz verstanden. IDE - "Integrierte Entwicklungsumgebung" - was ist daran besser, als an meinem Editor (mit SH) plus meinem Apachen + MySQL und Browser?

                      Dass es nicht einfach nur ein Textbearbeitungsprogramm mit zusätzlichem Syntax-Highlighting ist, sondern eine auf PHP zugeschnittene Entwicklungsumgebung.

                      Zum Beispiel Debugger-Unterstützung: Du kannst schrittweise durch dein Script laufen und dabei alle Variablen anzeigen lassen.

                      Die Funktionsliste zur Codevervollständigung umfasst nicht nur starr alle PHP-Funktionen, sondern der Quelltext deines Scripts (inkludierte Dateien eingeschlossen) wird im Hintergrund geparst und auch die eigenen Funktionen, Klassen, Konstanten, Variablen werden berücksichtigt.

                      Ich nehme mal an, dass die Information, was was ist, vom Parser geliefert wird, so dass die Syntax-Auszeichnung im Gegensatz zu manch einem "Wald- und Wiesen-Editor" fehlerfrei arbeitet,

                      Um nur mal zwei wesentliche Fietschers zu nennen... ganz zu Schweigen von den vielen kleinen netten Sachen, die die Entwicklungsgeschwindigkeit erhöhen können.

  2. Guten Morgen...

    Ich danke euch allen für eure hilfreichen Antworten!
    Ich werde wohl die Methode der for-Schleife wählen.

    Gruß
    Erri