Seite 1 von 1
if - anweißungs problem
Verfasst: 02.08.2004 12:01
von Scoutman
ich hab folgende anweißung:
nun möchte ich aber den teil 'admin' or 'user' als variable setzen.
das funktioniert aber nicht, was ich auch versteh nur wie deklariert man die variable richtig das es dann in der if-anweißung funktioniert?
Verfasst: 02.08.2004 15:26
von Blutgerinsel
Literatur:
http://www.devmag.net/tricks/php/php_trick_9.htm
if ($userdata == 'admin' or 'user') {}
Die Bedingung ist fehlerhaft....richtig wäre z.b.
1.) xor wäre auch möglich
2.) Gibt es Gründe warum der User mit dem Admin gleichgesetzt werden sollte? Aus der praxis her fällt mir kein Grund hierfür ein wo dies sinnvoll wäre. Evtl. Denkansatz falsch....
Verfasst: 02.08.2004 15:29
von Scoutman
das mit user und admin ist nur ein erster versuch. ich werde es jetzt eh anders machen muß aber trotzdem wiede 2 parameter gleich setzen wie in diesen beispiel.
in deinen beispiel ist das ganze aber noch immer so gelöst das keine variable vorkommt.
wie ich schon früher geschrieben habe möchte ich die 2 werte in der variable in die if-anweißung schicken und dann soll gecheckt werden ob eine der beiden gleich ist.
vielleicht gehts auch komplett anders. ich brauch jedenfalls eine abfrage wo zwei oder mehr werde mit einer gleichgesetzt werden sollen. diese werde sollen aber als eine variable in der if-anweißung ankommen.
Verfasst: 02.08.2004 16:00
von Blutgerinsel
Noch immer bin ich mir nicht klaren was exakt genau du willst nur Ansatzweise.....
Man könnte sowas machen:
Code: Alles auswählen
$user=array("Admin","User");
foreach ($user as $var) If ($userdata == $var) echo "allet kloar";
für einen dynamischen Boolean Ausdruck sollte
http://de2.php.net/manual/de/function.eval.php
richtig sein......
Verfasst: 02.08.2004 16:04
von k-5
*g* .. man kann aber auch die funktion in_array() nehmen ..
die macht das gleiche ..
http://de3.php.net/manual/de/function.in-array.php
Verfasst: 02.08.2004 16:17
von Scoutman
danke so funktionierts!!! auch wenn du noch immer nicht weißt was ich will.
so nochmal kurz zu dem ganzen:
es soll kontrolliert werden ob der user mit dem man engeloggt ist übereinstimmt mit dem user der in der variable definiert ist. (da in der variable mehrer definiert sind ist das ganze so umständich). wenn dann das übereinstimmt soll die seite angezigt werden ansonsten passiert nichts. jetzt verstanden?
Verfasst: 02.08.2004 23:25
von Blutgerinsel
klar kann die das.....
nur mach ich nicht immer anderer Leute Arbeit und such im Manual nach PHP spezifischen Funktionen. Schließlich kann ich mehrere Sprachen
@Scoutman:
Ehrlich gesagt eine komische Konstellation.....
1. Regel: Soviel Arbeit wie möglich die DB ereldigen lassen.
Was spricht dagegen wenn du
a) eine Funktion generirst die die Berechtigungen einholt
b) Du übergibts die Session und findest über eine Tabellen Relation als Ausschluss in der Usertable die Session heraus ob jemand das REcht besitzt oder nicht.
c) diesen Berechtigungsschema gibst du als Array zurück und definierst in einem Script eine Script ID welcher du optimal z.B. der Funktion übergibst.
So kannst du dir je Script ermitteln ob User X Zutritt hat oder nicht.
Für die Navilinks brauchst du dagegen die komplette Berechtigungsstruktur und generierst aus dem Array die Navigation.
Für mich übernimmt mein eigenes Berechtigungssystem (6 Tables Relationell) und eine Funktion diese Aufgaben
Wer eine gute relationelle Datenbank hat der muss solche komische Konstellationen erst gar nicht machen.
Klar ist auch ein Weg nur nicht der direkte....
Verfasst: 02.08.2004 23:36
von Scoutman
danke für den tipp. da ich erst seit heuer mit php und sql programmieren begonnen habe fehlt es mir einfach noch an wissen was manche dinge einfach sehr kompliziert macht.
mal schaun wie sich das ganze am besten umsetzen lässt.
Verfasst: 03.08.2004 11:14
von Blutgerinsel
Du solltest mit dem Modelieren deiner DB am besten beginnen....
Z.B. mit folgenden Tabellen:
rechte, gruppe, user
gruppe.rechte, user.rechte, user.gruppe
Setzt natürlich Mehfachabfragen mit left join, inner join und right join voraus. Ach ja besonderes Augenmerk sollte die Mysql funktion
IFNULL
Der Witz ist nun folgender du musst die Relation so aufbauen, dass sich heraus kristallisiert ob jemand das Recht hat oder nicht. Du bekommst quasi alle Rechte aufgelistet und bei manchen steht dann u.A. NULL. Und die Funktion IFNULL erlaubt es nun eine zusätzliche auszugeben ob erlaubt oder nicht ist.