Liebes Forum,
vermutlich wurde die Frage schon gefühlte eine Million mal gestellt und wenn es so ist (was wahrscheinlich tatsächlich der Fall sein wird) möchte mich schon mal in aller Form entschuldigen
Es geht um Sessions. Um genauer zu sein, darum, dass eine Session quasi "überschrieben wird".
Folgendes Problem:
Ich habe ein kleines Backend geschrieben, das - eigentlich - mehrere User unterstützen sollte, was es theoretisch auch tut. Die User lege ich im Moment noch in der DB an (das macht also kein Script).
Die Tabelle hat folgende Struktur:
ID
user
password
isAdmin
isSuperUser
Title
Jeder User kann sich mit seinen eigenen ganz individuellen Daten einloggen und das Panel benutzen. Das Problem ist, dass alle User, die Rechte des ersten Users übernehmen.
Als Beispiel:
- Ich erstelle als ersten User "Administrator", er hat die Flag "isAdmin" auf "1"
- Ich erstelle einen weiteren User mit dem Namen "Moderator", der nun - trotz isAdmin-Flag auf "0", alle Rechte des ersten Users übernimmt, quasi eigentlich seine Session - bis auf die Einloggdaten.
Weiteres Beispiel:
- Jeder User hat einen Titel, also z.B "Ingame Administrator", "Server Administrator" etc. Wenn nun der User "Administrator" den Titel "Server Administrator" hat, hat "Moderator" ihn dann auch.
Codebeispiele (Hierbei sei ein Danke an den User ugurkankaya aus dem WoltLab Forum gerichtet, der mir den Code zum Teil umgeschrieben hat, was ich aber tatsächlich nicht suche, weil ich etwas lernen möchte!)
index.php
Auschnitt vom Login-Formular:
acp_login.php
in jeder Datei am Anfang
Könnte mir da bitte jemand helfen? Das wäre sehr lieb. Ich hab's echt versucht und nicht auf die Reihe bekommen. Auch grobe Hinweise genügen! Ich möchte bei der Sache ja schließlich was lernen.
Vielen Dank
vermutlich wurde die Frage schon gefühlte eine Million mal gestellt und wenn es so ist (was wahrscheinlich tatsächlich der Fall sein wird) möchte mich schon mal in aller Form entschuldigen
Es geht um Sessions. Um genauer zu sein, darum, dass eine Session quasi "überschrieben wird".
Folgendes Problem:
Ich habe ein kleines Backend geschrieben, das - eigentlich - mehrere User unterstützen sollte, was es theoretisch auch tut. Die User lege ich im Moment noch in der DB an (das macht also kein Script).
Die Tabelle hat folgende Struktur:
ID
user
password
isAdmin
isSuperUser
Title
Jeder User kann sich mit seinen eigenen ganz individuellen Daten einloggen und das Panel benutzen. Das Problem ist, dass alle User, die Rechte des ersten Users übernehmen.
Als Beispiel:
- Ich erstelle als ersten User "Administrator", er hat die Flag "isAdmin" auf "1"
- Ich erstelle einen weiteren User mit dem Namen "Moderator", der nun - trotz isAdmin-Flag auf "0", alle Rechte des ersten Users übernimmt, quasi eigentlich seine Session - bis auf die Einloggdaten.
Weiteres Beispiel:
- Jeder User hat einen Titel, also z.B "Ingame Administrator", "Server Administrator" etc. Wenn nun der User "Administrator" den Titel "Server Administrator" hat, hat "Moderator" ihn dann auch.
Codebeispiele (Hierbei sei ein Danke an den User ugurkankaya aus dem WoltLab Forum gerichtet, der mir den Code zum Teil umgeschrieben hat, was ich aber tatsächlich nicht suche, weil ich etwas lernen möchte!)
index.php
Auschnitt vom Login-Formular:
Code:
<p align="center"><img src="styles/images/logo.png" alt="Logo" /></p> <h2 align="center">Admin Control Panel</h2> <center> <form action="acp_login.php" method="post"> <b>Username</b>: <br /> <input type="text" name="user"> <br /> <b>Password</b>: <br /> <input type="password" name="password"> <br /> <input type="submit" value="login"/> <input type="hidden" name="<?php session_name();?>" value="<?php echo session_id();?>" /> <br /> </form> </center>
PHP-Code:
<?php
require_once 'config.inc.php';
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><link rel="stylesheet" type="text/css" href="styles/acp_standard.css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Please login!</title>
</head>
<body>
<?php
if($_POST) :
$user=trim(strip_tags(mysql_real_escape_string($_POST["user"])));
$password=trim(strip_tags(mysql_real_escape_string($_POST["password"])));
$password_hash=md5($password);
if(empty($user) || empty($password) )
{
echo "The fields may not be empty!";
}else
{
$var_query=mysql_query(
"SELECT user, password FROM staff_users WHERE user = '$user' && password = '$password_hash'"
);
$total_count=mysql_num_rows($var_query);
if($total_count!=0)
{
$object_get=mysql_fetch_object($var_query);
$_SESSION["user"]=$object_get->user;
header("Location:acp_index.php");
exit();
}else
{
echo '
<div class="content">
Username or password wrong !
<br />
<a href="index.php">» Back</a>
</div>
';
}
}
endif;
echo '</body>';
echo '</html>';
PHP-Code:
$user = trim($_SESSION["user"]);
if (empty($user) || !isset($user)) {
header("Location:index.php");
exit();
}
Vielen Dank
Kommentar