Login mit Adminrechten

NanoNuna

Mitglied
Hallo zusammen,

ich habe folgendes Problem. Habe eine Webseite erstellt, bei der man sich einloggen kann. Dies funktioniert auch alles.
Die Benutzerverwaltung habe ich in einer MySQL Datenbank abgelegt. In dieser gibt es eine Spalte "recht" die mit "admin" oder "benutzer" belegt ist.
Ich möchte gerne beim Login darauf prüfen ob derjenige, der sich einloggt ein "admin" oder "benutzer" ist. Da ein "admin" mehr Funktionen später haben soll.

Wie schon gesagt das normale Login funktioniert. Könnte mir jemand sagen, was ich am unteren Quellcode ändern muss, dass das Login noch unterscheidet zwischen "admin" und "benutzer"

Formular:
HTML:
<form method="post" action="./../controller/c_login.php">
   <table>
   	<tr>
   	<th algin="left">Benutzername:</th>
   	   <td><input type="text" name="username"></td>
   	</tr>
   	<tr>
   	<th algin="left">Passwort:</th>
  	   <td><input type="password" name="password" id"password"></td>
  	</tr>
  	<tr>
  	<th></th>
   	   <td><button name="login" type="submit" id="login" value="login">Login<button>&nbsp;&nbsp;
   	   <button type="reset" value="reset">Eingabe l&ouml;schen</button></td>
   	</tr>
 </form>

Überprüfung:
PHP:
session_start();
include '../../anwendungskern/benutzerverwaltung.php'; 

if (isset($_POST['login'])) 
{ 
    $id=check_user($_POST['username'], $_POST['password']); 
    if ($id!=false) 
    {
        login($id); 
    }
    else 
    {
         include './../seiten/login_false.php'; 
    }
} 
if (!logged_in()) 
{
   include './../seiten/login_false.php'; 
}  
else 
{
    include './../seiten/logged_in.php'; 
}

Funktion:
PHP:
function check_user($username, $password, $recht) 
{ 
    $sql="SELECT id 
    FROM benutzer  
    WHERE username='".$username."' AND password=MD5('".$password."')
    LIMIT 1"; 
    $result= mysql_query($sql) or die(mysql_error()); 
    if ( mysql_num_rows($result)==1) 
    { 
        $benutzer=mysql_fetch_assoc($result); 
        return $benutzer['id']; 
    } 
    else 
    {
        return false; 
    }
} 


function login($id) 
{ 
    $sql="UPDATE benutzer
    SET session='".session_id()."' 
    WHERE id=".$id; 
     mysql_query($sql); 
} 

function logged_in() 
{ 
    $sql="SELECT id 
    FROM benutzer
    WHERE session='".session_id()."' 
    LIMIT 1"; 
    $result= mysql_query($sql); 
      return ( mysql_num_rows($result)==1); 
}

Vielen Dank im Voraus.

Gruß
Nano
 
Du könntest beim Auslesen des Benutzer-Datensatzes die "Rechte" auslesen und in einer Session-Variable speichern.

Beim Zugriff auf das Admin-Menü wird die Session-Variable auf entsprechende Rechte geprüft und ggf. der Benutzer zurück gewiesen.

Ich hoffe, ich hab dein Anliegen richtig verstanden.
 
Eine elegante Lösung wie ich finde ist eine Spalte Rechte mit einem Binärstring anzulegen, dabei überlegt man sich wieviel Rechte man vergeben möchte z.b. News,GB,Gallery,Admin usw.

Bsp.:
0(News)1(GB)1(Gallery)0(Admin)
=>"0110" in der Spalte Rechte

Wie der Vorgägnger sagte speichert man diesen Wert in eine Session und kann nun in den einzelnen Bereichen einfach nachfragen ob er die jeweiligen Rechte besitzt. Nur so als Umsetzungstip.

mfg ;-)
 
Hallo ihr beiden,

danke erstmal für Eure Nachricht!

Da ich auf diesem Gebiet noch wenig Erfahrung habe, wollte ich frage ob ihr mir vielleicht sagen könnten wie ich das in meinen Quellcode einbaue

Vielen Dank im Voraus.

Gruß

Nano
 
Zurück