88871
Goto Top

PHP Usermanagement - Wie löse ich wie welcher User was kann und darf ?

Ich schreibe gerade ein Usermanagement im einfachen Stil. Folgende User sind geplant:

- MAINADMIN (Rechtestufe1) Hardcore, es kann nur einen geben face-smile
- ADMIN (Rechtestufe2)
- USER1 (Rechtestufe3)
- USER2 (Rechtestufe3)

MAINADMIN (erstellt den admin und GIBTS NUR 1x!! Admins wirds unzählige geben.)
ADMIN (kann 2 User erstellen)
USER1 | USER2 (Können nur Ihre Daten ändern)



Es wird viele ADMIN's geben. Jeder ADMIN kann 2 USER erstellen.


Es gibt immer 1 ADMIN und 2 USER = 1 PACKET das ich ja irgendwo abfragen muss wer wozu passt. Anhand eines Eintrages in der mySQL ? ZTahlencode z.b. 5436 = Admin 5436 und User1 5436 und User2 5436........


Jeder ADMIN hat quasi ne eigene Seite in der er 2 USER erstellen kann. Die 2 USER haben auch eine eigene Seite wo Sie Ihre Daten anpassen können.


Die Seiten werden dann auch per Session Authentizierung abgesichert. Da löse ich es so: Wenn in der DB bei dem USER nicht diese Zahl steht = zurück zum INDEX.


Wie löst man nun das ganze Usermanagement ? Sollte ziemlich einfach sein, da ich noch "lernender" bin ''

- Rechte abfragen per mySQL ? z.b. anhand eines Zahlencodes in der Spalte xy=Aah, das ist der und der, der passt zu dem und dem....
- Per Session ? Aber woher kommt die Information wer zu welchem passt ?


Bitte um Tipps wie man sowas handhaben kann.

Content-ID: 147934

Url: https://administrator.de/contentid/147934

Ausgedruckt am: 22.11.2024 um 13:11 Uhr

masterG
masterG 29.07.2010 um 15:33:42 Uhr
Goto Top
accesslevel.
Kleines bespiel:
<?php
if($user['accesslevel'] == 1337 || $user['accesslevel'] == 23781) {  
echo "Zugang zum Adminpanel";  
}
else {
echo "du hast keinen zugang zum adminpanel";  
}
?>
Gruß
masterG
88871
88871 29.07.2010 um 15:55:42 Uhr
Goto Top
hoi masterG. Danke für den Tipp. Habe fast dasselbe. Das wäre z.b. das auth.php file das ich include.

 

<?php
      session_start();

      if (!isset($_SESSION['admin']) || !$_SESSION['admin']) {  
      header('Location: ../index.php');  
      exit;
      }
?>

im index.php wo man sich anmeldet habe ich diese abfrage die mir die sessions erstellt. admin oder user.
nur eben: es gibt ja diverse admins und user..... da bin ich noch irgendwie aufm holzweg.....

if ($username==$dbusername&&$password==$dbpassword&&$rights=='admin') {  
                  $_SESSION['admin'] = true;  
                header('Location: admin/admin.php');  
            }


            if ($username==$dbusername&&$password==$dbpassword&&$rights=='user') {  
                  $_SESSION['user'] = true;  
                header('Location: user/user.php');  
            }
masterG
masterG 29.07.2010 um 16:43:37 Uhr
Goto Top
Zitat von @88871:
 
> 
> <?php
>       session_start();
> 
>       if (!isset($_SESSION['admin']) || !$_SESSION['admin']) {  
>       header('Location: ../index.php');  
>       exit;
>       }
> ?>
> 
> 

also die abfrage ist unnötig.


Reicht wenn du folgendes machst:
if(!$_SESSION['admin']) {  
header('Location:....');  

Weiters reicht es wenn du einen generellen login machst und die sessionvariable:
$_SESSION['access'] assigns und dort entweder admin oder user.

if($dbusername == $username && $passwort == $dbpasswort) {
$_SESSION['access'] == $rights;  
}

Gruß
masterG
dog
dog 30.07.2010 um 02:58:20 Uhr
Goto Top
Ich habe mal für AD-Integration das ACL-System nach MySQL/PHP übernommen.
Im ersten Anlauf brauchte ich > 800 SQL-Queries um die Gruppen und Berechtigungen richtig aufzulösen face-wink (das hat sich natürlich auf 1-2 reduziert)

Reicht wenn du folgendes machst:
if(!$_SESSION['admin']) {

Nein, tut es nicht (nur wenn man im Blinden-Modus programmiert).
<?php

	session_start();

	error_reporting(E_ALL|E_STRICT);
	ini_set('display_errors','On');  
	
	if(!$_SESSION['keks']) { }  

?>
PHP Notice:  Undefined index: keks in /private/var/folders/4t/4t2eiwmMH8OoTNk4oJzEDk+++TI/-Tmp-/untitled_y07..php on line 8

Ausreichend wäre:
 if(!@$_SESSION['keks']) {  
Oder dark3zzs ursprüngliche Lösung.

Was meinst du eigentlich mit "Wer zu welchem passt"?

Rechte-Storage kann man übrigens auch mit Integern machen:
<?php

	define('PERM_LOGIN', 1);              //Binär: 00000001  
	define('PERM_USER', PERM_LOGIN<<1);   //Binär: 00000010  
	define('PERM_ROOT', PERM_USER<<1);    //Binär: 00000100  
	define('PERM_CREATE', PERM_ROOT<<1);  //Binär: 00001000  
	
	
	//jetzt erstellen wir einen Benutzer mit Login, Create und Root-Rechten
	$myPerm = PERM_LOGIN|PERM_ROOT|PERM_CREATE;//Binär: 00001101

	//prüfen, ob ein Benutzer Login-Rechte hat	
	if(($myPerm|PERM_LOGIN) != $myPerm)
		die("Sie haben keine Login-Berechtigung!");  
		
	//root recht wegnehmen
	$myPerm = $myPerm^PERM_ROOT;           //Binär: 00001001
	//user recht hinzufügen
	$myPerm |= PERM_USER;
	
?>
88871
88871 14.06.2012 aktualisiert um 18:59:00 Uhr
Goto Top
hat sich in der zwischenzeit erledigt, bin auch mit php gewachsen face-smile

trage am anfang nun noch einen text in die session. anhand dieses textes, kann ich diverse user zueinander ordnen, vurausgesetzt, die haben den gleichen text face-smile

den text in der session kann man auch nicht erraten.......anzeigen der eigenen schon, klaro

eigentlich eazy, man lernt nie aus.