Willkommen Gast. Bitte Einloggen oder Registrieren
 
Sprache wählen:
 
 
Statistik Version 20 online.

  ÜbersichtHilfeSuchenEinloggenRegistrieren  
 
Seitenindex umschalten Seiten: 1
Thema versenden Drucken
mehrere Domain's aufzeichnen und unterscheiden (Gelesen: 5247 mal)
hr3
Global Moderator
*****
Offline


Es gibt nichts Gutes/
außer: Man tut es. E.Kästner

Beiträge: 1126
Germany
Geschlecht: male
mehrere Domain's aufzeichnen und unterscheiden
10.12.10 um 22:45:19
 
Es gab schon öfter die Frage, ob bei der Aufzeichnung mehrerer Domain's in einer Statistik eine Kennzeichnuing in der Anzeige möglich ist. Speziell wenn die Anwendungen in gleichen Verzeichnis-Strukturen liegen und gleiche Seiten-Namen verwenden, weil z.B. die gleiche Shop-Software, usw. eingesetzt wird, ist eine Unterscheidung der Statistikdaten bisher nicht möglich.

Ich hatte hier schon unterschiedliche Lösungsvarianten aufgeführt, die mehr oder weniger Änderungsaufwand bedeuten und für unterschiedliche Anforderungen jeweils individuelle Vor- und Nachteile mit sich bringen.

Jetzt habe ich mal für mein Umfeld eine Moglichkeit codiert, die mit wenig Aufwand sehr nah am Standard bleibt und somit vermutlich auch einfach bei Releasewechseln nachzupflegen ist.

Außerdem wurde dabei auch der Begriff *ALL als Domain-Name implementiert, um jegliche Domain, von der Daten an die Statistik gesandt werden zuzulassen. Das birgt ein kleines Risiko in sich, ist aber gerade für Testumgebungen oder in der Startphase manchmal sehr hilfreich. Auszuschließende Domains sind mit domain|- vor *ALL zu definieren.

Unter Welche Domain(s) sollen aufgezeichnet werden? kann jetzt hinter dem Domain-Namen ein "|" und dahinter ggf. ein weiterer Begriff angegeben werden.
meine_domain.de führt zur Standardverarbeitung
meine_domain.de| führt dazu, dass der besuchten Seite die Domain vorangestellt wird
meine_domain.de|x1/ z.B. führt dazu, dass der besuchten Seite x1/ vorangestellt wird

Das gleich gilt analog für
*ALL
*ALL|
*ALL|all/

Automatisch wird durch "|" (mit und ohne folgenden Begriff) auch der referer mit dem vollständugen URL angezeigt. Wenn gewünscht kann dafür wieder zum Standard-Verfahren zurückgekehrt werden, indem danach noch einmal die Domain in der bisherigen Form angegeben wird.

Beispiel:
meine_domain.de
meine_zweite_domain.de|d2/
meine_dritte_domain.de|
meine_vierte_domain.de|-
*ALL|
meine_dritte_domain.de

meine_domain.de wird wie bisher verarbeitet
meine_zweite_domain.de den besuchten Seiten wird d2/ vorangestellt und referer wird als kompletter URL angezeigt
meine_dritte_domain den besuchten Seiten wird die Domain vorangestellt, kommt der referer von der gleichen Domain, wird diese hier nicht angezeigt
meine_vierte_domain wird nicht verarbeitet
Alle anderen Domains werden bei besuchten Seiten und referer immer mit Domain angezeigt.

Im referer wird auch jetzt schon die Domain mit gespeichert und nur für die Anzeige soweit gewünscht unterdrückt. Hier wirkt eine Änderung somit auch für bereits gespeicherte Daten.

Für Besuchte Seiten wirkt die Einstellung im Moment der Speicherung.

Durch die Speicherung des URL's erhöht sich das Datenvolumen. Werden keine oder nur wiederkehrende URL-Parameter gespeichert ist das unbedeutend. Anderenfalls und in Kombination mit vielen Bewegungen, sollte nur die Variante mit einem kurzen Ersatzbegriff zur Anwendung kommen.

Diese Lösung ist unabhängig von Text- oder DB-Variante.

track.php Version 4.3.00 Code:
...
if ( $_GET [ 'mode' ] == "js" )
 {
  //------------------------------------------------------------------
  //SSL Fix by www.ct-designs.de
  if ( $_SERVER [ "HTTPS" ] == "on" ) { $script_domain = str_replace ( "http:" , "https:" , $script_domain ); }
  //------------------------------------------------------------------
  foreach ( $exception_domain as $value ) # check if the call comes from within
   {
    $arrUrl = parse_url ( strtolower ( $_SERVER [ "HTTP_REFERER" ] ) );



#A# I2
#O#    if ( preg_match ("/\.".strtolower ( $value )."$/", ".".$arrUrl [ "host" ] ) )
#O#     {
    list($value,$value_i2)=explode("|",$value);		// Domain isolieren
    if (($value=='*ALL')||(preg_match("/\.".strtolower($value)."$/",".".$arrUrl["host"])))
     {
      if ($value_i2=='-') {exit;}	// ausschließen

#E#



     {
...
  // check if the call comes from within
  $arrUrl = parse_url ( strtolower ( $url_complete ) );



#A# I2
#O#  foreach ( $exception_domain as $value ) { if ( preg_match ("/\.".strtolower ( $value )."$/", ".".$arrUrl [ "host" ] ) ) { $found = 1; } }
  foreach($exception_domain as $value) {
   list($value,$value_i2)=explode("|",$value);		// Domain isolieren
   if (($value=='*ALL')||(preg_match("/\.".strtolower($value)."$/",".".$arrUrl["host"]))) {
    if ($value_i2=='-') {exit;}	// ausschließen
    $found=1;}}
#E#



  // if the call does not come from within
...

function convert_slashes ( $value )
 {
  if ( strpos ( $value , "?" ) == FALSE ) { return $value; }
  else { return substr ( $value , 0 , strpos ( $value , "?" ) ).str_replace ( "/" , "%2F" , substr ( $value , strpos ( $value , "?" ) ) ); }
 }



#A# I2
$arrUrl_i2 = parse_url(strtolower($js_url));
$ed_i2='';
foreach($exception_domain as $value_i2) {
 list($value_i2a)=explode("|",$value_i2);		// Domain isolieren
 if (($value_i2a=='*ALL')||(preg_match("/\.".strtolower($value_i2a)."$/",".".$arrUrl_i2["host"]))) {
  if (strpos($value_i2,"|")) {
   list($value_i2,$ed_i2)=explode("|",$value_i2);	// Domain und eventuellen Ersatzbegriff trennen
   if (!$ed_i2) {$ed_i2=$arrUrl_i2['host'].'/';}	// kein Ersatzbegriff angegeben (ggf. http:// und/oder www. voranstellen
   break;}}}
#E#



 $js_url     = convert_slashes ( $js_url     );
...

if ( $temp_check_name_value == 1 )
 {
  $temp_check_name = $temp_name."?".substr ( $temp_check_name , 0 , strlen ( $temp_check_name ) - 1 );



#A# I2
  $temp_check_name=$ed_i2.$temp_check_name;
#E#



  $site_name = pattern_matching ( "site_name" , $temp_check_name ); // check site name
 }
if ( $temp_check_name_value == 0 )
 {
  if ( strpos ( $temp_site_name , "?" ) > 0 ) { $temp_site_name = substr ( $temp_site_name , 0 , strpos ( $temp_site_name , "?" ) ); }
  if ( strpos ( $temp_site_name , "." ) === FALSE ) { $temp_site_name = $temp_site_name.$home_site_name; }



#A# I2
  $temp_site_name=$ed_i2.$temp_site_name;
#E#



  $site_name = pattern_matching ( "site_name" , $temp_site_name ); // check site name
 }
unset ( $temp_url ); unset ( $temp_parameter ); unset ( $temp_name ); unset ( $temp_site_name ); unset ( $temp_check_name ); unset ( $temp_check_name_value );
####################################################################
### referer detection ###
$inside_referer = 0;
foreach ( $exception_domain as $value_referer )
 {



#A# I2
  list($value_referer)=explode("|",$value_referer);	// Domain isolieren
#E#



  if ( strpos ( substr ( $js_referer , 0 , strpos ( $js_referer."/" , "/" , 7 ) ) , $value_referer ) !== FALSE )
...
foreach ( $exception_domain as $value )
 {



#A# I2
 	list($value)=explode("|",$value);	// Domain isolieren
 	if ($value=='*ALL') {$write_logfile_entry=1;}
#E#



 	if ( strpos ( $js_url , $value ) > 0     ) { $write_logfile_entry = 1; }
... 



es sind nur die Zeilen zwischen
#A# Anfang des Modifikationsblocks und
#E# Ende des Modifikationsblocks zu ändern
#O# sind deaktivierte Originalzeilen
... vorhergehender bzw. folgender nicht zu verändernder Originaltext
Leerzeilen nur zum leichteren Wiederfinden

Achtung die Original-track.php vorher unbedingt als Sicherungskopie in diesem Verzeichnis belassen.

Ich bitte um Feedback bei Einsatz, Anregungen und (ich hoffe nicht) Problemen.

Siehe auch http://www.php-web-statistik.de/cgi-bin/yabb/YaBB.pl?num=1292007633/0#0
Zum Seitenanfang
« Zuletzt geändert: 16.12.10 um 11:03:44 von hr3 »  
 
IP gespeichert
 
Seitenindex umschalten Seiten: 1
Thema versenden Drucken