kostenloser Webspace werbefrei: lima-city


Klasse für Suchmaschinenauswertung

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    wiwms

    wiwms hat kostenlosen Webspace.

    Ich bin gerade dabei eine Klasse für Suchmaschinen zu erstellen, aber das ist ein wirklich mühsamer Prozess. Und vielleicht hat jemand eine Klasse zur Hand, die das genau oder ähnlich macht.

    Was ich will:

    Auswertung des $_SERVER['HTTP_REFERER'];

    - Was waren die Suchbegriffe (Query-String)
    - min. und max. Position beim Seitenaufruf

    Beispiel:
    $wmsUserRefererQueryStringItems['Number'] steht für 'Angezeigte Elemente' (Standard bei Google: 10)
    $wmsUserRefererQueryStringItems['Start'] steht für die Position des ersten Elements, fängt also bei google mit 0 an und geht dann in 10er Schritten vorwärts

    Szenario: Ein Besucher gibt bei Google die Suchbegriffe "PHP + Photografie" ein und findet auf den ersten beiden Seiten nicht die relevanten Informationen, aber dann auf Seite 3 einen Link auf meine Seite

    Er ruft die Seite mit dem Referer www.google.de/search?q=PHP+%2B+Photographie&num=50&hl=de&start=150&sa=N auf

    Ergebnis:

    $wmsUserRefererHost = google
    $wmsUserRefererType = Suchmaschine
    $wmsUserRefererQueryString = PHP+%2B+Photographie

    $wmsUserRefererQueryStringItems['Number'] = 50
    $wmsUserRefererQueryStringItems['Start'] = 150

    $wmsUserRefererSearchEnginePositionMin = 150
    $wmsUserRefererSearchEnginePositionMax = 199

    $wmsUserRefererSearchEnginePositionAverage = (199 + 150 + 1) / 2


    Was ich schon habe:

    <?php
    $wmsUserReferer = $_SERVER['HTTP_REFERER'];  	  	
    
    $wmsUserRefererHost = parse_url($wmsUserReferer, PHP_URL_HOST);  	$wmsUserRefererQueryString = parse_url($wmsUserReferer, PHP_URL_QUERY);  	  $wmsUserRefererType = '0';
    
    if (strpos($wmsUserReferer, 'blog') == TRUE)
    {
      // einfach Überprüfung, ob die Seite ein Blog ist *g*
      // und wird noch erweitert
      $wmsUserRefererType = 'blog';
    }
    
    if (strpos($wmsUserReferer, '.google.') == TRUE)
    {
      $wmsUserRefererType = 'searchEngine';
      $wmsUserRefererQueryStringItems['QueryString'] =
        $wmsUserRefererQueryString['q'];
      $wmsUserRefererQueryStringItems['Number'] =
        $wmsUserRefererQueryString['num'];
      $wmsUserRefererQueryStringItems['Start'] =
        $wmsUserRefererQueryString['start'];
      $wmsUserRefererQueryStringItems['Lang'] = $wmsUserRefererQueryString['hl'];   
    
      // keine Ahnung, wofür SA steht, aber es wird erstmal mitgenommen!
      $wmsUserRefererQueryStringItems['Sa'] = $wmsUserRefererQueryString['sa'];
    
      // Beispiel-Strings
      // search?q=test&num=100&hl=de&start=500&sa=N
      // search?hl=de&q=test&btnG=Google-Suche&meta=
    
    }
    else if (strpos($wmsUserReferer, '.yahoo.') == TRUE)
    {
      $wmsUserRefererType = 'searchEngine';
    }
    else if (strpos($wmsUserReferer, '.msn.') == TRUE)
    {
      $wmsUserRefererType = 'searchEngine';
    }
    else if (strpos($wmsUserReferer, '.live.com') == TRUE)
    {
      $wmsUserRefererType = 'searchEngine';
      // if (strpos($wmsUserReferer, '.live.com/?mkt=de-de') == TRUE)
    }
    else if (strpos($wmsUserReferer, 'search.aol.com') == TRUE)
    {
      $wmsUserRefererType	= 'searchEngine';
      // http://search.aol.com/aolcom/search?query=test&page=7&userid=2583023034761430019&invocationType=topsearchbox.settings&clickstreamid=2583023034761430017  // http://suche.aol.de/suche/web/search.jsp?q=test&cluster=&normalization_level=a&famFilter=off&lr=lang_de&langRestrict=2&cpi=5
    
    }
    
    ?>
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Das Problem, was ich dabei sehe ist, dass wenn ein Suchwort eingibt, auf das du überprüfst. Beschäftige dich lieber mit preg_match(). Das ist auch für sowas gedacht, wohingegen strpos() ja eigentlich nur die Position zurückgibt.
    http://www.php.net/manual/de/function.preg-match.php
  4. Autor dieses Themas

    wiwms

    wiwms hat kostenlosen Webspace.

    Nicht böse sein, aber ich weiss gar nicht was du meinst...

    und strpos reicht doch in dem Fall aus. Es soll ja nur der Referer ausgewertet werden
  5. Zum Beispiel steht in diesem Link ".google." obwohl der Host gar nicht google ist.
    http://search.yahoo.com/search;_ylt=A0geuq5hT9pFfa4AbMhXNyoA?p=kekse+-.google.&ei=UTF-8&fr=yfp-t-501&x=wrt

    Wie wäre es, wenn du die ersten Zeichen des Referrers nach dem Host untersuchen und dann per preg_match an jeden Host angepasst die Datein rauslesen würdest? (Dazu den php.net-Link von oben anschauen.)
  6. Autor dieses Themas

    wiwms

    wiwms hat kostenlosen Webspace.

    stimmt eigentlich, aber dann kann ich es doch noch einfacher machen

    ich lese doch gleich am Anfang

    $wmsUserRefererHost = parse_url($wmsUserReferer, PHP_URL_HOST);

    dann statt if (strpos($wmsUserReferer, '.google.') == TRUE)
    gleich if ($wmsUserRefererHost == 'google') einsetzen... wäre das nicht einfacher und besser?
  7. Autor dieses Themas

    wiwms

    wiwms hat kostenlosen Webspace.

    // Wann war eine Suchmaschine da?
    	$trackUrl = $_SERVER['PHP_SELF'] ;
    	$trackUserAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
    	if (stristr($trackUserAgent ,"archiver"))		{$trackRobot="Alexa";}
    	if (stristr($trackUserAgent ,"exabot"))			{$trackRobot="Exalead";}
    	if (stristr($trackUserAgent ,"fast"))			{$trackRobot="Fast";}
    	if (stristr($trackUserAgent ,"firefly"))		{$trackRobot="Fireball";}
    	if (stristr($trackUserAgent ,"googlebot"))		{$trackRobot="Google";}
    	if (stristr($trackUserAgent ,"msnbot"))			{$trackRobot="MSN";}
    	if (stristr($trackUserAgent ,"msnbot-media"))	{$trackRobot="MSN-Media";}
    	if (stristr($trackUserAgent ,"yahoo"))			{$trackRobot="Yahoo";}
    	if (stristr($trackUserAgent ,"yahoo! slurp"))	{$trackRobot="Yahoo Slurp";}
    	if (stristr($trackUserAgent ,"surveybot"))		{$trackRobot="ServeyBot";}
    	if (stristr($trackUserAgent ,"bot"))			{$trackRobot="unbekannte Suchmaschine";}
    
    	$trackDate		= date('Y-m-d');
    	$trackTime		= date('H:i:s');
    	$trackHost		= $_SERVER['HTTP_HOST'];
    	$trackAddr		= $_SERVER['REMOTE_ADDR'];
    	
    	if (empty($_SERVER['HTTP_REFERER']))
    	{
    		$trackReferer	= '0';
    	}
    	else
    	{
    		$trackReferer	= $_SERVER['HTTP_REFERER'];
    	}
    
    	if (!empty($trackRobot))
    	{
    		// Suchmaschinen //
    		/*
    		$eingeloggt = "
    			trackrobot	= $trackRobot
    			trackagent	= $trackUserAgent
    			trackurl	= $trackUrl
    			trackdate	= $trackDate
    			tracktime	= $trackTime
    			trackhost	= $trackHost
    			trackaddr	= $trackAddr
    		";
    		*/
    	
    		$logdatei = fopen("logs/robotAgents.txt","a");
    
    		fputs($logdatei,
    			date("d.m.Y;H:i:s",time()) .
    			";" . $trackAddr .
    			";" . $_SERVER['REQUEST_METHOD'] .
    			";" . $trackUrl .
    			";" . $trackUserAgent .
    			";" . $trackHost .
    			";" . $trackReferer . $wmsSystemWordwrap
    		);


    Jemand Verbesserungsvorschläge oder Ideen?

    $wmsSystemWordwrap steht für Zeilenumbruch angepasst für Win und Linux
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!