Navigation bei Login erweitern
Bernd
- php
0 Matthias Apsel0 Bernd
0 Tom0 Bernd0 Vinzenz Mai0 Bernd
0 Vinzenz Mai
Hallo!
Ich habe einen Login gemacht mit MySQL. (Tutorial)
Nun meine Frage, wie kann ich meiner Navigation sagen, sie soll einen bestimmten Menüpunkt nur anzeigen, wenn man eingeloggt ist?
Ich verwende nur PHP Dateien.
Navigation.php
<div class="side-body">
<div class="navigation" id="nav">
<br />
<ul>
<li><a href="index.php" class="side" title="Startseite">Startseite</a></li>
<li><a href="forum.php" class="side" title="Forum">Forum</a></li>
<li><a href="kontakt.php" class="side" title="Kontakt">Kontakt</a></li>
<li><a href="fotoalbum.php" class="side" title="Fotoalbum">Fotoalbum</a></li>
<li><a href="entwickler.php" class="side" title="Die Entwickler">Die Entwickler</a></li>
</ul>
<br />
</div>
</div>
z.B. Ein neuer Menüpunkt, Intern, wie sag ich der Seite sie soll den nur anzeigen, wenn eine Session besteht? Bzw wie prüfe ich, ob eine Session besteht?
<?php
session_start();
?>
<?php
if(!isset($_SESSION["username"]))
{
echo "Bitte erst <a href=\"login.html\">einloggen</a>";
exit;
}
?>
Om nah hoo pez nyeetz, Bernd!
z.B. Ein neuer Menüpunkt, Intern, wie sag ich der Seite sie soll den nur anzeigen, wenn eine Session besteht? Bzw wie prüfe ich, ob eine Session besteht?
In der Login.php beispielsweise so
if ($username == 'Test' && $passwort == '1234') {
$_SESSION['angemeldet'] = true; }
Dann gibst du dem body eine (weitere) Klasse
<body<?php [code lang=php]if ($_SESSION['angemeldet']) {echo " class='angemeldet'"}
?>>[/code]
und verwendest den Nachfahrenselektor.
Matthias
Om nah hoo pez nyeetz, Bernd!
In der Login.php beispielsweise so
if ($username == 'Test' && $passwort == '1234') {
$_SESSION['angemeldet'] = true; }
>
> Dann gibst du dem body eine (weitere) Klasse
>
> `<body<?php [code lang=php]if ($_SESSION['angemeldet']) {echo " class='angemeldet'"}`{:.language-html}?>>[/code]
>
> und verwendest den Nachfahrenselektor.
>
> Matthias
Hallo Matthias!
Danke für deine Antwort.
Werde es mal versuchen, vielen dank.
Liebe grüße,
Bernd
P.S: Was heißt denn das "Om nah.."? :D
Om nah hoo pez nyeetz, Bernd!
und verwendest den Nachfahrenselektor.
Werde es mal versuchen, vielen dank.
Wobei es sicher besser wäre, die unerwünschten Menüpunkte tauchten im Markup garnicht auf, als dass sie nur mit CSS ausgeblendet werden.
Matthias
Hello,
Hallo!
Ich habe einen Login gemacht mit MySQL. (Tutorial)
Mit diesem Script kann man eher schlecht als recht neue Benutzer anlegen.
Es enthält etliche mittlere Fehler und sogar einen groben. Post-Daten dürfen keinesfalls ungeprüft und unabgesichert in ein Query übernommen werden!
Nun meine Frage, wie kann ich meiner Navigation sagen, sie soll einen bestimmten Menüpunkt nur anzeigen, wenn man eingeloggt ist?
Dazu müsstest Du erst einmal eine Zugriffsmechanismus festlegen, also die Kriterien, unter denen ein User überhaupt auf Daten zugreifen darf.
Dann kannst Du im nächsten Schritt Abfragen an die Datenbank stellen, die diese Kriterien berücksichtigen. Die Ergebnisdatensätze kannst Du dann zur Anzeige des Menus verwenden.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Mit diesem Script kann man eher schlecht als recht neue Benutzer anlegen.
Es enthält etliche mittlere Fehler und sogar einen groben. Post-Daten dürfen keinesfalls ungeprüft und unabgesichert in ein Query übernommen werden!
Hallo!
Ist das eine Sichere PHP Funktion?
http://www.tutorials.de/content/499-php-mysql-login-system-mit-sessions.html
Lg
Hallo,
Es enthält etliche mittlere Fehler und sogar einen groben. Post-Daten dürfen keinesfalls ungeprüft und unabgesichert in ein Query übernommen werden!
http://www.tutorials.de/content/499-php-mysql-login-system-mit-sessions.html
Nein. Noch schlimmer! Das Login-Formular arbeitet mit der Methode POST, die Daten werden aber aus $_REQUEST gelesen. Das ist eher dämlich. Aber sie werden genauso ungeprüft und unabgesichert in die Query übernommen. Man benötigt gar kein Passwort, um sich anzumelden - ein geeignet gewählter Benutzername reicht völlig aus, siehe Exploits of a Mom.
Grausames HTML und überflüssiges Google Analytics kommt erschwerend hinzu ...
Freundliche Grüße
Vinzenz
Nein. Noch schlimmer!
[...]
Freundliche GrüßeVinzenz
Hallo!
Kennst du denn ein sicheres Tutorial für sowas? Oder wie soll ich das machen?
Liebe grüße,
Bernd
Hallo,
Ich habe einen Login gemacht mit MySQL. (Tutorial)
Nun meine Frage, wie kann ich meiner Navigation sagen, sie soll einen bestimmten Menüpunkt nur anzeigen, wenn man eingeloggt ist?
Dein Tutorial sagt, dass man eingeloggt ist, wenn das Arrayelement $_SESSION['username'] gesetzt ist. Wenn Deine Navigation den Status wissen muss, dann ist jede Seite mit dieser Navigation eine "geschützte" Seite:
Du musst gleich zu Beginn session_start() aufrufen:
<?php
session_start();
?>
und kannst bei der Navigation gemäß Einlogstatus reagieren:
> [code lang=html]
> <ul class="side">
> <li><a href="index.php" title="Startseite">Startseite</a></li>
> <li><a href="forum.php" title="Forum">Forum</a></li>
> <li><a href="kontakt.php" title="Kontakt">Kontakt</a></li>
> <li><a href="fotoalbum.php" title="Fotoalbum">Fotoalbum</a></li>
> <li><a href="entwickler.php" title="Die Entwickler">Die Entwickler</a></li>
[code lang=php]<?php
// Wenn das Arrayelement $_SESSION['username'] etwas enthält, dann
// ist der Benutzer eingeloggt
// Anmerkung: Der Benutzername "0" ist somit nicht zulässig :-)
if(![link:http://de3.php.net/manual/de/function.empty.php@title=empty]($_SESSION["username"])) {
// zeige den Menüpunkt mit dem internen Bereich an.
echo '[code lang=html]<li><a href="intern.php" title="Intern">Intern</a></li>
~~~', "\n";
}
?>[/code]
> </ul>
> [/code]
überflüssiges Markup hab' ich entfernt wie die Abstand-brrs ...
Beachte [Toms Hinweise](https://forum.selfhtml.org/?t=209193&m=1423403), dass das Tutorial nicht besonders empfehlenswert ist.
Ach übrigens: selbstverständlich musst Du in intern.php den Einlogstatus überprüfen.
Freundliche Grüße
Vinzenz