Frage von lordTobiHD, 34

In PHP Text Abfrage aus einer Text datei machen?

Hallo Community,

Ich habe eine Frage zu PHP. Ich bin zwar nicht mehr neu aber noch nicht sooo gut in PHP.

Meine Frage ist Folgendes:

Ich habe ein paar User in einer .txt Datei auf meinem Server liegen. Im selben verzeichnis wie die index.php. Nun möchte ich gerne dass wenn man auf die index.php Datei geht, diese Automatisch abfragt ob in der User.txt ein User namens Max Mustermann ist.

Wenn es so ist dann soll was ausgegeben werden also z.b echo "Max Mustermann ist vorhanden".

Geht das? Wenn ja wie.

LG lordTobiHD / Tobi Vielen Dank schonmal im Vorraus!

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Nenkrich, 24

In PHP werden normalerweise SQL Tabelle benutzt. Ich empfehle dir dort ein paar Tutorials anzuschauen wenn dein Server dazu in der Lage ist. Es ist zwar am Anfang etwas mehr Arbeit aber dadurch hättest du auch den Vorteil du könntest alles einfacher erweitern :) ausserdem ist ja auch iwi professioneller

Kommentar von lordTobiHD ,

Danke. Mit Mysql hab ich schon paar sachen gemacht. Habe einen VServer mit Debain 8. Ich werde mal schauen. Ich denke ich mache es mit SELECT.

Vielen Dank für die Schnelle Antwort.

LG lordTobiHD

Kommentar von Nenkrich ,

Klingt doch gut. Spätestens wenn du dem Usernamen mehrere werte zuteilen willst (echter name, beitrittsdatum, b-day, errungenschaften, in Foren abbonierte links/beiträge) wäre es mit ner TXT für alles kompliziert geworden

Antwort
von mastema666, 15

Kommt drauf an, wie die User in der Textdatei stehen, wenn sie z.B. jeder in einer Zeile stehen, könntest du das einfach in etwa so machen: 

<?php
$data = file('user.txt');
if (in_array($username, $data)) {
echo $username .' ist vorhanden';
}

Allerdings ist so eine Textdatei natürlich relativ unsicher, da jeder sie einsehen kann, der den Dateinamen kennt (oder errät), daher würde ich die Usernamen eher in einer Datenbank (MySQL / MariaDB, Postgre, SQLite) speichern.

Kommentar von lordTobiHD ,

OK. Vielen Dank! Ich denke das werde ich machen.

Antwort
von AnonYmus19941, 17

In zwei Zeilen:

$datei = file_get_contents('users.txt');
$users=explode("\r\n",$datei);

Das liest die Datei ein und teilt sie dann an den Zeilenumbrüchen (Achtung: unterscheidet sich je nach Betriebssystem; s. https://de.wikipedia.org/wiki/Zeilenumbruch#ASCII ). Dann hast du ein Array mit Benutzern, die du dann einfach mit Schleife und if-Abfrage der Reihe nach überprüfen kannst.

Eine Anleitung dazu findest du auch auf http://www.php-kurs.com/dateien-mit-php-bearbeiten-und-besucherzaehler.htm und auf http://www.php-einfach.de/php-tutorial/php-datei/ .

Kommentar von AnonYmus19941 ,

(oder mit array_search(); s. GanMar)

Antwort
von kuechentiger, 6
$zeilen = file_get_contents('users3.html'); 
if (strpos($zeilen, $username)==FALSE){
echo 'Neu hier?';
} else {
echo 'Willkommen zurück '.$username;
}
Antwort
von surbahar53, 17

PHP erlaubt das Öffnen / Lesen / Schliessen von Dateien über fopen() fclose() fread() usw. Der Inhalt der Datei kann zeilenweise oder blockweise gelesen und auf bestimmte Stringpatterns getestet werden. Also kein Problem.

Kommentar von lordTobiHD ,

Ich denke ich werde wegen der Sicherheit eher mit MySQL arbeiten. Aber vielen Dank!

Antwort
von GanMar, 19

http://php.net/manual/de/function.array-search.php

Jetzt mußt Du nur noch die Funktion finden, die die Textdatei als Array einliest ;)

Kommentar von lordTobiHD ,

Habs aktuell so:

Das Funktoniert aber nicht wahrscheinlich wegen dem $username.

[$username wird vorher Festgelegt]

$zeilen=file("users3.html"); // file( ) liefert dir die Zeilen schon in einem Array .. 
$ausgabe=array();
foreach($zeilen as $zeile) {
if (strpos($zeile, 'Name: ' .$username.'')!==FALSE) // FALSE hieße nicht gefunden
echo "Neu hier?";
}

for($i=0;$i<count($ausgabe);$i++)
echo "Willkommen zur&uumlck";
Antwort
von ramiro15, 6

Noch einfacher kannst du eine Datei mit file_get_contents auslesen.
http://php.net/file\_get\_contents

$inhalt = file_get_contents('pfad_zur_datei');

Dann den Inhalt noch in ein Array packen:
$array = explode("\n", $inhalt);

Jetzt kannst du nach belieben spielen :-)


Keine passende Antwort gefunden?

Fragen Sie die Community