php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.10.2005, 10:38  
Erfahrener Benutzer
 
Registriert seit: 30.08.2005
Beiträge: 179
havok
havok eine Nachricht über ICQ schicken
Standard 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
havok ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.10.2005, 13:21  
Gast
 
Beiträge: n/a
Standard

Version #2 von http://www.phpfriend.de/forum/viewtopic.php?p=336875
  Mit Zitat antworten
Alt 18.10.2005, 13:31  
Erfahrener Benutzer
 
Registriert seit: 30.08.2005
Beiträge: 179
havok
havok eine Nachricht über ICQ schicken
Standard

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

thx anyway.

Gruß HaVoK
havok ist offline   Mit Zitat antworten
Alt 18.10.2005, 13:33  
Gast
 
Beiträge: n/a
Standard

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.
  Mit Zitat antworten
Alt 18.10.2005, 13:49  
Erfahrener Benutzer
 
Registriert seit: 30.08.2005
Beiträge: 179
havok
havok eine Nachricht über ICQ schicken
Standard

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ß
havok ist offline   Mit Zitat antworten
Alt 20.10.2005, 01:51  
Gast
 
Beiträge: n/a
Standard

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.
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mehrere Arrays unterschiedlicher Größe kombinieren querfisch PHP Tipps 2007 9 31.03.2007 21:34
Session Frage - gleiches Formular 2 mal alle Daten behalten NetLook PHP Tipps 2007 1 21.11.2005 18:42
speicherung der daten bei stromausfall? MrCavity Datenbanken 2 19.11.2005 17:39
ein counter - und berechnungen netti PHP Tipps 2005-2 11 24.10.2005 21:03
Counter - Daten gelöscht - Erklärung?? havok PHP Tipps 2005-2 9 18.10.2005 20:51
[Erledigt] sql daten für einen kunden auslesen/ändern im Formular PHP Tipps 2005-2 3 12.10.2005 08:36
[Erledigt] Daten aus mehreren Tabellen holen Datenbanken 0 19.09.2005 17:14
Daten auslesen und ändern Datenbanken 2 17.09.2005 19:28
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
Daten in Datenbank ändern PHP Tipps 2005 3 27.01.2005 14:40
Viele Daten in die Datenbank eintragen. sunset PHP Tipps 2005 10 11.01.2005 19:32
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05
[Erledigt] Formular mit Daten werden auf anderer Seite zusammengefasst PHP Tipps 2004 4 15.08.2004 15:44
Problem mit einem Counter JeeZ PHP Tipps 2004 6 18.06.2004 13:36
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
fwrite ($fpanhaengen,$useronline, 750);, counter.csv wird immer zurück, counterdaten anpassen in counter.txt, php counter gestern heute, counter datei gelöscht, besucherzähler php \auf anderer seite\, erklärung für foreach php, zeit für eine gültige zählung bei counter?, php csv counter mit ip sperre, counter.csv resettet, $countgueltig, counter erklärung, dateien gelöscht erklährung, aufenthaltszeit für eine gültige zählung counter, erklärung daten gelöscht

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.