Benutzername auf Website anzeigen lassen?
Hallo, ich baue zurzeit ein Intranet auf, mit dem ich meine Mitarbeiter "verwalten" möchte.
Nun habe ich schonmal ein Login System erstellt, dieses funktioniert soweit auch. Nun möchte ich gerne den Benutzernamen der Person die sich angemldet hat auf der Website anzeigen lassen...
Die Datenbank hat zurzeit die Tabelle "accounts" und dort befinden sich Passwort und Benutzername drin.
Ich hoffe auf gute Hilfe von euch, danke schonmal im voraus!
2 Antworten
a) Beim Login kannst du dir, sofern die Anmeldung erfolgreich war, den Nutzernamen in der Session speichern.
<?php
session_start();
/* login ... */
if (loginWasSuccessful) {
$_SESSION['username'] = $username;
/* ... */
Innerhalb des Portals kannst du nun über die Session wieder an den Nutzernamen kommen, um ihn auszugeben.
<?php session_start(); ?>
<!doctype html>
<title>Dashboard</title>
<body>
<h1>Welcome, <?= htmlspecialchars($_SESSION['username']) ?>!</h1>
<!-- ... -->
</body>
Denke dabei daran, Sonderzeichen im Nutzernamen (spätestens vor der Ausgabe) zu maskieren. Egal ob du den Wert in die Session speicherst, der aus der Datenbank kommt oder den aus dem Formular, den der Nutzer geschickt hat. In beiden Fällen handelt es sich um Eingaben von außen, über die eine Injection laufen könnte.
b) Alternativ könntest du dir beim Login auch einen Identifier in der Session speichern (z.B. den Index des Tabelleneintrags, sofern die Datenbanktabelle indexiert ist), mit dem sich der Nutzername in accounts holen lässt.
Je Request brauchst du anschließend eine entsprechende Datenbankabfrage.
Hallo Mikab1276,
weitere Datenbanktabelle "Mitarbeiter" anlegen.
Primärer Schlüssel ist die Mitarbeiternummer
Zusätzlich gibt es noch Vorname, Nachname, Geburtsdatum, Geburtsort
In der Tabelle accounts eine weitere Spalte MA-Nummer. Diese und der primäre Schlüssel der Tabelle Mitarbeiter sind dann entsprechend zu pflegen.
Jetzt kannst du mit passender Datenbankabfrage anhand des Logins den passenden MA-Namen herausfinden und auf der Webseite anzeigen.
Been
Der Fragesteller schreibt, dass er den Benutzernamen ausgeben lassen möchte, den es in der Tabelle accounts schon gibt. Er braucht also keine weitere Tabelle, mit Daten, die für seinen Anwendungsfall erst einmal irrelevant sind.