User Daten festhalten und auswerten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • User Daten festhalten und auswerten

    Ich prog. mir z.Z. ein kleines Statistik Tool um die Besucher Daten festzuhalen.

    Jetzt habe ich mir überlegt, ob es nicht sinnvoller ist, die ganzen Browser usw. in ein Array rein zu machen und dann bei preg_match anstelle jedes mal den Browser ec. reinzutippen das Array einzusetzten und auswerten zu lassen. Dies würde das Script erheblich kleiner machen.

    Wie funktioniert das ganze mit Arrays?

    Im augenblick habe ich das so für verschieden Browser, OS gemacht was soweit auch funktioniert:

    PHP-Code:
            if (preg_match("=Mozilla ([0-9]{1,2}).[0-9]{1,2}=","$agent"$agent_br))
        {
            
    $bs "Mozilla&nbsp".$agent_br[1];
        
            
    $sql mysql_fetch_row(mysql_query("SELECT * FROM tabelle WHERE brows like '$bs' "));
            
            if(
    $sql == 0)
            
            { 
                
    mysql_query ("INSERT INTO tabelle (id,brows,hits) VALUES('', '$bs', '1')"); 
            } 
            else 
            { 
                
    $query mysql_query("SELECT * FROM tabelle WHERE brows like '$bs'");
                
    $data mysql_fetch_array($query); 
                
    $data['hits']++; 
                 
                
    mysql_query ("UPDATE tabelle SET hits = '$data[hits]' WHERE brows like '$bs' ");
            }
        } 
    in der ruhe liegt die kraft

  • #2
    Irgendwie verstehe ich noch nicht so ganz, was du bezwecken willst, aber es würde dein Script auf jeden Fall auch nochmal kleiner machen, wenn du statt:

    PHP-Code:
            if($sql == 0)
            
            { 
                
    mysql_query ("INSERT INTO tabelle (id,brows,hits) VALUES('', '$bs', '1')"); 
            } 
            else 
            { 
                
    $query mysql_query("SELECT * FROM tabelle WHERE brows like '$bs'");
                
    $data mysql_fetch_array($query); 
                
    $data['hits']++; 
                 
                
    mysql_query ("UPDATE tabelle SET hits = '$data[hits]' WHERE brows like '$bs' ");
            } 
    einfach nur

    PHP-Code:
    if($sql == 0mysql_query ("INSERT INTO tabelle (id,brows,hits) VALUES('', '$bs', '1')"); 
    else 
    mysql_query ("UPDATE tabelle SET hits = hits+1 WHERE brows like '$bs' "); 
    schreibst...

    Achja, vllt. ist für deine Zwecke die Funktion in_array() einen Blick wert, falls ich dich ansatzweise richtig verstanden habe.

    Kommentar


    • #3
      PHP-Code:
          $such=array('Flickbot''Firefly','Fluffy the spider','WebCrawler','bumblebee','appie','almaden',
                      
      'cosmos','BaiDuSpider','GAIS Robot','Gigabot','Girafabot','SlySearch','backrub',google,
                      
      'Googlebot','grub-client','Gulper','hitwise','htdig','ia_archiver','Indy Library','slurp@inktomi',             
                      
      'larbin','Lycos','Acoon' ,'@messebasel','@bluewin','@pta','@altavista.de','anzwerscrawl','arachnoidea',             
                      
      'architext','fido','gais robot','gulliver','infoseek','fireball','lwp-trivial','lycos_spider',             
                      
      'ezresult','THUNDERSTONE' ,'MuscatFerret','kolibri','Scooter','Search.at',
                      
      '************searcher','Slurp','SwissSearch','The Informant','Ultraseek','WiseWire',
                      
      'MSIECrawler','Mercator','metacarta','NationalDirectory','NetResearchServer','NutchCrawler',
                      
      'obot','Openbot','polybot','Pompos','psbot','reifier','Scrubby','SlySearch','internetseer',
                      
      'TurnitinBot','UIowa','VoilaBot','vspider','WebSearch','WebWombat','Wget','Webster',
                      
      'ZyBorg','rabaz','MFC','TECOMAC-Crawler/0.3');        
              
              if(
      preg_match("=(" .  preg_quote(implode("|"$such)) . ") ([0-9]{1,2}).[0-9]{1,2}=","$agent"$agent_suchm))
          {
              if (isset(
      $agent_suchm[1])) $sm $agent_suchm[1];
              
              
      $sql mysql_fetch_row(mysql_query("SELECT * FROM tabelle WHERE suchm like '$sm' "));

              if(
      $sql == 0mysql_query ("INSERT INTO tabelle(id,suchm,hits) VALUES('', '$sm', '1')"); 
              else 
      mysql_query ("UPDATE tabelle SET hits = hits+1 WHERE suchm like '$sm' ");
          } 
      Habe das jetzt so umgeändert. Aber es funktioniert noch nicht.


      MFG Maffy
      Zuletzt geändert von maffy; 14.02.2004, 12:17.
      in der ruhe liegt die kraft

      Kommentar


      • #4
        1.) In deinem Array fehlen bei 'google' die Hochkommas
        2.) Was steht in $agent und in $agent_suchm?
        3.) Soweit ich das sehe benutzt du den regulären Ausdruck für die verschiedenen Versionsnummern, da diese variabel sein können, richtig?
        Sofern die Versionsnummer vom eigentlichen Namen immer mit einem Leerzeichen getrennt ist, könntest du ja auch erst den Namen mit explode() in einen Array teilen...das letzte Element entfernen und mit in_array() schaun, ob der Rest in dem vordefinierten Array $such vorhanden ist...

        Kommentar


        • #5
          1. Die Hochkommas habe ich bei denen wo es gefehlt hin geschrieben,

          2. $agent = getenv("HTTP_USER_AGENT");

          Anstatt das für jeden einzeln Browser usw. so zu machen, wie unten, wollte ich das mit nem Array versuchen wo z.B. die ganzen Namen für die Suchmaschienen usw. drinnen stehen.

          PHP-Code:
          if (preg_match("=Mozilla ([0-9]{1,2}).[0-9]{1,2}=","$agent"$agent_br))
              {
                  
          $bs "Mozilla&nbsp".$agent_br[1];
              
                  
          $sql mysql_fetch_row(mysql_query("SELECT * FROM tabelle WHERE brows like '$bs' "));
                  
                  if(
          $sql == 0)
                  
                  { 
                      
          mysql_query ("INSERT INTO tabelle (id,brows,hits) VALUES('', '$bs', '1')"); 
                  } 
                  else 
                  { 
                      
          $query mysql_query("SELECT * FROM tabelle WHERE brows like '$bs'");
                      
          $data mysql_fetch_array($query); 
                      
          $data['hits']++; 
                       
                      
          mysql_query ("UPDATE tabelle SET hits = '$data[hits]' WHERE brows like '$bs' ");
                  }
              } 
          Zuletzt geändert von maffy; 16.02.2004, 17:08.
          in der ruhe liegt die kraft

          Kommentar

          Lädt...
          X