[GELÖST]Eingeloggter User soll nur bestimmte Seiten sehen..
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
art
aufrufen
code
dank
datum
definieren
ergebnis
frage
funktion
header
index
jemand
login
nutzer
schreibfehler
session
tabelle
teddy
url
-
Huhuuu.. Ich hab eine Login-Funktion, die inzwischen gut funktioniert.. Nun soll der User aber, wenn er eingeloggt ist nur noch eine andere Seite sehen, z.B. 'Gäste' sehen nur 'index.php' und eingeloggte sehen 'index2.php'
Benutze daweil Session-ID's...
Hat jemand nützliche Tipps und / oder Tuts zu dem Thema?
PS: Brauche keine fertige Scripts oder so, da lern ich ja net draus, will mir das selbst beibringen! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ich versteh dein problem nicht ganz ...
session_start(); if (isset($_SESSION["login_state"]) && $_SESSION["login_state"] == "login successful") { header("Location: index2.php"); } [...]
in der index2.php baust du dann noch so etwas hier in der art ein:
session_start(); if (!isset($_SESSION["login_state"] || $_SESSION["login_state"] != "login successful") { header("Location: index.php"); } [...]
die funktionen sind eigentlich selbsterklärend und sollten dir auch (sorry trotz code) so etwas bei bringen ;)
grüße
Doomdrake
Beitrag zuletzt geändert: 11.6.2011 0:44:47 von heroes-of-legends -
Den Login State muss ich doch vorher noch definieren, ist das richtig? Wenn ja wie mache ich das?
Ich denk mir das grad so:
- Session wird gestartet
- Überprüfung des Login-Status
- Wenn erfolgreich -> Weiterleitung
Meine Überlegung ist jetzt -> Woher weiß 'der' was 'login_state' ist?
Muss ich dem ja irgendwie übermitteln (hab auch eine login.php), denn es funktioniert ja so nicht (gerade getestet)
PS: Danke für deine Mühe bisher!
So meine Frage noch zusätzlich:
beim ersten steht nur 'if (isset...'
beim zweiten steht 'if (!isset...'
ist das eine Art überprüfung oder einfach nur n Schreibfehler oder so?
-
kill-a-teddy schrieb:
beim ersten steht nur 'if (isset...'
beim zweiten steht 'if (!isset...'
ist das eine Art überprüfung oder einfach nur n Schreibfehler oder so?
Du meinst das Ausrufezeichen?
Das ist eine negierung, also if NOT
$var =4; if($var!=4) echo "$var ist NICHT 4"; if($var==4) echo "$var ist gleich 4";
-
Wenn du bereits ein Login-Script hast sollte das etwa so ähnlich funktionieren:
<?php session_start(); if (!isset($_POST["login"]) { ?> <html><head><title>Login Page</title></head> <body> <form action="login.php" method="post"> <input type="hidden" name="login" value="true" /> <input type="text" name="login_name" /> <input type="password" name="login_pass" /> <input type="submit" /> </form> </body></html> <?php } else { if ($_POST["login_name"] != "GültigerLoginName" || $_POST["login_pass"] != "GültigesPasswort") { echo "Ungültiger Login, bitte überprüfe Benutzer und Passwort"; } else { $_SESSION["login_state"] = "login successful"; header("Location: index2.php"); } } ?>
$_SESSION ist ein System Array, welches für jeden nutzer einzigartig ist. D.h. die Daten eines Nutzers stehen bei anderen nicht zur verfügung. Um eine Session zu starten musst du session_start(); aufrufen. Diese Initialisiert die Session für den Nutzer.
Um die Daten zu Löschen (zum beispiel bei einem LogOut) gibt es die session_destroy(); methode.
grüße
Doomdrake -
Okay cool, funktioniert soweit und ich hab auch rausgefunden, wie ich die Session ID auslesen kann...
Ich hab jetzt eine xid definiert, welche mein Session ID ist, die ich auch im Link anzeigen kann...
<?php // meine Verbindung zur Datenbank include("dbconnect.php"); ?> <?php session_start(); $username = $_POST["username"]; $passwort = md5($_POST["password"]); // login heißt meine Tabelle und die xid ist definiert als session_id $abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1"; $ergebnis = mysql_query($abfrage); $row = mysql_fetch_object($ergebnis); $xid = session_id();
Sooo nun will ich folgendes ->
Der Rechner soll überprüfen, ob derzeit eine gültige XID besteht und wenn ja dann soll der Nutzer weitergeleitet werden, andernfalls bleibt einfach alles so wie's ist auf der index.php
<?php session_start(); if (!isset($_SESSION['username']) || !$_SESSION['username']) { header('Location: http://www.kill-a-teddy.lima-city.de/index2.php'); exit; } ?>
Das funktioniert natürlich nicht... ^^ Kann mir das jemand erklären?
Vielleicht sogar mit meiner xid ^^
PS: Tut wäre immernoch besser, komm mir total doof vor dauernd nach Codeschnipseln zu fragen xD
Beitrag zuletzt geändert: 11.6.2011 15:58:52 von kill-a-teddy -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage