Verschiedene Rechte beim Login

buddymaster

Mitglied
Wie kann ich das anstellen?(Die im Thema genannte Frage) Man hat mir schon gesagt ich muss die Tabelle in MySQL erweitern und diese Erweiterung abfragen bei jeder Seite.

Kann mir da jemand genauer weiterhelfen?
 
du kannst in der Tabelle eine neu Spalte hinzufügen zB rechte diese fragst du bei der anmeldung auch noch ab und diesen parameter übergibst du per session und frägst diese auf jeder seite wieder ab zb

if($_SESSION['rechte'] == 'admin') {echo "...";}
elseif($_SESSION['rechte'] == 'user') {echo"was anderes";};
 
PHP:
funtion login($rights)
{
   // MYSQL ABFRAGE POST ODER COOKIE
   if ($row->user && $row->password == md5($_POST['pass']) && $rights >= $rights)
   {
      // YOU'R Logged in
      return true;
   }
}

PHP:
if (login(1))
{
   echo 'You are User';
}
elseif (login(2))
{
   echo 'You are Member';
}
// etc etc

Rights:

1 = User
2 = Superadmin
3 = Admin

irgendwie so.

und wenn einer praktisch weniger Rechte hat reicht es nicht für den bereich
 
Ich weiß, ich verlange viel, aber kannst du mir das in das Loginscript einbauen und hier posten?
Ich weiß nicht genau wo ich es einbauen soll (von wegen IF und ELSE usw.)
Vielleicht versteh' ich's so auch besser?

Meine neue Spalte in der Datenbank sollte hier nach "rights" heißen, richtig?
 
Die Login Datei:
PHP:
<?php session_start ();?>
<?php include_once('config.php');?>
...
</head>
<body >
    <div id="hintergrund_login">
      <div id="text_oben_login"><br />Sie Betretten einen gesch&uuml;tzten Bereich<br /></div>
      <div id="text_login"><br />
<?php 

if($_GET['action'] == 'login' and $_POST['time']+60 > time() and isset($_POST["username"]) and isset($_POST["passwort"]) )
{ 
$zeit = $_POST["time"]; ;
$username = $_POST["username"]; 
$passwort = md5($_POST["passwort"]);
 

$abfrage = "SELECT id, username, vorname, nachname, passwort, rang, online, zuletzt FROM user WHERE username  like BINARY  '$username' and passwort like '$passwort' LIMIT 1"; 
$ergebnis = mysql_query($abfrage)or die (mysql_error()); 
$row = mysql_fetch_object($ergebnis); 


if ($row->online == '1' and $row->zuletzt+300 < time() )
{
   echo fehler(103,false);
}

elseif($row->passwort == $passwort)
{
    $_SESSION["username"] = $username;
    $_SESSION["vorname"] = $vorname;
    $_SESSION["nachname"] = $nachname; 
    $_SESSION["timeout"] = time() +(30*30);
    $_SESSION["rechte"] = $row->rang;
    
$sql = mysql_query("UPDATE `user` SET `online` = '1', `zuletzt` = '".time()."' WHERE `user`.`id` = ".$row->id." LIMIT 1"    ) or die (mysql_error());    

echo "Login erfolgreich. <br> <b><a href=\"geheim.php\">Gesch&uuml;tzer Bereich</a></b>";
} 
  
else 
    {echo fehler(102,false);} 
}
elseif ($fehler != 'fehler') {?>
<form action="?action=login" method="post">
Dein Username:    <input type="text" size="24" maxlength="50" name="username"><br /><input type="hidden" value="<?php echo time()+30;?>" name="time" /><br />
Dein Passwort:&nbsp;      <input type="password" size="24" maxlength="50" name="passwort"><br /><br />
<input type="submit" value="Login">
</form> 
<?php }; ?> 
...</html>

die config.php datei

PHP:
<?php
$verbindung = mysql_connect ("$host","$benutzername", "$passwort") or die ("Verbindung nicht möglich");
$db_auswahl = mysql_select_db("$db") or die ('Die Datenbank existiert nicht'); $durchlauf = 0;
function fehler($zahl,$include)
{ 
if($durchlauf < 1)
{
  switch($zahl)
  	{
	case '100': $fehler ="Sie haben das System timeout von 15 Minuten &Uuml;berschritten<br><a href=\"index.php\">Erneut Anmelden</a>";break;
	case '101': $fehler ="Sie sind beim System nicht mehr angemeldet!<br><a href=\"index.php\">Erneut Anmelden</a>";break;
	case '102': $fehler ="Benutzername und/oder Passwort waren <b>Falsch</b><br><a href=\"index.php\">Login</a>";break;
	case '103': $fehler ="Sie sind beim System noch angemeldet!<br> Wenn Sie sich in fünf Minuten noch immer nicht Anmelden können, melden Sie sich bitte beim Administrator der Seite<br><br><a href=\"index.php\">Erneut versuchen</a>";break;
	};
if($include == 'true') {$ausgabe = include_once('frames/head.php');} else {$ausgabe = '';};
  return $fehler;
  return $zahl;
  return $ausgabe;
}
else {echo "false";}
$durchlauf++;
};?>
in der Zelle rang ist der gewünschte Rang Name einzugeben zB Admin/Head Admin...
Bei Fragen helfe ich dir gerne weiter

P.S Wenn jemandem Fehler auffallen bitte melden
 
Am praktischsten ist es, behaupte ich jetzt mal, weil ich es so mache ^^
Ne seperate Tabelle anzulegen im MySQL und dort für jede ID jedes Recht einzeln abzulegen...
zB:
CREATE TABLE
Rechte
(
ID INT NOT NULL,
Recht VARCHAR (30) NOT NULL,
PRIMARY KEY (ID)
);

Als grobes Beispiel mal ebend ausm Ärmel geschüttelt...

Das liest du dann beim LOGIN mit aus und NUR beim Login und trägst es dann mit in die $_SESSION ein...

In der Tutorials-Ecke müsste nen ähnliches Tut von mir sein, wo ich auch darauf zurück greife...
 
Zurück