Top-Themen

Aktuelle Themen (A bis Z)

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, 3126 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 ..
Ähnliche Inhalte
Batch & Shell
Text aus einem Textfile auslesen und in Zeile 1 hinein kopieren
Frage von IronangelBatch & Shell2 Kommentare

Hallo zusammen, dies ist mein erster Beitrag. Ich hoffe hier Hilfe zu finden. Ich benötige einen Befehl für ein ...

PHP
Wie in PHP ein array auslesen?
gelöst Frage von JochemPHP5 Kommentare

Moin zusammen, ich versuche, Daten aus einer Datenbank in mehrere arrays (pro DB-Feld ein array) zu schreiben und die ...

Batch & Shell
Batch datei ruft mehrere Sachen aus einer .ini ?
gelöst Frage von corn201Batch & Shell2 Kommentare

Hallo Community. Ich wollte fragen, wie ich in einer Batch-Datei sagen kann, das sie in einer Initsialiersierungsdatei (.ini) Mehrere ...

PHP
PHP Script zum Daten auslesen gesucht
Frage von majas3PHP2 Kommentare

Hallo, ich habe viele taußend HTML Seiten in verschiedenen Verzeichnissen und bin auf der Suche nach einem PHP Script ...

Neue Wissensbeiträge
Microsoft

Update KB4073578 für AMD CPU (Spectre und Meltdown Lücke)

Information von sabines vor 2 StundenMicrosoft

Wegen Problemen (BOSD, nicht startende PCs) wurde das Update KB4056897 und KB4056894 für AMD CPUs zurückgezogen. Dieses Update KB4073578 ...

Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 14 StundenMac OS X1 Kommentar

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Datenschutz

Weitere Informationen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 21 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 23 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1018 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...