Ankündigung

Einklappen
Keine Ankündigung bisher.

Counter - Daten gelöscht - Erklärung??

Einklappen

Neue Werbung 2019

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

  • Counter - Daten gelöscht - Erklärung??

    Guten Morgen zusammen,

    PHP-Code:
    <?php

    $count
    =0
    $time time(); 
    $ip $_SERVER['REMOTE_ADDR']; 
    $text=$time."#".$ip."\n"
    $filename="counter.csv"
    $zeile file($filename); 
    $datum=date("d.m.y"); 
    $setdate=0
    $uhrzeit=date("H:i:s"); 
    //Hier kann die Aufenthaltszeit für eine gültige Zählung und die Reloadsperre eingetragen werden (in sec) 
    $countgueltig=600
    $reload=600

    //Prüfung ob IP vorhanden 
    foreach($zeile as $sperre

    $arraysp explode("#",$sperre); 

    if(
    $ip==rtrim($arraysp[1]) & $arraysp[0] > $time -$reload){$vorhanden=1;} 

    //Tages- und Gesamtwert ermitteln 
    foreach($zeile as $wert

    $array explode("#",$wert); 
    if(
    $array[0]=='datum'rtrim($array[1])!=$datum){$setdate=1;} 
    if(
    $vorhanden==1){ 
    if(
    $array[0]=='heute' $setdate==0){$heute=rtrim($array[1]);} 
    if(
    $array[0]=='heute' $setdate==1){$heute=1;$gestern=rtrim($array[1]);} 
    if(
    $array[0]=='gesamt'){$gesamt=rtrim($array[1]);} 
    if(
    $array[0]=='gestern'$setdate==0){$gestern=rtrim($array[1]);} 


    if(
    $vorhanden!=1


    if(
    $array[0]=='heute'$setdate==0){$heute=rtrim($array[1])+1;} 
    if(
    $array[0]=='heute'$setdate==1){$heute=1;$gestern=rtrim($array[1]);} 
    if(
    $array[0]=='gestern'$setdate==0){$gestern=rtrim($array[1]);} 
    if(
    $array[0]=='gesamt'){$gesamt=rtrim($array[1])+1;} 



    //Tages- und Gesamtwert schreiben 
    $fpwrite fopen($filename "w"); 
    fwrite ($fpwrite"datum"."#".$datum."\n"."heute"."#".$heute."\n"."gestern"."#".$gestern."\n"."gesamt"."#".$gesamt."\n".$text750); 
    fclose($fpwrite); 



    //Useronline schreiben 
    $fpanhaengen fopen($filename "a"); 
    foreach(
    $zeile as $useronline

    $arrayuseronline explode("#",$useronline); 

    if(
    $arrayuseronline[0] > $time -$countgueltig $ip!=rtrim($arrayuseronline[1])) 


    fwrite ($fpanhaengen,$useronline750); 



    fclose($fpanhaengen); 
    //wieviele user online(für Anzeige)? 
    $zeile1 file($filename); 


    //Ausgabe 


    for($x=0;$x<count($zeile1);$x++){$count=$count+1;} 
    echo 
    '<p align="left">[b]Datum: [/b]'; echo $datum; echo  '   </font>
    '

    echo 
    '[b]Uhrzeit: [/b]'; echo $uhrzeit; echo  '</font>
    '

    echo 
    '[b]User online: [/b]'; echo $count=$count-4;echo  '   </font>
    '

    echo 
    '[b]Heute: [/b]'; echo $heute;echo  '    </font>
    '

    echo 
    '[b]Gestern: [/b]'; echo $gestern;echo  '    </font>
    '

    echo 
    '[b]Gesamt: [/b]'; echo $gesamt;echo  '</font></p>'

    ?>
    Ich benutze obigen Code für einen Counter.
    Nun ist es mir gestern aber passiert, dass der Counter wieder auf 0 resettet wurde, ohne das ich etwas unternommen habe.

    wie kann das sein? kann es Probleme geben wenn 2 user zur exakt gleich Zeit die Seite betreten?

    Also die Daten liegen in counter.csv und die Datei wurde auch nicht manuell resettet. Irgendetwas am Programm muss das also gemacht haben.

    Vielen Dank.

    Gruß HaVoK

  • #2
    Version #2 von http://www.phpfriend.de/forum/viewtopic.php?p=336875

    Kommentar


    • #3
      na siehste, aber wenigstens haste es nun so gefunden. denke hier wird auch die bessere Zielgruppe dafür angesprochen.

      thx anyway.

      Gruß HaVoK

      Kommentar


      • #4
        Nein. Hie wird die selbe Zielgruppe angesprochen.
        Das Forum ist nicht nach Beantwortern, sondern nach Fragern/Problemstellungen aufgeteilt.
        Das wird aber in den jeweiligen Erklärungsthreads auch so erklärt.

        Wie habe ich es gefunden? "Unbeantwortete Beiträge anzeigen" auf der Boardindex Seite.

        Kommentar


        • #5
          hm, mag was dran sein.

          aber ich zum Beispiel beantworte recht oft Fragen im Forum, wenn ich sie sehe und was dazu weiß. Würde aber keine Frage finden die im Profi Forum ist, da ich da meist net reinschaue, sondern die Beiträge durch zufälliges rumstöbern entdecke.

          Aber ok, werds mir merken.

          Gruß

          Kommentar


          • #6
            PHP-Code:
            foreach($zeile as $wert)  
            {  
            $array explode("#",$wert);  
            if(
            $array[0]=='datum'rtrim($array[1])!=$datum){$setdate=1;}  
            if(
            $vorhanden==1){  
            if(
            $array[0]=='heute' $setdate==0){$heute=rtrim($array[1]);}  
            if(
            $array[0]=='heute' $setdate==1){$heute=1;$gestern=rtrim($array[1]);}  
            if(
            $array[0]=='gesamt'){$gesamt=rtrim($array[1]);}  
            if(
            $array[0]=='gestern'$setdate==0){$gestern=rtrim($array[1]);}  

            }  
            if(
            $vorhanden!=1)  
            {  

            if(
            $array[0]=='heute'$setdate==0){$heute=rtrim($array[1])+1;}  
            if(
            $array[0]=='heute'$setdate==1){$heute=1;$gestern=rtrim($array[1]);}  
            if(
            $array[0]=='gestern'$setdate==0){$gestern=rtrim($array[1])}  
            if(
            $array[0]=='gesamt'){$gesamt=rtrim($array[1])+1;}  
            }  

            Also das da überhaupt noch was passiert nach der ersten Abfrage wundert mich.

            Angenommen du bildest mit explode() das Array array[] mit Hilfe der Zeile.

            dann sind die Inhalte so

            "datum"."#".$datum."\n"."heute"."#".$heute."\n"."g estern"."#".$gestern."\n"."gesamt"."#".$gesamt."\n ".$text,

            array[0] => "datum";
            array[1] => $Datum."heute";
            array[2] => $heute."\n"."gestern";
            ...

            etc das wirkt ein wenig komisch wenn ich ehrlich bin und bin mir nicht sicher ob du sowas erreichen wolltest.

            Ich hab mal vor kurzer Zeit ein Voting Script gemacht mittels Textdatei und da war es ähnlich einmal die Auswahlmöglichkeit und einmal eine gewisse Zahl, also brauchte man mehrdimensionale Arrays da es über eine Datei lief und nicht über eine Datenbank.

            Das ist die Section Eintragen , $Choice ist die Auswahl die getroffen wurde.

            PHP-Code:
            <?php
            /*******************************************************************************
            Section Vote Auswertung:
                    Die Stimme die eben abgegeben wurde wird gezählt und dann in der Datei
                    eingetragen.
                    Danach wird ein Cookie hinterlassen welcher am Datum abläuft das
                    eingestellt wurde
            *******************************************************************************/

            //require("Dateiauslesen.php");

            CLASS Auswertung extends DateiAusgabe{
            var 
            $Choice;
            var 
            $DateiInhalt;

               function 
            Set_Variablen(){
                    
            $this->DateiInhalt $this->content();
                    
            $this->Choice  $_POST["Choice"];
                    
            $this->AblaufD $_POST["AblaufDatum"];
               }

            // Section Auswertung Auswahl wird ausgelesen und mit dem Array verglichen
            // Dann wird der Inhalt der Datei um eins erhöt

               
            function VoteSetzen(){
                 
            $this->Set_Variablen();
                 for(
            $i=0;$i count($this->DateiInhalt);$i++){
                   if(
            $this->Choice == $this->DateiInhalt[$i][0]){
                      
            $this->DateiInhalt[$i][1] = $this->DateiInhalt[$i][1]+1;
                   }
                 }
                 
            $this->NeuSchreiben();
               }
               
               function 
            NeuSchreiben(){
               
            /******************************************************
                     Datei Inhalt neu zusammenfügen und schreiben
               ******************************************************/
                 
            for($i 0;$i count($this->DateiInhalt);$i++){
                    
            $this->DateiInhalt[$i] = join("¥" $this->DateiInhalt[$i]);
                  }
                 
            $this->DateiInhalt join("|##|" $this->DateiInhalt);
                 
            $cdt fopen($this->ContentD,"w");
                 
            fwrite($cdt,$this->DateiInhalt);
                 
            fclose($cdt);
                 
            $this->Cookie_setzen();
               }
               
               function 
            Cookie_setzen(){                         // Cookie setzen
                 
            $this->AblaufD explode("." $this->AblaufD); // Ablauf Datum zerlegen
                 
            setcookie(md5('Voted')                          // Name des Cookies md5 verschlüsselt
                           
            ,"1",                                 // Inhalt des Cookies
                           
            mktime(0,0,0,                         // Stunde , Minute , Sekunde
                           
            $this->AblaufD[1],                    // Monat
                           
            $this->AblaufD[0],                    // Tag
                           
            $this->AblaufD[2]));                  // Jahr
               
            }
            }

            $Auswertung = new Auswertung;
            $Auswertung->VoteSetzen();
            ?>
            Cookie setzen mal ausgelassen nun , war nur damit er nicht nochmal abstimmen kann bis das Voting ausgelaufen ist.

            PHP-Code:
            <?php
            /*******************************************************************************
            Section Klasse DateiAusgabe:
                Hier werden die Datein content.dat und layout.dat eingelesen und die
                Ausgaben in ein Array gespeichert zur weiteren Verarbeitung
            *******************************************************************************/

            CLASS DateiAusgabe{

            /*******************************************************************************
            Section Variablen:
                    Variablen werden festgelegt
            *******************************************************************************/

              
            var $LayoutD        ="VoteDatein/layout.dat";
              var 
            $ContentD       ="VoteDatein/content.dat";
              var 
            $layout_inhalt  ="";
              var 
            $content_inhalt ="";

            /*******************************************************************************
            Section Layout:
                    Layout.dat einlesen und Inhalte in einen Array ablegen
            *******************************************************************************/

              
            function layout(){
                if(
            is_file($this->LayoutD)){
                   
            $this->layout_inhalt file($this->LayoutD);
                   foreach (
            $this->layout_inhalt as $key => $value){
                     
            $this->layout_inhalt $value;
                   }
                }
                return 
            $this->layout_inhalt explode("¥"$this->layout_inhalt);
              }
            // function Layout schliessen

            /*******************************************************************************
            Section Content:
                    content.dat einlesen und Inhalte in ein mehdrimensionalen Array ablegen
            *******************************************************************************/
              
            function content(){
                if(
            is_file($this->ContentD)){
                    
            $cdt fopen($this->ContentD,"r");
                    while(!
            feof($cdt)){
                      
            $this->content_inhalt .= fgets($cdt,255);
                    }
                  
            $this->content_inhalt explode("|##|",$this->content_inhalt);
                  for(
            $i=0;$i<count($this->content_inhalt);$i++){
                     
            $this->content_inhalt[$i] = explode("¥",$this->content_inhalt[$i]);
                   }
                 }
                return 
            $this->content_inhalt// Inhalt der Datei content.dat zurückgeben
                                              // mehrdimensionales Array
               
            // function content() schliessen
            }// Class DateiAusgabe Schliessen
            ?>
            die Funktion Layout wird nicht benötigt war nur für die Einstellungen des Votings , also Farben etc ...

            die eigentliche Vote Datei sieht so aus:

            Code:
            Ja¥5|##|Nein¥2|##|Eventuell¥15....
            So vorne steht für was gevoted wird und hinetn die Anzahl der stimmen. Das heisst wenn wir uns das zerlegen , müssen wir zuerst mal alles rausfiltern was diese Struktur -> "String¥Int" hat

            also

            $array = explode("|##|" , dateiinhalt);

            Danach muss man natürlich nochmal die Auswahl und die Stimmen auseinander nehmen.

            also

            $array[0] = explode("¥" , $array[0]);
            $array[1] = explode("¥" , $array[1]);

            somit bildet sich dann ein mehrdimensionales Array
            $array[0][0] => Ja
            $array[0][1] => Stimmen
            $array[1][0] => Nein
            $array[1][1] => Stimmen
            ....

            So im Prinzip funktionierte es , naja schau mal rein ob du damit was anfangen kannst.

            Kommentar

            Lädt...
            X