Ankündigung

Einklappen
Keine Ankündigung bisher.

Counter Ip sperre einfügen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Counter Ip sperre einfügen

    Hallo alle zusammen ich bin im Moment beim Spiel Trackmania 2 Stadium ein Manialink am erstellen. Das ist eine interne Seite im Spiel auf der Spieler sachen erwerben können. Diese Seite muss jedoch selber mit xml und php geschrieben werden. Ich habe soweit auch fast alles geschaft was ich vor hatte einzubauen jedoch hänge ich jetzt an einem Problem und zwar habe ich diesen counter eingebaut:
    PHP-Code:
    <?php
    if(!file_exists("count.txt"))
    {
    $counter=fopen("count.txt""a" );}
    else
    {
    $counter=fopen("count.txt","r+");}
    $aufruf=fgets($counter,100);
    $aufruf=$aufruf+1;
    rewind($counter);
    fputs($counter,$aufruf);
    fclose($counter);
    echo 
    "<label posn=\"-60.5 -11 75\" text=\"$9CCBesucher :   $aufruf\" /> " 
    ?>
    Das Problem ist jetzt das dieser counter jedes mal wenn man auf die seite kommt zählt. Ich würde es gerne aber so haben das nach betreten der Seite eine Ip Sperre eintritt die z.B. 24 stunden andauert und erst dann wird man wieder als besucher gezählt....

    Weis jemand wie ich das einbauen kann???

    MFG. Pitipi

  • #2
    Zitat von pitipi Beitrag anzeigen
    Hallo alle zusammen ich bin im Moment beim Spiel Trackmania 2 Stadium ein Manialink am erstellen. Das ist eine interne Seite im Spiel auf der Spieler sachen erwerben können. Diese Seite muss jedoch selber mit xml und php geschrieben werden. Ich habe soweit auch fast alles geschaft was ich vor hatte einzubauen jedoch hänge ich jetzt an einem Problem und zwar habe ich diesen counter eingebaut:
    PHP-Code:
    <?php
    if(!file_exists("count.txt"))
    {
    $counter=fopen("count.txt""a" );}
    else
    {
    $counter=fopen("count.txt","r+");}
    $aufruf=fgets($counter,100);
    $aufruf=$aufruf+1;
    rewind($counter);
    fputs($counter,$aufruf);
    fclose($counter);
    echo 
    "<label posn=\"-60.5 -11 75\" text=\"$9CCBesucher :   $aufruf\" /> " 
    ?>
    Das Problem ist jetzt das dieser counter jedes mal wenn man auf die seite kommt zählt. Ich würde es gerne aber so haben das nach betreten der Seite eine Ip Sperre eintritt die z.B. 24 stunden andauert und erst dann wird man wieder als besucher gezählt....

    Weis jemand wie ich das einbauen kann???

    MFG. Pitipi
    Das ist einfach hier ein Beispiel im Grunde bräuchtest nur noch die Zeit anpassen.
    Die Zeitspanne gibt an wie lange die Besucher gezählt werden. In diesem Beispiel eben 5 Minuten danach werden sie gelöscht.
    Du kannst das natürlich hoch setzen dann auf 24 Stunden. Dann wird die Anzahl der Besucher der Letzen 24 Stunden angezeigt

    PHP-Code:
    <?php
    error_reporting
    (E_ALL E_STRICT);                         // PHP Fehlermeldungen anzeigen
    ini_set('display_errors'1);
     
    // Besucher IP Adresse achten ob Proxy davor geschaltet ist
    $ip         = empty($_SERVER['HTTP_X_FORWARDED_FOR'])  
                ? 
    $_SERVER['REMOTE_ADDR']  
                : 
    $_SERVER['HTTP_X_FORWARDED_FOR'];  
     
    $filename   "liste.php";                                 // Filename
    $time       time();                                      // Aktuelle Zeit Stempel
    $ablaufzeit 300;                                         // 300 Sekunden - 5 Minuten
    $file       file_get_contents($filename);                // Datei einlesen
    $file       = empty($file)? $time."&&".$ip $file;        // Wenn Datei Leer ist
    $content    explode("&&",$file);                         // Daten trennen und auswerten Zeit/IP
     
    // Prüfen ob die 5 Minunten bereits abgelaufen sind
    foreach ($content as $key => $value)
    {
      if (
    $key == )
      {
        if(
    $content[$key+1] == $ip)                            // Wenn Aktuelle ip vorhanden dann Zeit aktualisieren
        
    {
          
    $content[$key] = $time;                              // Aktuelle Zeit eintragen
        
    }
        if(
    $content[$key]+$ablaufzeit $time)                 // Prüfen ob die Zeit abgelaufen ist
        
    {
          unset(
    $content[$key]);                               // Zeit aus dem Array löschen
          
    unset($content[$key+1]);                             // IP Adresse aus dem Array löschen
        
    }
      }
    }
     
    // Ip und Zeit in die Datei eintragen
    $anzahl   count($content)/2;                             // Nur die IP Adressen zählen
    $content  implode('&&',$content);                        // Aus dem Array einen String wieder machen
    file_put_contents($filename,$content);                     // Neuen Inhalt in die Datei schreiben
    $content $anzahl == $anzahl." Gast online | " $anzahl." Gäste online | ";
    echo 
    $content;                                             // Text ausgeben
    Mfg Splasch

    Kommentar


    • #3
      Heißt das ich könnte das einfach so nehmen und bei mir noch einfügen
      und dann eben nur die $ablaufzeit ändern und $filename ???

      Bzw. welche Datei muss man bei $filename einfügen??? und wo wird hier in dem beispiel eine txt datei verwendet fällt diese weg??

      Kommentar


      • #4
        PHP-Code:
        $file       = empty($file)? $time."&&".$ip $file
        Du verwendest $ip schon, obwohl die Variable erst einige Zeilen später befüllt wird. Hast du das getestet?
        Edit: OK, du hast es editiert - gilt nun also nicht mehr

        PHP-Code:
        $ip = empty($_SERVER['HTTP_X_FORWARDED_FOR'])  
            ? 
        $_SERVER['REMOTE_ADDR']  
            : 
        $_SERVER['HTTP_X_FORWARDED_FOR']; 
        Wenn man den Counter absichtlich manipulieren wollte, reicht das hier nicht aus. Man könnte per Script Requests absetzen mit dem "X-Forwarded-For"-Header und könnte dort beliebige IP-Adressen angeben. Dein Script würde diese blind annehmen

        Der Rest sieht auf dem ersten Blick ziemlich kompliziert aus. Das möchte ich mir um diese Uhrzeit nicht mehr genauer anschauen

        VG

        Kommentar


        • #5
          Zitat von pitipi Beitrag anzeigen
          Heißt das ich könnte das einfach so nehmen und bei mir noch einfügen
          und dann eben nur die $ablaufzeit ändern und $filename ???

          Bzw. welche Datei muss man bei $filename einfügen??? und wo wird hier in dem beispiel eine txt datei verwendet fällt diese weg??
          Im Grunde ja zu den Dateinamen würd ich dir Empfehlen jedenfalls eine .php Endung zu verwenden.
          Wie der Dateiname lautet ist egal. Entuell eben dann auch noch den Ausgabe Text anpassen.

          Beachte aber das die Ablaufzeit in Sekunden angeben werden muss!
          Daher 60*60 ist gleich 1 Stunde mal 24 ergibt dann deine 24 Stunden.

          Wenn man den Counter absichtlich manipulieren wollte, reicht das hier nicht aus. Man könnte per Script Requests absetzen mit dem "X-Forwarded-For"-Header und könnte dort beliebige IP-Adressen angeben. Dein Script würde diese blind annehmen
          Mag sein das war aber auch nicht seine Frage. Mal abgesehen davon werden sicher der Großteil der Spieler nicht in der Lage sein überhaupt so ein Script zu schreiben das den Request manipuliert.

          Mfg Splasch

          Kommentar


          • #6
            Aber was genau macht die datei unter dem punkt $filename???? Das verstehe ich noch nicht so ganz....

            Kommentar


            • #7
              was genau meinst du damit?

              Kommentar


              • #8
                Zitat von pitipi Beitrag anzeigen
                Aber was genau macht die datei unter dem punkt $filename???? Das verstehe ich noch nicht so ganz....

                Ich hab das jetzt soweit hinbekommen nur ist mir gerade aufgefallen das dieser counter nur die leute zählt die gerade auf dieser seite sind kann das sein??

                Ich hätte aber gerne einen counter der alle leute zählt die auf dieser seite waren also im prinzip immer wieter hoch zählt aber er soll halt nicht immer zählen wenn eine person 10 mal am tag auf dieser seite war sondern nur einmal in 24 stunden...

                Kommentar


                • #9
                  Zitat von pitipi Beitrag anzeigen
                  Ich hab das jetzt soweit hinbekommen nur ist mir gerade aufgefallen das dieser counter nur die leute zählt die gerade auf dieser seite sind kann das sein??

                  Ich hätte aber gerne einen counter der alle leute zählt die auf dieser seite waren also im prinzip immer wieter hoch zählt aber er soll halt nicht immer zählen wenn eine person 10 mal am tag auf dieser seite war sondern nur einmal in 24 stunden...
                  Der Counter ist ja auch momentan auf 5 Minuten eingestellt! Du musst schon auch die Zeit ändern damit alle Gelistet werden die die letzen 24 Stunden da waren.

                  Die Berechnung dazu hab ich dir bereit oben gepostet.

                  Wenn du willst das immer nur nach oben gezählt wird musst du das Script noch ein wenig anpassen.
                  Bislang werden in dem Script nach Ablauf der Zeit die Daten wieder gelöscht!

                  Mfg Splasch

                  Kommentar


                  • #10
                    Okay dann habe ich das doch richtig verstanden und ich ahbe auch schon die zeit auf 5 sekunden umgestellt gehabt um das zu testen... Dann werde ich mich mal dran setzten und den anpassen.

                    Danke erstmal an alle die mir geholfen haben.


                    MFG. Pitipi

                    Kommentar


                    • #11
                      Okay irgendwie check ich das nicht wie ich den so umändern kann wie ich eben beschrieben habe:
                      Ich hab das jetzt soweit hinbekommen nur ist mir gerade aufgefallen das dieser counter nur die leute zählt die gerade auf dieser seite sind kann das sein??

                      Ich hätte aber gerne einen counter der alle leute zählt die auf dieser seite waren also im prinzip immer wieter hoch zählt aber er soll halt nicht immer zählen wenn eine person 10 mal am tag auf dieser seite war sondern nur einmal in 24 stunden...

                      Kommentar


                      • #12
                        wie wäre es, wenn du erstmal die Grundlagen lernst? Copy paste ist immer die schlechteste Lösung und hilft nur selten zum Verständnis.. Dir fehlt glaube ich das logische Denken grade noch ein wenig.

                        Kommentar


                        • #13
                          Zitat von Sakron Beitrag anzeigen
                          wie wäre es, wenn du erstmal die Grundlagen lernst? Copy paste ist immer die schlechteste Lösung und hilft nur selten zum Verständnis.. Dir fehlt glaube ich das logische Denken grade noch ein wenig.
                          im prinzip geb ich dir recht, das hat aber noichtmal mit grundlagen zu tun.
                          soweit ich überflogen habe ist alles schon gepostet und erklärt.

                          nur noch nicht in einem codeblock.

                          Kommentar


                          • #14
                            Zitat von moma Beitrag anzeigen
                            im prinzip geb ich dir recht, das hat aber noichtmal mit grundlagen zu tun.
                            soweit ich überflogen habe ist alles schon gepostet und erklärt.

                            nur noch nicht in einem codeblock.
                            Ja das mag sein nur dann fehlen mir halt noch die Kenntnisse dazu diesen Codeblock dann zu schreiben....

                            Kommentar


                            • #15
                              Das kommt noch dazu moma.
                              Dann nimm dir meinen Rat zu Herzen sonst wirst du hier jedes mal nen thread eröffnen müssen .
                              Grundlagen sind hier im Forum ja Super aufgelistet

                              Kommentar

                              Lädt...
                              X