anfaenger500
Goto Top

Logfile über Webseitenbesuche

Hallo,
ich habe eine Webseite zur Vermietung von Ferienwohnungen und möchte alle Besucher in einer Logdatei festhalten.

Habe schon ein Datei gebastelt, aber es klappt nicht alles. face-sad

Bin noch Anfänger.

Die Date beinhaltet eine IP-Sperre.

Hier der Dateiinhalt:
<?
// ip-sperre in sekunden (Standard 1Jahr)
$expire = 31536000;
$filename = "neu2/counter.txt";  

if (file_exists($filename)) 
{
   $ignore = false;
   $current_agent = (isset($_SERVER['HTTP_USER_AGENT'])) ? addslashes(trim($_SERVER['HTTP_USER_AGENT'])) : "no agent";  
   $current_time = date ("H:i:s");  
   $current_ip = $_SERVER['REMOTE_ADDR'];   
      
   // daten einlesen
   $c_file = array();
   $handle = fopen($filename, "r");  
   
   if ($handle)
   {
      while (!feof($handle)) 
      {
         $line = trim(fgets($handle, 4096)); 
		 if ($line != "")  
		    $c_file = $line;		  
      }
      fclose ($handle);
   }
   else
      $ignore = true;
   
   // bots ignorieren   
   if (substr_count($current_agent, "bot") > 0)  
      $ignore = true;
	  
   
   // hat diese ip einen eintrag in den letzten expire sec gehabt, dann igornieren?
   for ($i = 1; $i < sizeof($c_file); $i++)
   {
      list($counter_ip, $counter_time) = explode("||", $c_file[$i]);  
	  $counter_time = trim($counter_time);
	  
	  if ($counter_ip == $current_ip && $current_time-$expire < $counter_time)
	  {
	     // besucher wurde bereits gezählt, daher hier abbruch
		 $ignore = true;
		 break;
	  }
   }
   
   // counter hochzählen
   if ($ignore == false)
   {
      if (sizeof($c_file) == 0)
      {
	     // wenn counter leer, dann füllen      
		 $add_line1 = date("W") . "-1||" . date("d") . "-1||" . date("m") . "-1||" . date("Y") . "-1||" . $current_time . "||" . "1||1" . "\n";  
		 $add_line2 = $current_ip . "||" . date ("d.m.Y") . "||" . $current_time . "\n";  
		 
		 // daten schreiben
		 $fp = fopen($filename,"w+");  
		 if ($fp)
         {
		    flock($fp, LOCK_EX);
			fwrite($fp, $add_line1);
		    fwrite($fp, $add_line2);
			flock($fp, LOCK_UN);
		    fclose($fp);
		 }
		 
		 // werte zur verfügung stellen
		 $week = $day = $month = $year = $all = $record = 1;
		 $record_time = $current_time;
		 $online = 1;
	  }
      else
	  {
	     // counter hochzählen
		 list($week_arr, $day_arr, $month_arr, $year_arr, $record_time, $all, $record) = explode("||", $c_file);  
		
		 // week
		 $week_data = explode("-", $week_arr);  
		 $week = $week_data[1];
		 if ($week_data == date("W")) $week++; else $week = 1;  
		
		 // day
		 $day_data = explode("-", $day_arr);  
		 $day = $day_data[1];
		 if ($day_data == date("d")) $day++; else $day = 1;  
		  
		 // month
		 $month_data = explode("-", $month_arr);  
		 $month = $month_data[1];
		 if ($month_data == date("m")) $month++; else $month = 1;  
		 
		 // year
		 $year_data = explode("-", $year_arr);  
		 $year = $year_data[1];
		 if ($year_data == date("Y")) $year++; else $year = 1;  
		  
		 // all
		 $all++;
		 
		 // neuer record?
		 $record_time = trim($record_time);
		 if ($day > $record)
		 {
		    $record = $day;
			$record_time = $current_time;
		 }
		 
		 // speichern und aufräumen und anzahl der online leute bestimmen
		 
		 $online = 1;
		 
		 // daten schreiben
		 $fp = fopen($filename,"w+");  
		 if ($fp)
         {
		    flock($fp, LOCK_EX);
			$add_line1 = date("W") . "-" . $week . "||" . date("d") . "-" . $day . "||" . date("m") . "-" . $month . "||" . date("Y") . "-" . $year . "||" . $record_time . "||" . $all . "||" . $record . "\n" ;		   
		    fwrite($fp, $add_line1);
		 
		    for ($i = 1; $i < sizeof($c_file); $i++)
            {
               list($counter_ip, $counter_time) = explode("||", $c_file[$i]);  
	  
	           // übernehmen
		   	   if ($current_time-$expire < $counter_time)
	           {
	              $counter_time = trim($counter_time);
				  $add_line = $counter_ip . "||" . $counter_time . "\n";  
			      fwrite($fp, $add_line);
			      $online++;
	           }
            }
		    $add_line = $current_ip . "||" . $current_time . "\n";  
		    fwrite($fp, $add_line);
		    flock($fp, LOCK_UN);
		    fclose($fp);
	     }
	  }
   }
   else
   {
      // nur zum anzeigen lesen
	  if (sizeof($c_file) > 0)
	     list($week_arr, $day_arr, $month_arr, $year_arr, $record_time, $all, $record) = explode("||", $c_file);  
	  else
		 list($week_arr, $day_arr, $month_arr, $year_arr, $record_time, $all, $record) = explode("||", date("W") . "-1||" . date("d") . "-1||" . date("m") . "-1||" . date("Y") . "-1||" . $current_time . "||" . "1||1");  
	  
	  // week
	  $week_data = explode("-", $week_arr);  
	  $week = $week_data[1];
	  
	  // day
	  $day_data = explode("-", $day_arr);  
      $day = $day_data[1];
	  
	  // month
	  $month_data = explode("-", $month_arr);  
	  $month = $month_data[1];
	  
	  // year
	  $year_data = explode("-", $year_arr);  
	  $year = $year_data[1];
	  
	  $record_time = trim($record_time);
	  
	  $online = sizeof($c_file) - 1;
   }
?>
<table width="800" border="0" align="center" cellpadding="0" cellspacing="0">  
		<tr>
			<td colspan="2">  
	 			<p align="center">  
					<font face="Verdana" size="3"><br>		  
						 Sie sind der <? echo $all; ?> Besucher auf unserer Seite!	
					</font> 
				</p>
			</td>
		</tr>
</table>
<?
}
?>

Die Logfiles werden in die Datei counter.txt geschrieben.

Inhalt der Datei:
27-302-32011-322:06:393
27.02.201127.02.201127.02.201127.02.201127.02.2011
20:12:5320:12:5320:12:5320:12:5320:12:53
22:06:3922:06:3922:06:3922:06:3922:06:39

Mein Ziel ist es:
- alle Zugriffe egal wie oft zu protokollieren
- Zugriffe sollen mit IP-Adresse, Zugriffsdatum, Zugriffszeit erfasst werden

Leider komme ich hier nicht weiter, kann mir bitte einer von euch weiterhelfen!

Danke und Gruß

Content-ID: 161930

Url: https://administrator.de/contentid/161930

Ausgedruckt am: 25.11.2024 um 19:11 Uhr

Anton28
Anton28 10.03.2011 um 20:24:32 Uhr
Goto Top
Hallo,

warum willst Du ein solches Datengrab erzeugen ?

Da es sich bei den IP-Adressen um persönliche Daten nach der neuesten Rechtssprechung handelt, gehe ich davon aus, dass von jedem Besucher Deiner Web-Site eine zustimmung zur Verarbeitung der personenbezogenen Daten vorliegt, oder ?

Was willst Du mit diesem Datenmüll anfangen ?

Die meisten Besucher Deiner Seite haben einen ADSL-Anschluss, diesem wird regelmäßig eine neue IP zugewiesen.

Was also ist der Sinn dieses Datenmülls ?

Weil ichs kann, tu ichs, oder was ?

Gruß

Anton