Session Probleme

Hallöle :smile:

Ich wollte mir was kleines mit den Session’s basteln, aber irgendwie hänge ich da. :S

Man kann sich einloggen und ausloggen, aber wenn man dann wieder auf die Datei zugreift, dort wo er die Session überprüft, wird sie trotzdem angezeigt. Nun weiss ich nicht wie weiter. :frowning:

Es wäre schön, wenn mir einer helfen würde.

Login.php

<?PHP include '_include/nav.php'; ?>

Login:

Password:

_admin/enter.php

<?PHP @session_start();
include("\_conf/config.php"); $connectionid = mysql\_connect($mysqlhost, $mysqluser, $mysqlpass); if (!mysql\_select\_db ($database, $connectionid)) { die ("Keine Verbindung zur Datenbank"); } $sql = "SELECT ". "id, user\_name ". "FROM ". "admin ". "WHERE ". "(user\_name like '".$\_REQUEST["name"]."') AND ". "(pwd = '".md5 ($\_REQUEST["pw"])."')"; $result = mysql\_query ($sql); if (mysql\_num\_rows ($result) \> 0) { $data = mysql\_fetch\_array ($result); $\_SESSION["user\_id"] = $data["id"]; $\_SESSION["user\_nickname"] = $data["user\_name"]; header ("Location: main.php"); } else { header ("Location: fehler.php?fehler=1"); } ?\> **\_admin/main.php** <?PHP include 'checkuser.php'; ?><?PHP include '_include/nav.php'; ?>

Admin Home
_admin/fehler.php

<?PHP include '_include/nav.php'; ?> <?PHP if (isset ($_REQUEST["fehler"]))
{ echo "**Die Zugangsdaten waren ungültig!! [zurück zum Login](../login.php) \_admin/checkuser.php <?PHP @session_start ();
if (!isset ($\_SESSION["user\_id"])) { header ("Location: main.php"); } ?\>\_admin/\_conf/config.php <?php //###### SQL Zugangsdaten
$mysqlhost = "localhost"; //Name des Hosters $database = "DATENBANK"; //Name der Datenbank $mysqluser = "BENUTZERNAME"; //Benutzername $mysqlpass = "PASSWORT"; //Passwort ?\> Ich hoffe, dass das reicht. :smile:**

Also, ich fasse mal zusammen. Wenn du _admin/main.php aufrufst, wird checkuser.php eingebunden. In dieser wird überprüft, ob eine bestimmte Session-Variable gesetzt ist. Wenn nicht, wird wieder auf main.php weitergeleitet …

Von main.php auf main.php zu leiten, macht wohl keinen Sinn. Was hattest du vor?

Und, ach ja - wo ist denn der Code zum ausloggen?

Dann wundert mich da noch was in der enter.php. Wie kommt es, dass du nach session_start() noch Header setzen kannst? Die Header dürften mit dem Aufruf von session_start() schon abgeschickt werden …

main.php = ist die normale seite ausem frame
_admin/main.php = ist die admin main

oder wie meinst du das genau?!? :S
sorry, in sachen Session bin ich noch ein völliger noob :S

mfg SiMpLy

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Und, ach ja - wo ist denn der Code zum ausloggen?

den hab ich ned, weil ich ned weiss, wie man der genau macht :frowning:

Dann wundert mich da noch was in der enter.php. Wie kommt es,
dass du nach session_start() noch Header setzen kannst? Die
Header dürften mit dem Aufruf von session_start() schon
abgeschickt werden …

sonst hatt es nicht funktioniert… :S

mfg SiMpLy

achja, das logout hab ich in der nav.php und wird per <?PHP include '_include/nav.php'; ?> included

In deiner main.php steht durch Inkludierung von enter.php header(„Location: main.php“), das ist dann eine Weiterleitung von main.php auf sich selbst!

Mach beim Logout einfach ein session_destroy(), dann wird auch das $_SESSION-Array invalidated.

Mach beim Logout einfach ein session_destroy(), dann wird auch
das $_SESSION-Array invalidated.

okey, und wie mach ich dann das, das er auf die untere „…/main.php“ seite geht? :S

mfg SiMpLy

ps.: langsam peil ich das ganze, aber noch ned wirklich. man lernt ja immer wieder was neues. *hehe*

In deiner main.php steht durch Inkludierung von enter.php
header(„Location: main.php“), das ist dann eine Weiterleitung
von main.php auf sich selbst!

die enter.php befindet sich nun im HTML ordner, also im stammordner und nicht mehr im _admin ordner.

und so hab ich das nun geändert:

<?PHP session_start();
include("\_admin/\_conf/config.php"); $connectionid = mysql\_connect($mysqlhost, $mysqluser, $mysqlpass); if (!mysql\_select\_db ($database, $connectionid)) { die ("Keine Verbindung zur Datenbank"); } $sql = "SELECT ". "id, user\_name ". "FROM ". "admin ". "WHERE ". "(user\_name like '".$\_REQUEST["name"]."') AND ". "(pwd = '".md5 ($\_REQUEST["pw"])."')"; $result = mysql\_query ($sql); if (mysql\_num\_rows ($result) \> 0) { $data = mysql\_fetch\_array ($result); $\_SESSION["user\_id"] = $data["id"]; $\_SESSION["user\_nickname"] = $data["user\_name"]; header ("Location: \_admin/main.php"); } else { header ("Location: fehler.php?fehler=1"); } ?\>

Äh, ja. *durcheinandersei*

Äh, ja. *durcheinandersei*

*gg*
ich habs nun raus und es funktioniert. :smile:
man kann nun nicht mehr auf eine interne seite zugreifen ohne sich eingeloggt zu haben. wenn dies einer machen will, springt das script automatisch auf die login.php seite. :smile:

login.php

Login:

Password:

enter.php (Überprüfung)

<?PHP // Session starten
session\_start(); // Datenbank angaben include("\_admin/\_conf/config.php"); // Datenbankverbindung aufbauen $connectionid = mysql\_connect($mysqlhost, $mysqluser, $mysqlpass); if (!mysql\_select\_db ($database, $connectionid)) { die ("Keine Verbindung zur Datenbank"); } $sql = "SELECT ". "id, user\_name ". "FROM ". "admin ". "WHERE ". "(user\_name like '".$\_REQUEST["name"]."') AND ". "(pwd = '".md5 ($\_REQUEST["pw"])."')"; $result = mysql\_query ($sql); if (mysql\_num\_rows ($result) \> 0) { // Benutzerdaten in ein Array auslesen. $data = mysql\_fetch\_array ($result); // Sessionvariablen erstellen und registrieren $\_SESSION["user\_id"] = $data["id"]; $\_SESSION["user\_nickname"] = $data["user\_name"]; // Login Korrekt springt er auf die interne Seite header ("Location: \_admin/main.php"); } else { // Login InKorretk springt er auf die Fehler Seite header ("Location: fehler.php?fehler=1"); } ?\>**fehler.php (falsche Eingabe)** <?PHP if (isset ($_REQUEST["fehler"]))
{ echo "**Die Zugangsdaten waren ungültig!! [zurück zum Login](login.php) admin/intern.php (Login korrekt) <?PHP include 'checkuser.php';
?\> Admin Home logout.php (Logout seite) <?PHP // Wird ausgeführt um mit der Ausgabe des Headers zu warten.
ob\_start (); session\_start (); session\_unset (); session\_destroy (); // Springt nach dem Logout auf die Hauptseite zurück. header ("Location: ../main.php"); ob\_end\_flush (); ?\>checkuser.php (Usercheck) <?PHP session_start ();
if (!isset ($\_SESSION["user\_id"])) { // Nicht eingeloggt, wird man auf die login weitergeleitet. header ("Location: ../login.php"); } ?\>config.php (Datenbank) <?php //###### SQL Zugangsdaten
$mysqlhost = "localhost"; //Name des Hosters $database = "Datenbank"; //Name der Datenbank $mysqluser = "Benutzername"; //Benutzername $mysqlpass = "Passwort"; //Passwort ?\>**