# Verschiedene Rechte beim Login



## buddymaster (8. Dezember 2007)

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?


----------



## tz_08 (8. Dezember 2007)

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";};


----------



## Dr Dau (8. Dezember 2007)

Hallo!

Konkret bezieht sich die Frage auf dieses Tutorial: http://www.tutorials.de/forum/php-tutorials/9684-php-mysql-login-system-mit-sessions.html

@tz_08, beachte bitte die Netiquette bezüglich Deiner durchgängigen Kleinschreibung.

Gruss Dr Dau


----------



## buddymaster (8. Dezember 2007)

Das ist richtig. Ich bezieh' mich auf das LoginScript. Aber wie kann ich die Rechte hier genau einbauen in das script?


----------



## ByeBye 182971 (9. Dezember 2007)

```
funtion login($rights)
{
   // MYSQL ABFRAGE POST ODER COOKIE
   if ($row->user && $row->password == md5($_POST['pass']) && $rights >= $rights)
   {
      // YOU'R Logged in
      return true;
   }
}
```


```
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


----------



## buddymaster (9. Dezember 2007)

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?


----------



## buddymaster (11. Dezember 2007)

Mmmmh, ich glaube, es erbarmt sich keiner!


----------



## tz_08 (11. Dezember 2007)

Die Login Datei:

```
<?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
$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


----------



## buddymaster (24. Dezember 2007)

Ich glaub' ich bin einfach zu blöd für PHP...Ich krieg's einfach nicht hin. Ich weiß einfach nicht genau, was ich mache!


----------



## Chaosengel_Gabriel (24. Dezember 2007)

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...


----------

