| Array in Datei schreiben | 
	
| languitar 
 Foren-TeamThreadstarter
 
 
 
 
 
 Beiträge: 2795 | 
 
Ich versuch mich mal wieder an nem simplen Textcounter mit IP sperre und wollte das jetzt so realisieren, dass ich in einem Array 'datum' => heute und dann die ganzen heutigen IPs schreibe. Das ganze wollte ich dann in ner Textdatei speichern und bei jedem aufruf des Counters erstmal überprüfen, ob das Datum gleich ist, sont wird das array gelöscht oder ansonsten die IPs überprüfen.Ich hab aber momentan das Problem, dass wenn ich das Array in ner Date speichern will da immer nur "Array" steht und nicht der Inhalt. Wie mach ich das denn???
 
 Gruß
 Johannes
 
 | 
|  Profil
  Editieren
  Zitieren | 
| Can 
 Halbgott 
 
 
 
 Beiträge: 1324 | 
 
Wenn es ein normales index-orientieres Array ist, musst du es in einer Schleife durchgehen und jedes Element speichern:
 $file=fopen("datei.txt","w");
 for ($idx=0;$idx
  fputs($file,$array . "n");
 fclose($file);
 
 Das Lesen ist erheblich einfacher:
 
 $array=file("datei.txt");
 
 ---
 "S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox
 
 | 
|  Profil
  E-Mail
  Editieren
  Zitieren | 
| languitar 
 Foren-TeamThreadstarter
 
 
 
 
 
 Beiträge: 2795 | 
 
danke, genau das brauchte ich 
 | 
|  Profil
  Editieren
  Zitieren | 
| languitar 
 Foren-TeamThreadstarter
 
 
 
 
 
 Beiträge: 2795 | 
 
son mist, ich benutze folgenden code und in der datei steht dann nur:Array
 Array
 
 Code:
 /*--Beziehen der IP des Besuchers--*/
 $ip = getenv("REMOTE_ADDR");
 
 /*--Beziehen des aktuellen Datums--*/
 $date = date("d.m.Y");
 
 $log = array();
 $log[] = $date;
 $log[] = $ip;
 print_r($log);
 
 $datei = fopen("ip.txt","w");
 for ($idx=0;$idx
fputs($datei,$log . "n");
 fclose($datei);
 
 | 
|  Profil
  Editieren
  Zitieren | 
| c3o 
 Posting-Schinder 
 
 
 
 Beiträge: 585 | 
 
Du musstfputs($datei,$log . "n");
 durch
 fputs($datei,$log[$idx] . "n");
 ersetzen.
 
 Eine einfachere Möglichkeit, die das Array in nur einer Zeile speichert (und wohl auch mit multidimensionalen Arrays, Hashes usw funktioniert), wäre aber das:
 
 $datei = fopen("ip.txt","w");
 fputs($datei,serialize($log));
 fclose($datei);
 
 und zum Lesen:
 
 $inhalt = unserialize(implode('', file('ip.txt')));
 
 
 | 
|  Profil
  E-Mail
  Website
  Editieren
  Zitieren | 
| Can 
 Halbgott 
 
 
 
 Beiträge: 1324 | 
 
*mich-schäme-und-für-den-restlichen-abend-im-boden-versink*
 ---
 "S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox
 
 | 
|  Profil
  E-Mail
  Editieren
  Zitieren | 
| languitar 
 Foren-TeamThreadstarter
 
 
 
 
 
 Beiträge: 2795 | 
 
danke, habs auf jedenfall jez schon etwas weiter, dafür kommen jez die nächsten probleme. der Code ist jetzt (völlig unformatiert) dieser:
 /*--Beziehen der IP des Besuchers--*/
 $ip = getenv("REMOTE_ADDR");
 
 /*--Beziehen des aktuellen Datums--*/
 $date = date("d.m.Y");
 
 /*--Beziehen des aktuellen Counterstandes aus Datei--*/
 $counter = file_get_contents("stand.txt");
 echo "$counter";
 
 /*$log = array();
 $log[] = $date;
 $log[] = $ip;*/
 
 /*$datei = fopen("ip.txt","w");
 for ($idx=0;$idx
fputs($datei,$log[$idx] . "n");
 fclose($datei);*/
 
 /*--ip.txt zum Vergleich in Array &log lesen--*/
 $log = file("ip.txt");
 if ($log[0] = $date) {
 /*--Wenn Datum gleich, dann suchen ob IP vorhanden--*/
 foreach ($log as $value) if ($value = $ip) $vorhanden = 1;
 //echo "$vorhanden
 ";
 /*--Wenn die IP nicht vorhanden ist, wird der Counter um 1 erhöht und die IP geschpeichert--*/
 if ($vorhanden = 1) {
 $log[] = $ip;
 print_r($log);
 $counter++;
 $datei = fopen("stand.txt","w");   //Counterstand speichern
 fputs($datei,$counter);
 fclose($datei);
 $datei = fopen("ip.txt","wb");      //IPs speichern
 foreach ($log as $value)
 fputs($datei,$value . "n");
 fclose($datei);
 };
 };
 
 Das erste Problem ist, dass er mir die Variable $vorhanden nicht auf 1 setzt, obwohl die IP in dem Array vorhanden ist. Desswegen hab ich auch zum weiteren Test die nächste IF-Abfrage auch falschrum gesetzt. musst jetzt ncht beachtet werden.
 Da ist aber das problem, wenn ich die Seite mehrmals aktualisiere sieht das arra plötzlich so aus:
 
 Array ( [0] => 18.01.2003 [1] => 127.0.0.1 [2] => [3] => [4] => [5] => 127.0.0.1 [6] => [7] => 127.0.0.1 [8] => 127.0.0.1 )
 
 Der bastelt mir in der Datei ip.txt also unmengen leerzeilen rein und ich weiß nicht wieso. Zum testen musst du die beiden Dateien ip.txt und stand.txt gerade anlegen.
 Und was ich auch nicht verstehe: Wieso steht im ersten Schlüssel des Arrays immer das Datum. das hab ich doch gar nicht angegeben, dass er das machen soll. steht doch nur als Kommentar da.
 
 Gruß
 Johannes
 
 | 
|  Profil
  Editieren
  Zitieren | 
| languitar 
 Foren-TeamThreadstarter
 
 
 
 
 
 Beiträge: 2795 | 
 
hab jetzt glaube ich mein Problem gefunden, weiß aber nicht, wie ich das ändern kann.Zum einen hab ich ein "=" in den Abfragen vergessen. Das größere Problem ist aber, dass ich mit jedem Zeilenumbruch in der datei ip.txt im array (also wenn ich das neu reinlade) ein Leerzeichen hinter meinen Wert bekomme
 Wie kann ich das denn ändern?
 
 | 
|  Profil
  Editieren
  Zitieren | 
| c3o 
 Posting-Schinder 
 
 
 
 Beiträge: 585 | 
 
Das kommt wohl davon, dass die Elemente des Arrays nach dem Auslesen mit file() jeweils am Ende noch einen Zeilenumbruch n haben. Beim neu speichern hängst du den aber nochmal an -> Leerzeilen dazwischen.Den müsstest du rausfiltern { $log[$i] = str_replace("n", ', $log[$i]) } oder du nimmst die Methode die ich früher gepostet hab, wo du dich mit Zeilenumbrüchen nicht auseinanderschlagen musst weils in einer einzigen Zeile gespeichert wird.
 
 | 
|  Profil
  E-Mail
  Website
  Editieren
  Zitieren | 
| languitar 
 Foren-TeamThreadstarter
 
 
 
 
 
 Beiträge: 2795 | 
 
habs inzwischen alle s gelößt, nur mit tripod zusammen läuft das leider nicht... 
 | 
|  Profil
  Editieren
  Zitieren | 
| c3o 
 Posting-Schinder 
 
 
 
 Beiträge: 585 | 
 
Wieso denn nicht?
 [Übrigens amüsiere ich mich gerade über meine Wortschöpfung "auseinanderschlagen".. "herumsetzen" wär auch ganz nett]
 
 | 
|  Profil
  E-Mail
  Website
  Editieren
  Zitieren | 
| languitar 
 Foren-TeamThreadstarter
 
 
 
 
 
 Beiträge: 2795 | 
 
Hab mit FTP schon mmächtig Probleme meine Dateien hochzubekommen. Die kommen ständig leer an und das gleich scheint auch mit dem fputs zu passieren. Der Counter fängt immer mal wieder bei 0 an zu zählen... 
 | 
|  Profil
  Editieren
  Zitieren |