- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 01-10-2002, 11:58
Wotan
 Master
Links : Onlinestatus : Wotan ist offline
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 5.348
Wotan ist zur Zeit noch ein unbeschriebenes Blatt
Standard Wie setze ich Rechte um?

Komm nicht weiter.

Wie kann ich Rechte einzelner User im Forum umsetzen?

User 1 ist Gast
Als Gast darf er nur in allen offenen Foren lesen.

User 2 ist User noch nicht freigeschaltet
als User_un darf er nur in allen offenen Foren lesen.

User 3 ist User registriert
als User_reg darf er in allen offenen Foren Lesen und schreiben.

User 4 ist Mod
Als Mod darf er in allen Foren lesen und schreiben, sowie noch andere Sachen machen

User 5 ist Admin
Als Admin hat er alle Rechte

Wer kann mir auf die Sprünge helfen?
__________________
*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Mit Zitat antworten
  #2 (permalink)  
Alt 01-10-2002, 12:23
Troublegum
 PHP Senior
Links : Onlinestatus : Troublegum ist offline
Registriert seit: Dec 2001
Beiträge: 1.302
Troublegum ist zur Zeit noch ein unbeschriebenes Blatt
Standard

In Forensystemen wird üblicherweise ein Gruppensystem verwendet - weil es einfach sehr praktisch ist.

Du teilst deine Benutzer in verschiedene Gruppen ein:
User, Moderatoren, Admins, nicht aktivierte User
Gäste kommen automatisch in die Gruppe Gast.

Dann legst du für diese Gruppen einzeln die Zugriffsrechte fest und die Einstellungen etc. Der Benutzer bezieht seine Rechte dann ganz einfach aus seiner Gruppe.
__________________
"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"
"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "
"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."

© Harald Schmidt
Mit Zitat antworten
  #3 (permalink)  
Alt 01-10-2002, 12:37
Wotan
 Master
Links : Onlinestatus : Wotan ist offline
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 5.348
Wotan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das ist alles soweit klar.
Aber wie setze ich das Programmiertechnisch um?

Das wird doch eine enorme If-Abfrage, oder?
PHP-Code:
if($gruppe == Admin)
{
include(
"forum.inc.php");
}
if(
$gruppe == Mod)
{
include(
"forum.inc.php");
}
//usw 
Oder wie soll das gehen?
__________________
*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Mit Zitat antworten
  #4 (permalink)  
Alt 01-10-2002, 12:41
pooky
 Newbie
Links : Onlinestatus : pooky ist offline
Registriert seit: Aug 2002
Beiträge: 49
pooky ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Setz doch beim Einloggen einfach eine Session-Variable die du dann entsprechend abfragst:
PHP-Code:
if ($_SESSION["gruppe"] == "admin") { zeige_verstecktes_forum 
Mit Zitat antworten
  #5 (permalink)  
Alt 01-10-2002, 12:43
Wotan
 Master
Links : Onlinestatus : Wotan ist offline
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 5.348
Wotan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die Var wird doch schon mitgeführt.

aber um die Rechte zuermitteln muss ich doch trotzdem ein lange if-Abfrage machen, oder geht das auch anders.
__________________
*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Mit Zitat antworten
  #6 (permalink)  
Alt 01-10-2002, 12:45
pooky
 Newbie
Links : Onlinestatus : pooky ist offline
Registriert seit: Aug 2002
Beiträge: 49
pooky ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Na ja, bei vier oder fünf Gruppen ist die Abfrage ja auch nicht sooo lang... dennoch würde man wohl eher switch verwenden.
Mit Zitat antworten
  #7 (permalink)  
Alt 01-10-2002, 12:53
Wotan
 Master
Links : Onlinestatus : Wotan ist offline
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 5.348
Wotan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Egal wie. Ich kann so ohne weiteres keine Neue Usergruppe hinzufügen und darum geht es in zweiter Linie.

Wie kann ich die If-Abfrage so gestalten das wie dynamisch ist und das ich nicht soviele If schreiben muss.
__________________
*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Mit Zitat antworten
  #8 (permalink)  
Alt 01-10-2002, 12:58
Troublegum
 PHP Senior
Links : Onlinestatus : Troublegum ist offline
Registriert seit: Dec 2001
Beiträge: 1.302
Troublegum ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nene, du solltest das natürlich schon dynamisch machen.
Also die Zugriffsrechte in einer Tabelle speichern
und dann die Zugriffsrechte für diese Gruppe auslesen.
eine einfache if() Abfrage reicht dann:

if($permission==1)
{
// zeige Forum
}
else
{
// access denied
}
__________________
"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"
"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "
"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."

© Harald Schmidt
Mit Zitat antworten
  #9 (permalink)  
Alt 01-10-2002, 13:04
Wotan
 Master
Links : Onlinestatus : Wotan ist offline
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 5.348
Wotan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Troublegum

if($permission==1)
{
// zeige Forum
}
else
{
// access denied
}
Aber damit habe ich doch nur ein Recht und nicht die Unterteilung nach alle User-Rechten.
__________________
*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Mit Zitat antworten
  #10 (permalink)  
Alt 01-10-2002, 13:20
Wotan
 Master
Links : Onlinestatus : Wotan ist offline
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 5.348
Wotan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wie sollte die Tabelle für die Recht aussehen?
Mach mal ein Vorschlag, Troublegum.
__________________
*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Mit Zitat antworten
  #11 (permalink)  
Alt 01-10-2002, 13:25
TBT
  Moderator
Links : Onlinestatus : TBT ist offline
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 2.776
TBT befindet sich auf einem aufstrebenden Ast
TBT eine Nachricht über ICQ schicken TBT eine Nachricht über AIM schicken TBT eine Nachricht über Yahoo! schicken
Standard

also ich habe mir eine Klasse "User" gebaut,
welche automatisch das Login gegenüber der DB abgleicht.
Wenn das Script auth.php durchlaufen ist, gibt es ein Objetk $user, welches alle Informationen enthält

usergruppe, rechte, ...

Bei allen Aktionen, die von anderen Scripten gemacht werden heißt es dann immer

PHP-Code:
if($user->get_right("right_abc"))
{
// alles ok mache irgendwas
}else{
// kein Recht zu dieser Aktion

PS: ich such auch noch eine clevere DB-Struktur für Rechte in einem Baum, undzwar so:

Tabelle
======
id
parent_id
...

Soll so laufen:
Wenn ein User das Recht xyz auf ID=1 hat soll er automatisch dieses Recht auch für alle haben, die darunter hängen. So wie die Verzeichnissrechte bei WinNT

Geht das irgendwie ohne dabei die DB mit SQL Abfragen zu überschütten?
__________________
TBT

Die zwei wichtigsten Regeln für eine berufliche Karriere:
1. Verrate niemals alles was du weißt!


PHP 2 AllGoogle Spam CheckOnline Sitemap Check
.

Geändert von TBT (01-10-2002 um 13:28 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 01-10-2002, 13:45
Wotan
 Master
Links : Onlinestatus : Wotan ist offline
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 5.348
Wotan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@TBT
kannst du mal die Klasse, die auth.php und eine Login-Seite als Anhang anhängen?
__________________
*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Mit Zitat antworten
  #13 (permalink)  
Alt 01-10-2002, 14:35
TBT
  Moderator
Links : Onlinestatus : TBT ist offline
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 2.776
TBT befindet sich auf einem aufstrebenden Ast
TBT eine Nachricht über ICQ schicken TBT eine Nachricht über AIM schicken TBT eine Nachricht über Yahoo! schicken
Standard


PHP-Code:
// auth.php
session_start();
$query = new Query$DBinfotruefalse );
$action = isset( $HTTP_GET_VARS['action'] )?$HTTP_GET_VARS['action']:'';
if ( 
$action == "login" )
    
$user = new User$query,
        
"login",
        isset( 
$HTTP_POST_VARS['login_user'] )?$HTTP_POST_VARS['login_user']:"",
        isset( 
$HTTP_POST_VARS['login_pass'] )?$HTTP_POST_VARS['login_pass']:"",
        
session_id() );
else
    
$user = new User$query,
        
"return",
        isset( 
$HTTP_SESSION_VARS['user_id'] )?$HTTP_SESSION_VARS['user_id']:( isset( $HTTP_COOKIE_VARS['user_id'] )?$HTTP_COOKIE_VARS['user_id']:),
        isset( 
$HTTP_SESSION_VARS['user_pass'] )?$HTTP_SESSION_VARS['user_pass']:( isset( $HTTP_COOKIE_VARS['user_pass'] )?$HTTP_COOKIE_VARS['user_pass']:"" ),
        
session_id() ); 
// ab hier ist $user gültig, und kann gefragt werden 
PHP-Code:
// Klasse User
class User {
    var 
$my_param;
    var 
$sql1 "select .. from .. where "// SQL Abfrage für Userdaten
    
function User( &$query$action ''$name$pass ""$stamp null$mail '' )
    {
        
// DB Klasse übernehmen
        
$this->my_query = &$query;
        
// IP des Users holen
        
global $_SERVER;
        
$ip $_SERVER['REMOTE_ADDR'];
        if ( ( 
$ip == "127.0.0.1" ) && ( $_SERVER['HTTP_X_FORWARDED_FOR'] != "" ) )
            
$ip $_SERVER['HTTP_X_FORWARDED_FOR'];
        
// Aktion wählen
        
if ( $action == "get" ) {
            
// nur Infos holen, kein login !
            
$result $this->my_query->select$this->sql1 " user_id=$name " );
            
// keine Cookies setzen oder Session eröffnen !
            
$this->set"protected");
        } elseif ( 
$action == "login" ) {
            
// Passwort crypten (simple zur Zeit)
            
$cpass crypt$pass );
            
// DB fragen
            
$result $this->my_query->select$this->sql1 " upper(user_nick)='" strtoupper$name ) . "' and user_pass='$cpass' " );
            if ( !
$this->my_query->rows ) {
                
// login ungültig => loggen + Gast aus DB holen
                // ...
            
} else {
                
// login gültig
                // ...
            

        } elseif ( 
$action == "return" ) {
            
// returning user
            
if ( $name != // 1 = GAST !
                
$result $this->my_query->select$this->sql1 " user_id=$name and user_pass='$pass' " );
            else
                
$result $this->my_query->select$this->sql1 " user_id=$name " );
            
// eine Zeile erhalten ?
            
if ( !$this->my_query->rows ) {
                
// login ungültig => loggen + Gast aus DB holen
                // ...
            
} else { 
                
// login gültig
                // ...
            

        } 
        
// setzen der Uservariablen auf die Werte der DB
        // ...
        
$this->set"ip"$ip );
        
$this->set"stamp"$stamp ); 
        
// ...
        
$this->set"last_action"$result[0][3] );
        
$this->set"nick"$result[0][4] );
        
$this->set"id"$result[0][5] );
        
$this->set"status"$result[0][6] ); 
        
// ...
    

    
// Eigenschaft speichern
    
function set$param$value '' )
    {
        
$this->my_param[$param] = $value;
    } 
    
// Eigenschaft ausgeben
    
function get$param )
    {
        if ( isset( 
$this->my_param[$param] ) )
            return 
$this->my_param[$param];
        return 
false;
    } 
    
// $user->explain() zeigt zu jedem Zeitpunkt alle Eigneschaften an,
    // kann gut benutzt werden, um Fehler zu finden
    
function explain()
    {
        echo 
"<table><tr><th>Variable</th><th>Wert</th></tr>";
        
reset $this->my_param );
        while ( list( 
$key$value ) = each $this->my_param ) )
        echo 
"<tr><td>$key</td><td>$value</td></tr>";
        echo 
"</table>";
    } 

__________________
TBT

Die zwei wichtigsten Regeln für eine berufliche Karriere:
1. Verrate niemals alles was du weißt!


PHP 2 AllGoogle Spam CheckOnline Sitemap Check
.
Mit Zitat antworten
  #14 (permalink)  
Alt 01-10-2002, 14:43
Wotan
 Master
Links : Onlinestatus : Wotan ist offline
Registriert seit: Sep 2001
Ort: Berlin
Beiträge: 5.348
Wotan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@TBT
Hast du das so in deinem Forum umgesetzt?
__________________
*winks*
Gilbert
------------------------------------------------
Hilfe für eine Vielzahl von Problemen!!!
http://www.1st-rootserver.de/
Mit Zitat antworten
  #15 (permalink)  
Alt 01-10-2002, 14:53
TBT
  Moderator
Links : Onlinestatus : TBT ist offline
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 2.776
TBT befindet sich auf einem aufstrebenden Ast
TBT eine Nachricht über ICQ schicken TBT eine Nachricht über AIM schicken TBT eine Nachricht über Yahoo! schicken
Standard

jup,

aber da ist das ganze noch nen bissel größer
da wird noch viel mehr gemacht, außerdem gibt es da eine Klasse "BoardUser" welche von der Standardklasse "User" ableitet.
Dadurch kann ich den "User" in mehreren Projekten verwenden,
und dann immer die Anpassung in einer abgeleiteten Klasse vornehmen.

PS: Das Board arbeitet fast ausschließlich mit Klassen
__________________
TBT

Die zwei wichtigsten Regeln für eine berufliche Karriere:
1. Verrate niemals alles was du weißt!


PHP 2 AllGoogle Spam CheckOnline Sitemap Check
.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
belbit LiveSupport Script ansehen belbit LiveSupport Script

Schnellen und unkomplizierten Support im LiveSupport-Chat anbieten. Ohne Datenbank und in wenigen Sekunden installiert.

24.05.2012 EichbaumMedia | Kategorie: PHP/ Chat
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:44 Uhr.