Userdaten auslesen, komme nicht weiter

Loddar1

Erfahrenes Mitglied
Hi Leute,
Ich möchte Userdaten auslesen, aber immer nur vom eingeloggtem User uas einem Flatfile.
Im Flatfile steht zB:
1|Username|passwort|Name|eMail|
2|Username|passwort|Name|eMail|
3|Username|passwort|Name|eMail|
usw.
Bekomme aber nur den Usernamen hier mal ein auszug:
PHP:
$userdat = "daten.db";
$fp = fopen("$userdat","r");
$lines=file("$userdat");
$newlines = array_reverse($lines);  
$entry = explode ("|", $_SESSION[username]); 
$uid = $entry[0];
$username = $entry[1];
$passw = $entry[2];
$realname = $entry[3];
$email = $entry[4];

echo'Userprofil von '.$_SESSION['username'].' ID: '.$uid.'
Ich möchte erreichen das nur die Zeile komplett ausgelesen wird, wo der Username existiert.
Wie kann ich einen Filter setzen das eine ausgabe erfolgt mit Username zB
Max ID 2
oder
Heinz ID 3

Danke schon mal...
 
Zuletzt bearbeitet:
Warum nicht mit Datenbanken arbeiten?
Datenbanken sind viel schneller und alles ist einfacher zu handeln!
 
Zuletzt bearbeitet:
Eine DB wäre sicher schön - doch geh ich mal davon aus, dass du deine Gründe hast.

du musst den explode() auf die Zeile anwenden, nicht auf den username der Session. Zudem musst du die Zielen auch durchgehen...

PHP:
$userdat = "daten.db";
$lines=file("$userdat");
//Alle Zeilen durchgehen
foreach($lines as $line){
	//Die Infos der Zeile in die Variablen schreiben
	list($uid, $username, $passw, $realname, $email) = explode('|', $line);
	//Prüfen ob der username übereinstimmt
	if($username == $_SESSION['username']){
		//Wenn ja, die Schleife verlassen. Die Variablen bleiben gesetzt		
		break;
	}
}

echo "Userprofil von {$_SESSION['username']} ID: {$uid}.";
 
Du solltest vielleicht eine Klasse mit den Kernfunktionalitäten einer Flatfile-Datenbank implementieren.
Ein Ansatz z.B.:
PHP:
class TFlatfileDB
{
  private $filename;
  public $data;

  public function Load($filename, $fieldDelimiter)
  {
     $this->filename = $filename;
     $this->fieldDelimiter = $fieldDelimiter;
     $this->ReadData();
  }
  public function ReadData()
  {
     $this->data = array();

     $lines=file($this->filename);
     foreach($lines as $line)
     {
       $this->data[] = explode($this->fieldDelimiter, $line);
     }
  }
}

Und um jetzt den aktuellen Benutzer zu suchen:
PHP:
$DB = new TFlatfileDB;
$DB->Load('daten.db');

foreach ( $DB->data as $record )
{
  if ( $record[1] == $_SESSION['username'] )
  {
    // $record enthält alle Informationen des angemeldeten Benutzers
    // ...
    break;
  }
}
 
Zurück