if - anweißungs problem

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Scoutman
Mitglied
Beiträge: 278
Registriert: 11.02.2004 17:15
Wohnort: .at

if - anweißungs problem

Beitrag von Scoutman »

ich hab folgende anweißung:

Code: Alles auswählen

if ($userdata == 'admin' or 'user') {}
nun möchte ich aber den teil 'admin' or 'user' als variable setzen.

Code: Alles auswählen

$user = 'admin' or 'user'
if ($userdata == $user) {}
das funktioniert aber nicht, was ich auch versteh nur wie deklariert man die variable richtig das es dann in der if-anweißung funktioniert?
KEIN Support per PM!!!
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Literatur: http://www.devmag.net/tricks/php/php_trick_9.htm

Code: Alles auswählen

$user= ($userdata == "Admin") ? "Admin" : "User";
if ($userdata == 'admin' or 'user') {}
Die Bedingung ist fehlerhaft....richtig wäre z.b.

Code: Alles auswählen

if ($userdata == 'admin' || $userdata == 'user')
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....
Scoutman
Mitglied
Beiträge: 278
Registriert: 11.02.2004 17:15
Wohnort: .at

Beitrag 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.

Code: Alles auswählen

if ($userdata == 'admin' || $userdata == 'user') 

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.
KEIN Support per PM!!!
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag 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......
Benutzeravatar
k-5
Mitglied
Beiträge: 166
Registriert: 05.06.2003 23:21
Wohnort: soa kaff
Kontaktdaten:

Beitrag 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
ich will mein auto polieren ! ..

ja .. ich weiß .. man kann das mit nem lappen machen .. aber ICH will unbedingt nen hammer nehmen .. WIE geht das :)
Scoutman
Mitglied
Beiträge: 278
Registriert: 11.02.2004 17:15
Wohnort: .at

Beitrag von Scoutman »

danke so funktionierts!!! auch wenn du noch immer nicht weißt was ich will. :D


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?
KEIN Support per PM!!!
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

k-5 hat geschrieben:*g* .. man kann aber auch die funktion in_array() nehmen .die macht das gleiche ..
http://de3.php.net/manual/de/function.in-array.php
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 :roll:

@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....
Scoutman
Mitglied
Beiträge: 278
Registriert: 11.02.2004 17:15
Wohnort: .at

Beitrag 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.
KEIN Support per PM!!!
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag 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.
Antworten

Zurück zu „Coding & Technik“