php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.04.2008, 21:25  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

@SilentSight: Jetzt zählst du das alles zusammen und bekommst 4295033110 heraus (die Zahl ist ein wenig groß, weil du so hohe Zahlen verwendest, sinnvoller wären die Zahlen von 0 bis 5 oder von 1 bis 6). Dieses Ergebnis hat nun festgehalten, welche Rechte der User alle hat (hier: alle 6). Mittels der Funktion kannst du nun ermitteln, ob der User z.B. das Recht 4 hat (in diesem Fall ja).

@David: Ja, ein wenig herdcoded, das ganze.
Manko10 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.04.2008, 22:28  
Erfahrener Benutzer
 
Registriert seit: 27.04.2008
Beiträge: 107
SilentSight befindet sich auf einem aufstrebenden Ast
Standard

@David:

Was meinst du mit "static oder eine Registry" könnten mir helfen?
Is jetz vll. ne Anänger-Frage, weiß aber leider grad nich, was du damit meinst...
Ich werde es morgen mal ausprobieren, alles aufzuteilen
SilentSight ist offline   Mit Zitat antworten
Alt 27.04.2008, 22:40  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Im einfachsten Fall
PHP-Code:
function foo()
{
  static 
$rights null;
  if(
is_null($rights))
  {
    
$result mysql_query('SELECT * FROM rights');
    if (
$results===false)
    {
      die(
mysql_error());
    }
    
$rights = array();
    while(
$row mysql_fetch_array($resultMYSQL_ASSOC))
    {
      
$rights[$row['name']] = $row['bit'];
    }
  }
  return 
$rights;

Durch die Angabe von static merkt sich php den Wert auch nach Verlassen der Funktion. Es ist aber trotzdem keine globale Variable. PHP: Variable scope - Manual
Dadurch wird das Ganze eine Art Singleton - mit allen Vor- und Nachteilen.
David ist offline   Mit Zitat antworten
Alt 27.04.2008, 22:48  
Erfahrener Benutzer
 
Registriert seit: 27.04.2008
Beiträge: 107
SilentSight befindet sich auf einem aufstrebenden Ast
Standard

Also doch
Ich kenn static aus C++, hab aber noch nie was davon gehört, dass es dieses Schlüsselwort auch in PHP gibt ^^

Aber was hast du mit einer Registry gemeint?
Des Ding aus Windows kenn ich, aber mit PHP?

Die Funktion is echt gut, "is_null" kannte ich auch noch nich xD

In Foren kann man echt mehr lernen als ich dachte

Geändert von SilentSight (27.04.2008 um 22:51 Uhr).
SilentSight ist offline   Mit Zitat antworten
Alt 27.04.2008, 22:59  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von SilentSight Beitrag anzeigen
Aber was hast du mit einer Registry gemeint?
Irgendetwas, worin Du etwas registrieren kannst. Also vereinfacht ausgedrückt eine Schlüssel=>Wert Zuordnung. Wenn Du willst, ist ein PHP-Array bereits eine Art Registry.
David ist offline   Mit Zitat antworten
Alt 27.04.2008, 23:13  
Erfahrener Benutzer
 
Registriert seit: 27.04.2008
Beiträge: 107
SilentSight befindet sich auf einem aufstrebenden Ast
Standard

Also hab ich ja ne Registry (die Datenbanktabelle mit den Rechten)...
SilentSight ist offline   Mit Zitat antworten
Alt 27.04.2008, 23:20  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Das ist dann mE doch eine zu allgemeine Auslegung von Registry
Und in diesem Fall ging es mir daraum, die unnötig wiederholten und relativ langsamen externen Datenbankzugriffe zu vermeiden.
David ist offline   Mit Zitat antworten
Alt 28.04.2008, 15:07  
Erfahrener Benutzer
 
Registriert seit: 27.04.2008
Beiträge: 107
SilentSight befindet sich auf einem aufstrebenden Ast
Standard

Yuhuu, es funktioniert!

Danke für den Tipp mit den Teilproblemen , hab es jetz so gelöst:

PHP-Code:
    function getPermissions() {
        static 
$rights null;
        
        if(
is_null($rights)) {
            
$permissions = new sqlQuery('SELECT * FROM rights');
            if(
$permissions->error()) {
                
$permissions->getError();
            } else {
                
$rights = array();
                
                while(
$permission $permissions->fetch()) {
                    
$rights[$permission['name']] = pow(2$permission['id']);
                }
            }
        }
        
        return 
$rights;
    }
    
    function 
hasPermission($uid$permission) {
        
$rights getPermissions();
        
        
$user_sel = new sqlQuery('SELECT rights FROM accounts WHERE id = "'.$uid.'"');
        
$user $user_sel->fetch();
        
        foreach(
$rights as $right => $id) {
            if((
$user['rights'] & $permission) == $id) {
                return 
true;
            }
        }
        
        return 
false;
    } 
Jetz machen die Funktionen endlich das wofür sie geschaffen wurden: Sie funktionieren xD

Vielen Dank nochmal
SilentSight ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Sessions Problem StephenKing PHP Tipps 2008 3 16.10.2007 08:30
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
[Erledigt] Problem bei Massenmails versenden mit der Funktion mail PHP-Fortgeschrittene 3 19.01.2005 13:36
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Problem mit Weiterleitung PHP Tipps 2004-2 16 22.12.2004 17:49
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
[Erledigt] Problem mit Timestamp! PHP Tipps 2004 24 08.06.2004 19:51
Login Problem PHP Tipps 2004 4 04.06.2004 18:46
foreach problem mAy^daY PHP Tipps 2004 3 02.06.2004 20:29


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:13 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum