Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PHP Mehrere Sachen aus Textfile auslesen

Frage Entwicklung PHP

Mitglied: dark3zz

dark3zz (Level 1) - Jetzt verbinden

18.01.2012, aktualisiert 16:35 Uhr, 3093 Aufrufe, 11 Kommentare

Hoied

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ßen
falls 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 |
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
Mitglied: godlie
18.01.2012 um 15:26 Uhr
Hallo,
dein Verdacht auf explode ist genau richtig.

Datei aufmachen Zeile auslesen schaun ob was drinsteht in der Zeile wenn ja dann exploden und aus dem array die benötigten daten rausholen.

grüße
Bitte warten ..
Mitglied: dark3zz
18.01.2012 um 15:37 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.....

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.
        }  
Bitte warten ..
Mitglied: godlie
18.01.2012 um 15:43 Uhr
Hallo,

du machst einen Fehler und zwar splittest du im datenArray den gesamten Inhaltsstring.
In deiner Foreach bekommst du ja die Zeilen häppchenweise vorgelegt.
einfach ein explode auf $element und dann das array auswerten.
Bitte warten ..
Mitglied: Arano
18.01.2012 um 16:12 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
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.
?>
"Sprechende Variabelnamen"
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
Bitte warten ..
Mitglied: dark3zz
18.01.2012 um 16:33 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 !

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.
?>
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...
Bitte warten ..
Mitglied: dark3zz
18.01.2012 um 16:58 Uhr
Humm, jetzt habe ich doch noch was vergessen:

Die Daten sind ja nun nach ASC geordnet, weil die neuste Zeille immer unten angefügt wird.

Gibt es da einen Trick wie ich die Ausgabe nun umkehre ? Inneerhalb meines Arrays wohl schon ?
Bitte warten ..
Mitglied: Arano
18.01.2012 um 17:06 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
Bitte warten ..
Mitglied: godlie
18.01.2012 um 17:06 Uhr
Hallo,

arsort auf $logfile anwenden.

grüße
Bitte warten ..
Mitglied: Arano
18.01.2012 um 17:18 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... -.-
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.
?>
Bitte warten ..
Mitglied: godlie
18.01.2012 um 17:56 Uhr
Ah das kommt davon wenn man nebenbei was Programmiert..

Stimmt natürlich da es sich ja nicht um ein assoziatives array handelt hast natürlich mit arsort schlechte Karten.
Danke für die Gedächtnisstütze.

grüße
Bitte warten ..
Mitglied: Arano
18.01.2012 um 18:02 Uhr
HAHA...

kein Problem !
Wie gesagt, mir wäre ja beinahe der gleiche Fehler unterlaufen... muss am Programmieren liegen *fg*

~Arano
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (24)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Erkennung und -Abwehr
Spam mit eigener Domain (12)

Frage von NoobOne zum Thema Erkennung und -Abwehr ...