anfaenger500
Goto Top

Webcounter wird nicht angezeigt

Hallo,

bin im Bereich PHP Anfänger und habe für die Homepage eines Bekannten einen Webcounter gebastelt.
Der Counter hat mal funktioniert und nachdem ich den Ordner von neu2 auf Besucherzaehler umbenannt habe wird mir der Counter nicht mehr angezeigt.

PHP funktioniert auf dem Webserver. Hoster ist Strato.

PHP Version: PHP Version 4.4.9
System: SunOS localhost 5.8 Generic_108528-17 sun4u

Habe den Webcounter folgendermaßen in meine index.php implementiert
<!-- Besucherzaehler - Anfang -->
<?php include "Besucherzaehler/counter.php"; ?> 
<!-- Besucherzaehler - Ende -->

Anbei der Code vom Counter:
<?
// ip-sperre in sekunden (Standard 1Jahr)
$expire = 31536000;
$filename = "/Besucherzaehler/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 . "||" . date ("d.m.Y") . "\n";  
			      fwrite($fp, $add_line);
			      $online++;
	           }
            }
		    $add_line = $current_ip . "||" . $current_time . "||" . date ("d.m.Y") . "\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>
<?
}
?>

Inhalt der counter.txt:
Anhand des Inhaltes kann man sehen, dass es schonmal geklappt hat und jetzt nicht mehr. face-sad
09-6||03-6||03-6||2011-6||21:00:10||8364||8370

80.187.106.200||19:37:04||03.03.2011
91.34.238.53||20:20:18||03.03.2011
88.78.34.172||20:24:17||03.03.2011
79.254.128.240||20:34:23||03.03.2011
83.133.125.202||21:00:10||03.03.2011

Kann mir bitte einer weiterhelfen!

Danke und Grüße

Content-ID: 162348

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

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

Arano
Arano 10.03.2011 um 16:52:32 Uhr
Goto Top
Hallo Anfaenger500,

Habe nur mal eben gaanz schnell drauf geguckt und ich frage mich was denn passiert wenn:
if (file_exists($filename)) 
fehlschlägt ?
Konnte auf die schnelle keinen passenden else-Block finden !

Und zweitens, ändere "<? ... ?>" in "<?php ... ?>" !
Die Short-Open-Tags (erstere) sollten nur auf Entwicklungsumgebungen verwendet werden, das sie bei eurem Hoster nun auch aktiviert sind muss nicht immer so bleiben !
Also am besten einfach immer "<?php .. ?>" benutzen, dann kann nichts schief gehen - jedenfalls nicht deswegen *fg*


~Arano
Blueball
Blueball 11.03.2011 um 10:48:21 Uhr
Goto Top
Hallo Anfaenger500,

bitte ändere mal den absoluten Pfad auf einen relativen dann sollte es funktionieren. Es wird nicht der root vom Webserver sondern der vom Server verwendet.

alt
$filename = "/Besucherzaehler/counter.txt";   

neu
$filename = "Besucherzaehler/counter.txt";   

mfg Steve