Ich habe da ein kleines Problem mit meinem Usersystem.
Es gibt einen User und einen Adminbereich. Der Adminbereich liegt in einem Extraverzeichnis und unterschiedet sich lediglich in der login.php von Userbereich, da ich dort noch die Usergruppe abfrage. Wenn diese = 'admin' ist, dann soll er im Adminbereich einloggen.
Klappt für sich gesehen auch ganz gut mit einer Ausnahme.
Wenn ich mich im Userbereich registriere und anmelde, dann wird dort natürlich eine Session erstellt. Wenn ich nun die genaue URL des Adminbereichs kenne, diese eingebe und bestätige, dann werde ich auch als User im Adminbereich eingelogt, was natürlich nicht Sinn der Sache ist. Mit welcher Funktion könnte ich diese Sessionübertragung in den Adminbereich verhindern, da aus irgendwelchen Gründen auf diese Art und Weise nicht die Bedingung usergruppe='admin' erfüllt wird.
Hier der Code. etwas abgeändert aber einigen vielleicht bekannt
(Adminbereich - login.php; das fette fällt im Userbereich weg)
Die login.inc.php; Das Formular was angezeigt wird, wenn der User nicht authenfiziert ist. In beiden Bereichen das selbe.
Wo könnte da der Hase im Pfeffer liegen. Habs auch schon vorgeschaltet mit session_unset und session destroy versucht aber da tut sich auch nix.
Es gibt einen User und einen Adminbereich. Der Adminbereich liegt in einem Extraverzeichnis und unterschiedet sich lediglich in der login.php von Userbereich, da ich dort noch die Usergruppe abfrage. Wenn diese = 'admin' ist, dann soll er im Adminbereich einloggen.
Klappt für sich gesehen auch ganz gut mit einer Ausnahme.
Wenn ich mich im Userbereich registriere und anmelde, dann wird dort natürlich eine Session erstellt. Wenn ich nun die genaue URL des Adminbereichs kenne, diese eingebe und bestätige, dann werde ich auch als User im Adminbereich eingelogt, was natürlich nicht Sinn der Sache ist. Mit welcher Funktion könnte ich diese Sessionübertragung in den Adminbereich verhindern, da aus irgendwelchen Gründen auf diese Art und Weise nicht die Bedingung usergruppe='admin' erfüllt wird.
Hier der Code. etwas abgeändert aber einigen vielleicht bekannt
(Adminbereich - login.php; das fette fällt im Userbereich weg)
PHP:
<?php
/* Session initialisieren */
session_start();
/* übergebene Variablen auslesen */
$username = $_POST['nickname'] ? $_POST['nickname'] : false;
$password = $_POST['pw'] ? $_POST['pw'] : false;
if($username && $password)
{
/* verschlüsseltes Passwort erzeugen */
$encrypted = md5($pw);
include('inc/db.inc.php');
$connection = mysql_connect($host,$uid,$pwd);
if($connection)
{
if(mysql_select_db($db))
{
$admin = 'admin';
$sql = "SELECT nickname, pw, usergruppe, active FROM xxx WHERE nickname = '$nickname' AND pw = '$encrypted' AND usergruppe = '$admin' AND active = 'true'";
$result = mysql_query($sql);
if($result && (@mysql_num_rows($result) > 0))
{
$row = mysql_fetch_row($result);
$_SESSION['authenticated'] = true;
$_SESSION['user_id'] = $row[0];
$_SESSION['username'] = $username;
}
else
{
$_SESSION['authenticated'] = false;
}
}
}
}
/* Umleitung */
echo "<meta http-equiv=\"refresh\" content=\"0; URL=index.php?section=start\">";
?>
Die login.inc.php; Das Formular was angezeigt wird, wenn der User nicht authenfiziert ist. In beiden Bereichen das selbe.
PHP:
<?php
/* Session initialisieren */
session_start();
/* Überprüft, ob ein Login erfolgt ist */
function is_logged_in()
{
/* User angemeldet? */
if($_SESSION['authenticated'])
{
return true;
}
/* Login ausgeben */
else
{
$content = '<h4>Login';
$content .= '<form action="login.php" method="post">';
$content .= '<table border="0" cellpadding="2" cellspacing="0">';
$content .= '<tr>';
$content .= '<td>Benutzername:';
$content .= '</tr>';
$content .= '<td>Passwort:';
$content .= '</tr>';
$content .= '<td>';
$content .= '</tr>';
$content .= '</table>';
$content .= '</form>';
echo $content;
}
}
?>
Wo könnte da der Hase im Pfeffer liegen. Habs auch schon vorgeschaltet mit session_unset und session destroy versucht aber da tut sich auch nix.