Rechtesystem mit verschiedenen Benutzergruppen

Spacedoener

Gesperrt
Hi,

habe ein großen Problem und würde mich echt sehr freuen, wenn ihr mir da Helfen könntet.

Habe ein Login Script aus dem Tutorials "[PHP/mySQL] Login-System mit Sessions" kopiert und wollte mir den weiteren Script aus der Tutorials "Rechtesystem mit verschiedenen Benutzergruppen" in diesem einbinden...

Aber die beschreibungen und erklärungen sind sehr grob beschrieben und irgendwie funktioniert das ganze nicht.
Bitte bitte so helft mir, brauche dringend da mal Hilfe...

Das ganze sieht so aus:

script.php:
PHP:
<?php
// Definition der Benutzer
$benutzer[0]["Nickname"] ="admin";
$benutzer[0]["Kennwort"] = "admin";
$benutzer[0]["Nachname"] = "Voll zugriff";
$benutzer[0]["Vorname"] = "Max";
$benutzer[0]["checkright"] = "7";

$benutzer[1]["Nickname"] = "test0";
$benutzer[1]["Kennwort"] = "abc";
$benutzer[1]["Nachname"] = "keine rechte";
$benutzer[1]["Vorname"] = "test0";
$benutzer[1]["checkright"] = "0";

$benutzer[2]["Nickname"] = "test1";
$benutzer[2]["Kennwort"] = "abc";
$benutzer[2]["Nachname"] = "Schreiben";
$benutzer[2]["Vorname"] = "test1";
$benutzer[2]["checkright"] = "1";

$benutzer[3]["Nickname"] = "test2";
$benutzer[3]["Kennwort"] = "abc";
$benutzer[3]["Nachname"] = "Bearbeiten";
$benutzer[3]["Vorname"] = "test2";
$benutzer[3]["checkright"] = "2";

$benutzer[4]["Nickname"] = "test4";
$benutzer[4]["Kennwort"] = "abc";
$benutzer[4]["Nachname"] = "löschen";
$benutzer[4]["Vorname"] = "test4";
$benutzer[4]["checkright"] = "4";

// Sie können an dieser Stelle beliebig viele Benutzer anlegen.
// Achten Sie dabei nur auf die Fortführung der Nummer.

// Aufbau der Datenbankverbindung
$connectionid = mysql_connect ("localhost", "root", "01039052");
if (!mysql_select_db ("LoginSystem", $connectionid))
{
  die ("Keine Verbindung zur Datenbank");
}

// Zuerst alle Datensätze löschen um keine Dopplungen zu bekommen.
mysql_query ("DELETE FROM benutzerdaten");

// Daten eintragen
while (list ($key, $value) = each ($benutzer))
{
  // SQL-Anweisung erstellen
  $sql = "INSERT INTO ".
    "benutzerdaten (Nickname, Kennwort, Nachname, Vorname, checkright) ".
  "VALUES ('".$value["Nickname"]."', '".
                       md5 ($value["Kennwort"])."', '".
                       $value["Nachname"]."', '".
                       $value["Vorname"]."', '".
                       $value["checkright"]."')";
  mysql_query ($sql);

  if (mysql_affected_rows ($connectionid) > 0)
  {
    echo "Benutzer erfolgreich angelegt.<br>\n";
  }
  else
  {
   echo "Fehler beim Anlegen der Benutzer.<br>\n";
  }
}
?>

</body>
</html>


login.php
PHP:
<?php
// Session starten
session_start ();

// Datenbankverbindung aufbauen
$connectionid = mysql_connect ("localhost", "root", "01039052");
if (!mysql_select_db ("LoginSystem", $connectionid))
{
  die ("Keine Verbindung zur Datenbank");
}

$sql = "SELECT ".
    "Id, Nickname, Nachname, Vorname, checkright ".
  "FROM ".
    "benutzerdaten ".
  "WHERE ".
    "(Nickname like '".$_REQUEST["name"]."') AND ".
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
$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["Nickname"];
  $_SESSION["user_nachname"] = $data["Nachname"];
  $_SESSION["user_vorname"] = $data["Vorname"];
  $_SESSION["user_checkright"] = $data["checkright"];

  header ("Location: intern.php");
}
else
{
  header ("Location: formular.php?fehler=1");
}
?>

formular.php
PHP:
<?php session_start (); ?>
<html>
<head>
  <title>Login</title>
</head>

<body>
<?php
if (isset ($_REQUEST["fehler"]))
{
  echo "Die Zugangsdaten waren ungültig.";
}
?>
<form action="login.php" method="post">
  Name: <input type="text" name="name" size="20"><br>
  Kennwort: <input type="password" name="pwd" size="20"><br>
  <input type="submit" value="Login">
</form>
</body>
</html>

checkuser.php

PHP:
<?php
session_start ();
if (!isset ($_SESSION["user_id"]))
{
  header ("Location: formular.php");
}
?>

logout.php
PHP:
<?php
// Wird ausgeführt um mit der Ausgabe des Headers zu warten.
ob_start ();

session_start ();
session_unset ();
session_destroy ();

header ("Location: formular.php");
ob_end_flush ();
?>

intern.php
PHP:
<?php
include ("checkuser.php");

?>
<html>
<head>
  <title>Interne Seite</title>
</head>
<body>
  BenutzerId: <?php echo $_SESSION["user_id"]; ?><br>
  Nickname: <?php echo $_SESSION["user_nickname"]; ?><br>
  Nachname: <?php echo $_SESSION["user_nachname"]; ?><br>
  Vorname: <?php echo $_SESSION["user_vorname"]; ?><br>
  Checkright: <?php $_SESSION["user_checkright"];?>
  <hr>
  
  <?php
  
    function checkright($userrank,$righttocheck)
    {
        if(($userrank & $righttocheck) == $righttocheck)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    

    $recht[0] = 0;    // 0001 (hier wird noch nicht geshiftet!)
    $recht[1] = 1;    // 0001 (hier wird noch nicht geshiftet!)
    $recht[2] = 1<<1; // 0010 (0001 um 1 nach links: 0010);
    $recht[3] = 1<<2; // 0100 (0001 um 2 nach links: 0100);
    $recht[4] = 1<<3; // 1000 (0001 um 3 nach links: 1000);
    
    
    
    $RechteKeyDesUsers = $_SESSION["user_checkright"];

    $RightToCheck = $recht[4];

    if(checkright($RechteKeyDesUsers,$RightToCheck))
    {
      //alles ok
      echo "<br>okay";
    }
    else
    {
     //nix ok
      echo "<br>nicht okay";
    }
    
  ?>
  <a href="logout.php">Ausloggen</a>
</body>
</html>


So das war das ganze, ich hoffe es kommt nicht viel auf einmal vors auge...
Aber die meisten änderungen ist bei den letzten script gemacht worden, also in "intern.php" ...

Was muss ich tun, was mache ich falsch, vom Theorie her was im Tutorials steht verstehe ich perfekt, aber leider haben die jenigen es sehr grob und sehr Anfänglich beschrieben, so dass man es nicht in PHP umsetzten kann...
z.B. der Tutorials "[PHP/mySQL] Login-System mit Sessions" ist dagegen perfekt erklärt worden so das man es nach voll ziehen kann...

Würde mich echt sehr freuen, wenn hier einer mir dabei Helfen könnte und mir schreibt wie ich es machen soll, habe da keine peilung mit...

MfG
Spacedoener

PS: Login funktioniert astrein...
Die User können sich ganz normal einlogen und auch wieder auslogen...
Nur die Rechtevergabe funktioniert nicht richtig...
 
Zurück