Feedback

C# - Simpler Hit Counter mit IP Sperre

Veröffentlicht von am 10.06.2011
(0 Bewertungen)
Dieser Snippet führt nebenbei auch File Statistiken. Ihr könnt also sehen wieviele User auf welcher Seite waren indem ihr folgende Datei aufruft:

~/counter/[aspxfilename].txt

Beispiel zur deklaration:

Importieren:
using PageCounting;


In den Page Load:

PageCounter PCounter = new PageCounter();
PCounter.CountThisPage();



Auslesen der aktuellen Hits:

<%= new PageCounting.PageCounter().getCounts() %>


oder
int akutelleHits = new PageCounting.PageCounter().getCounts();


Manche Server haben Probleme damit Ordner erstellen zu lassen, wie meiner (Sharinghoster).

Um das zu umgehen erstellt einfach im ordner, wo die Page liegt den Ordner "counter".
GFU-Schulungen  [Anzeige]

C# 2017/2015/2013 Aufbau

In dieser Schulung lernen Sie fortgeschrittene Techniken im Bereich .Net C#. Dabei stehen neben den eigentlichen Techniken auch architektonische Aspekte im Mittelpunkt.

Angular mit ASP.NET Core für .NET-Entwickler

.NET ist Ihnen vertraut, als Entwickler verfügen Sie über einschlägige Kenntnisse. In diesem Kurs lernen Sie nun, Angular in .NET-Umgebungen einzusetzen. Sie verstehen das Konzept von Angular und integrieren das clientseitige JS-Framework sicher in.NET-Anwendungen.

//Filename Pagecounter.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;


namespace PageCounting
{

    /// <summary>
    /// Zusammenfassungsbeschreibung für PageCounter
    /// </summary>
    public class PageCounter
    {
        public PageCounter()
        {
           
        }

        public void CountThisPage()
        {
            //
            // Dateicheck 
            // Class File braucht Schreib und Änderrechte
            //
            string dir = HttpContext.Current.Server.MapPath("~/App_Code/counter");
            string file = HttpContext.Current.Server.MapPath("~/App_Code/counter/counter.txt");
            string file2 = HttpContext.Current.Server.MapPath("~/App_Code/counter/ips.txt");

            //Wir führen außerdem eine Statistik über alle Dateien. Wann welche Aspx Datei besucht wurde
            string FileNameForAspx = Path.GetFileNameWithoutExtension(HttpContext.Current.Request.Path);
            string RawFile = HttpContext.Current.Server.MapPath("~/App_Code/counter/" + FileNameForAspx + ".txt");


            if (!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);

            }
            if (!File.Exists(file))
            {

                File.Create(file);

            }
            if (!File.Exists(file2))
            {

                File.Create(file2);

            }
            if (!File.Exists(RawFile))
            {

                File.Create(RawFile);

            }

            FileInfo FI = new FileInfo(file2);

            if (FI.LastWriteTime.Day != DateTime.Now.Day) {

                File.WriteAllText(file2, "");
            
            }
            string TotalCounter = HttpContext.Current.Server.MapPath("~/App_Code/counter/counter.txt");
            string FileCounter = HttpContext.Current.Server.MapPath("~/App_Code/counter/" + FileNameForAspx + ".txt");
            string myIp = HttpContext.Current.Request.UserHostAddress.ToString();

            if (!IP_Exists())
            {

                string content_total = File.ReadAllText(TotalCounter);
              

                File.WriteAllText(TotalCounter, content_total + "" + myIp + ";");
                File.WriteAllText(file2, content_total + "" + myIp + ";");
                string content_raw = File.ReadAllText(FileCounter);
                File.WriteAllText(FileNameForAspx, content_raw + "" + myIp + ";");


            }
        
        }

        private bool IP_Exists()
        {

            bool ret = false;

            string[] ips = File.ReadAllText(HttpContext.Current.Server.MapPath("~/App_Code/counter/ips.txt")).Split(';');
            string myIp = HttpContext.Current.Request.UserHostAddress.ToString();

            for (int x = 0; x < ips.Length; x++)
            {

                if (myIp == ips[x]) ret = true;

            }

            return ret;
        }

        public int getCounts()
        {
            int ret = 0;
            try
            {
                ret = File.ReadAllText(HttpContext.Current.Server.MapPath("~/App_Code/counter/counter.txt")).Split(';').Length - 1;
            }
            catch
            {

                //wenn ein undeutiger Wert rauskommt (Oben) gebe 0 aus. Da dies jedoch schon der Default Wert ist brauchen wir im Catch keinen Code

            }



            return ret;
        }
    }
}
Abgelegt unter Hitcounter, Pagecounter, Hit, Counter, Aspx, Ip Sperre.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!