Frage ist gelöstPHP Mehrere Sachen aus Textfile auslesen
18.01.2012
14:13:10 Uhr498 Aufrufe
11 Antworten
14:13:10 Uhr
11 Antworten
Noch nicht bewertet
Hoied
ich logge drei sachen beim login. das schreiben funktioniert auch bestens. der ordner wo geschrieben wird, hat chmod 777
falls sich der user 4x eingeloggt hat, steht im textfile folgendes (beispiel):
gibt es da ideen wie ich das wieder auslesen kann und anhand des | sortieren kann ? oder dumm von mir den trenner | zu nehmen ? muesste ich mit explode arbeiten ?
kenne mich im handling von txt files noch nicht so aus.
thanx fuer alle tipps
ich logge drei sachen beim login. das schreiben funktioniert auch bestens. der ordner wo geschrieben wird, hat chmod 777
01.
// holen der ip adresse 02.
if (!isset($_SERVER['HTTP_X_FORWARDED_FOR'])) 03.
{ 04.
$client_ip = $_SERVER['REMOTE_ADDR']; 05.
} 06.
else 07.
{ 08.
$client_ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 09.
} 10.
11.
// unixtime 12.
$now = time(); 13.
14.
// daten definieren 15.
$text = "". $id . " | " . $client_ip . " | " . $now . " | " ."\n"; 16.
17.
// namen der textdatei definieren, in dem falle die user id 18.
$dateiname = "meinORDNER/" . $id . ".txt"; 19.
20.
// datei zum schreiben öffnen, falls nicht vorhanden, datei erstellen 21.
$handler = fOpen($dateiname , "a+"); 22.
fWrite($handler , $text); 23.
fClose($handler); // Datei schließenfalls sich der user 4x eingeloggt hat, steht im textfile folgendes (beispiel):
3453 | 66.66.66.66 | 1326890811 | 3453 | 66.66.66.66 | 1326892222 | 3453 | 66.66.66.66 | 1326893333 | 3453 | 66.66.66.66 | 132689444 |kenne mich im handling von txt files noch nicht so aus.
thanx fuer alle tipps
dark3zz schreibt am 18.01.2012 um 15:37:42 Uhr
Hoi
Also ich kriegs noch nicht ganz hin das ich alle zeillen auslesen kann. das was ich habe zeigt mir nur die erste zeile an und wiederholt sich.....
kapier das irgendwie nicht ganz.....
Also ich kriegs noch nicht ganz hin das ich alle zeillen auslesen kann. das was ich habe zeigt mir nur die erste zeile an und wiederholt sich.....
kapier das irgendwie nicht ganz.....
01.
$datei = "../../pfad_zu_den_txt_files/" . $row[id] .".txt"; // Name der Datei 02.
$daten = file_get_contents($datei); 03.
$datenArray = explode("|",$daten); 04.
05.
06.
if (file_exists($datei)) 07.
{ 08.
$array = file($datei); // Datei in ein Array einlesen 09.
10.
foreach ($array as $element) 11.
{ 12.
$loginTime = strftime("%A, %H:%M - %e. %B %Y",$datenArray[2]); //erstellt uhrzeit 13.
echo "userID: $datenArray[0]<br>"; 14.
echo "IP: $datenArray[1]<br>"; 15.
echo "Loginzeit: $loginTime<hr>"; 16.
} 17.
} 18.
else 19.
{ 20.
echo "Noch keine Logindaten gespeichert"; 21.
}
Arano schreibt am 18.01.2012 um 16:12:31 Uhr
Tagchen,
Die Zeilen 2 und 3 kannste schon mal getrost raus löschen, die werden nicht benötigt !
Das ist mir echt ein Rätsel wie wie du dir die Verbindung zur foreach-Schleife gedacht hast
Vielleicht hilft es dir so ja ein bisschen besser das zu verstehen
"Sprechende Variabelnamen"
Okay, vielleicht habe ich das nun auch ein bisschen übertrieben aber es soll ja uch nur verdeutlichen was wie passiert ;)
Achso ja, jetzt hätte ich es beinahe veressen !
Ich habe je nun zweimal Gebrauch von print_r() gemacht, sehr nützlich um sich Variableninhalten (besonders Array) anzusehen
PHP-Manual - print_r()
~Arano
Die Zeilen 2 und 3 kannste schon mal getrost raus löschen, die werden nicht benötigt !
Das ist mir echt ein Rätsel wie wie du dir die Verbindung zur foreach-Schleife gedacht hast
Vielleicht hilft es dir so ja ein bisschen besser das zu verstehen
01.
<?php 02.
// ... 03.
$arrZeilenDerDatei = file("PFAD_ZUR_DATEI"); 04.
05.
foreach($arrZeilenDerDatei as $strEineZeileDerDatei) 06.
{ 07.
// $strEineZeileDerDatei = "3453 | 66.66.66.66 | 1326890811 "; 08.
$arrSpaltenDerZeile = explode(" | ", $strEineZeileDerDatei); 09.
print_r($arrSpaltenDerZeile); 10.
} 11.
// ... 12.
?>Okay, vielleicht habe ich das nun auch ein bisschen übertrieben aber es soll ja uch nur verdeutlichen was wie passiert ;)
01.
<?php 02.
$arrLogfile = file("PFAD_ZUR_DATEI"); 03.
foreach($arrLogfile as $strLog) 04.
{ 05.
$arrLog = explode(" | ", $strLog); 06.
print_r($arrLog); 07.
} 08.
?>Achso ja, jetzt hätte ich es beinahe veressen !
Ich habe je nun zweimal Gebrauch von print_r() gemacht, sehr nützlich um sich Variableninhalten (besonders Array) anzusehen
PHP-Manual - print_r()
~Arano
dark3zz schreibt am 18.01.2012 um 16:33:43 Uhr
wow! danke fuer eure inputs, vorallem an Arano (schon wieder)
Schlichter und einfacher als gedacht.......Ja die $element Variable ist noch von der PHP Seite, vom Beispiel
Euer Input hat mir geholfen! Ich denke die Array Funktion muss ich noch hundert mal machen um da Sattelfest zu werden
Habe nun Aranos Beispiel genutzt und fuer meine Zwecke angepasst.....Das ist Super!
Herzlichen Dank !
PS: Die ID gebe ich nicht mehr aus, resp in dem Fall hier.....Andernorts machts natürlich wieder Sinn, resp wandelt man wieder in den Usernamen um als bsp...
Schlichter und einfacher als gedacht.......Ja die $element Variable ist noch von der PHP Seite, vom Beispiel
Euer Input hat mir geholfen! Ich denke die Array Funktion muss ich noch hundert mal machen um da Sattelfest zu werden
Habe nun Aranos Beispiel genutzt und fuer meine Zwecke angepasst.....Das ist Super!
Herzlichen Dank !
01.
<?php 02.
$logfile = file("../../PFAD_zum_text_file/" . $row[id] .".txt"); // pfad und name der logdatei 03.
04.
foreach($logfile as $logzeile) 05.
{ 06.
$ausgabe = explode(" | ", $logzeile); // schnippi schnappi 07.
$loginTime = strftime("%A %e. %B %Y - %H:%M",$ausgabe[2]); // loginzeit formatieren 08.
09.
echo "<b>$loginTime</b><br>"; // ausgabe vom formatierten datum 10.
echo "IP: $ausgabe[1]<hr>"; // ausgabe der IP adresse 11.
} 12.
?>
Arano schreibt am 18.01.2012 um 17:06:15 Uhr
Hi,
auch das ist kein Problem. PHP bietet jede menge Funktionen an mit denen man ein Array bearbeiten kann: PHP-Manuals - Arrays
Dein Zauberwort heißt: "umgekehrt" -> zu Englisch -> "reverse"
~Arano
auch das ist kein Problem. PHP bietet jede menge Funktionen an mit denen man ein Array bearbeiten kann: PHP-Manuals - Arrays
Dein Zauberwort heißt: "umgekehrt" -> zu Englisch -> "reverse"
~Arano
Arano schreibt am 18.01.2012 um 17:18:32 Uhr
Nee, das ist nicht ganz richtig !
Allerdings dachte ich auch erst an rsort()
Die "sort"-Funktionen sortieren ja auch gleichzeitig !
Am Anfang jeder Zeile steht die ID die immer gleich ist. Aber dann kommt die IP !!!!
So würden die "sort"-Funktionen zuerst nach dem erstem IP-Block sortieren, dann nach dem 2., dem 3. und schließlich dem 4. und erst daaan nach dem Timestamp.
Das würde uns eine Sortierung nach der IP-Adresse bescheren bei der es erst bei doppelten Einträgen zu einer Zeitlichen Sortierung kommt.
Oder kurz gesagt, alles würde total Durcheinander geraten.
Wir brauchen also eine Funktion die lediglich die Reihenfolge umdreht/umkehrt->reverse OHNE neu zu sortieren.
wäre ja auch beinahe drauf reingefallen
~Arano
Edit
Jetzt habe ich vergessen meinen schnellen Testcode beizufügen... -.-
Allerdings dachte ich auch erst an rsort()
Die "sort"-Funktionen sortieren ja auch gleichzeitig !
Am Anfang jeder Zeile steht die ID die immer gleich ist. Aber dann kommt die IP !!!!
So würden die "sort"-Funktionen zuerst nach dem erstem IP-Block sortieren, dann nach dem 2., dem 3. und schließlich dem 4. und erst daaan nach dem Timestamp.
Das würde uns eine Sortierung nach der IP-Adresse bescheren bei der es erst bei doppelten Einträgen zu einer Zeitlichen Sortierung kommt.
Oder kurz gesagt, alles würde total Durcheinander geraten.
Wir brauchen also eine Funktion die lediglich die Reihenfolge umdreht/umkehrt->reverse OHNE neu zu sortieren.
wäre ja auch beinahe drauf reingefallen
~Arano
Edit
Jetzt habe ich vergessen meinen schnellen Testcode beizufügen... -.-
01.
<?php 02.
$arr = array("aa|1","cc|2","bb|3"); 03.
print_r($arr); 04.
// Array 05.
// ( 06.
// [0] => aa|1 07.
// [1] => cc|2 08.
// [2] => bb|3 09.
// ) 10.
11.
$arr = array("aa|1","cc|2","bb|3"); 12.
arsort($arr); 13.
print_r($arr); 14.
// Array 15.
// ( 16.
// [1] => cc|2 17.
// [2] => bb|3 18.
// [0] => aa|1 19.
// ) 20.
21.
$arr = array("aa|1","cc|2","bb|3"); 22.
$arr = array_reverse($arr); 23.
print_r($arr); 24.
// Array 25.
// ( 26.
// [0] => bb|3 27.
// [1] => cc|2 28.
// [2] => aa|1 29.
// ) 30.
?>









