php-counter: so in ordnung?



  • Hi ich hab da mal nen php-zugriffscounter geschrieben und möchte eure
    kritiken oder verbesserungsvorschläge hören bzw. sehen!
    Er soll mit ip-erkennung das hochzählen des counters erkennen!

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"  
     "http://www.w3.org/TR/html4/frameset.dtd">
    
    <html>
    <head>
    </head>
    
    <body>
    <pre>
    <?php
    
    //Dateien öffnen
    $fp_locked_ip=fopen("locked_ips","r+"); //gelogte ips
    $fp_counter=fopen("counter","r+");	//zählerstand
    $fp_day=fopen("day","r+");		//1 tag wird die ip gesperrt
    
    $day=fread($fp_day,2);
    $a=getdate();
    
    //ist ein tag drin?
    if ($day=="") {	
    	fwrite($fp_day,$a['mday']);
    }
    else { //wenn tag drin
    	if ( $day == $a['mday']-1) { //ips in datei löschen
    		ftruncate ($fp_locked_ip, 0);
    		fseek($fp_locked_ip, 0);
    		ftruncate ($fp_day, 0);
    		fseek($fp_day, 0);
    		fwrite($fp_day,$a['mday']); //neues datum in day-datei schreiben
    	}
    }
    fclose($fp_day);	
    
    //sind schon ips gelogt? Wenn ja, alle einlesen!
    if (filesize('locked_ips')==0) {
    	$all="";
    }
    else {
    	$all=fread($fp_locked_ip,filesize('locked_ips'));
    }
    
    //zählerstand einlesen
    $counter=fgets($fp_counter,10);
    
    //counter auf 0 setzten
    if ($counter=="")	
    	$counter=0;
    
    if ($all == "") { //wenn keine ips gelogt, dann ip schreiben und zählerstand erhöhen
    
    	fwrite($fp_locked_ip,$_SERVER['REMOTE_ADDR'].",");
    	$counter++;
    }
    else { //else jede gelogte ip mit der aktuellen vergleichen, wenn drin, alten zählerstand ausgeben und beenden
    	$ips=explode(",",$all);
    	for ($i=0, $j=count($ips); $i < $j; $i++) {
    
    		if ($ips[$i] == $_SERVER['REMOTE_ADDR']) {
    
    			echo "<i>visitors been here: ".$counter."</i>";
    			echo "</pre>\n</body>\n</html>";
    			fclose($fp_locked_ip);
    			fclose($fp_counter);
    			exit();
    		}
    	}
    
    	//datei-zeiger ans ende setzen und ip adresse schreiben
    	fseek($fp_locked_ip,0,SEEK_END);
    	fwrite($fp_locked_ip,$_SERVER['REMOTE_ADDR'].",");
    
    	//counter erhöhen, da neue ip
    	$counter++;
    
    	/*//counter ausgeben
    	echo "<i>visitors been here: ".$counter."</i>";
    
    	//neuen counterstand schreiben und beenden
    	rewind($fp_counter); 	//lesen rückgängig machen
    	fwrite($fp_counter,$counter);*/
    }
    
    //counter ausgeben
    echo "<i>visitors been here: ".$counter."</i>";
    
    //neuen counterstand schreiben und beenden
    rewind($fp_counter); 	//lesen rückgängig machen
    fwrite($fp_counter,$counter);
    
    fclose($fp_locked_ip);
    fclose($fp_counter);
    
    ?>
    </pre>
    </body>
    </html>
    

    danke für alle beiträge! 👍

    b4sh0r



  • Funzt bei mir irgendwie nicht!

    MfG CSS



  • Sehr gute Fehlerbeschreibung...
    Bei mir funzt er..



  • aassdd schrieb:

    Sehr gute Fehlerbeschreibung...
    Bei mir funzt er..

    ...aber deine Fehlerbeschreibung übertrifft wirklich alles! :p

    MfG CSS



  • Warum sollte ich auch eine Fehlerbeschreibung machen, wenn alles in Ordnung was?

    ach ja das hatte ich tatsächlich bei PHP mal..

    Waruning: No Error found!
    

    Ansonsten wie gesagt: Bei mir funktioniert der Counter, so wie er dort oben steht.
    Wenn das ein Fehler is, sehe ich wohl aus Dummheit nicht ein, warum ich ihn beschreiben sollte.


Anmelden zum Antworten