Arrayzugriff Wert auslesen und in Session schreiben

Purdey

Erfahrenes Mitglied
Hallo ich habe ein Array mit folgenden Aufbau.
Wie kann ich jetzt prüfen ob bei rightID =1, hasright auch = 1 ist? (bestenfalls aus der Usersession)
PHP:
Array
(
    [1] => Array
        (
            [rightID] => 1
            [hasright] => 1
        )

    [2] => Array
        (
            [rightID] => 2
            [hasright] => 0
        )

    [3] => Array
        (
            [rightID] => 3
            [hasright] => 0
        )

)
Um es die ganze Zeit verwenden könnte würde ich gern das Array in eine Session schreib um dann von da aus die Prüfung rightID =1 darf er oder darf er nicht (hasright =1 oder hasright = 0) durchführen zu können.
 
In einer Schleife durchgehen, am besten eine Foreach-Schleife.
Dann eine Bedingung die diese Werte abfägt:
PHP:
foreach($array as $key => $value){
  if($value['rightID'] == 1 && $value['hasright'] == 1){
      // tu was
   }
}

Das ganze könntest du mit einer switch-case Bedingung für alle Fälle am besten lösen.
 
In einem Anflug von Prophetie, was du machen wollen könntest, würde ich dir empfehlen, das Array anders aufzubauen.

Warum schreibst du rightID nicht in den key und nimmst hasright als value?

Dein Array oben sähe dann etwa so aus:

// rightID => hasright
1 => 1
2 => 0
3 => 0

Das würde doch den Zugriff darauf unkomplizierter machen?!
 
Hi,

gute Idee ;)

In einem Anflug von Prophetie, was du machen wollen könntest, würde ich dir empfehlen, das Array anders aufzubauen.

Warum schreibst du rightID nicht in den key und nimmst hasright als value?

Dein Array oben sähe dann etwa so aus:

// rightID => hasright
1 => 1
2 => 0
3 => 0

Das würde doch den Zugriff darauf unkomplizierter machen?!

Eine weitere Variante ist, statt einem nummerischen Index, einen assoziativen zu nehmen. Die Namen im Beispiel sind frei erfunden.
PHP:
<?php
$rights = array(
    'postEdit' => 1,
    'postDelete' => 0,
    'threadDelete' => 0,
);
?>

Gruß Kyôya Stefan
 
Danke für die Möglichkeiten nur wie bringe ich das array dann mit in die session so das ich immer drauf zugreifen kann?

Also ich will dann halt steuern können ob der user den button sehen darf oder nicht?
Da ich die Ressourcen schonen möchte würde ich halt gern einmal in die Session schreiben und immer nur von da auslesen?
 
Hi,

das ist einfacher als du vielleicht denkst ;)

PHP:
$rights = array(
    'postEdit' => 1,
    'postDelete' => 0,
    'threadDelete' => 0,
);

$_SESSION['rights'] = $rights;
 
und dann kann ich auch wieder drauf zugreifen in dem speziel postedit abfrage?
Scheint echt einfacher zu sein als ich dachte.

wie wäre das dann? oder muss man dann das array erst wieder "aufklappen"?
 
Danke kannst du das nochmal an dem Bsp. oben festmachen?
Weil ich wölte ja jetzt bspw. an Stelle X wissen ob postdelete mit dem Recht vorhanden ist?
 
In dem Login-Script (oder wo auch immer die Rechte geladen werden):
PHP:
$rights = array(
    'postEdit' => 1,
    'postDelete' => 0,
    'threadDelete' => 0,
);

$_SESSION['rights'] = $rights;

Auf der Seite, auf der die Rechte Rechte geprüft werden sollen:
PHP:
$rights = $_SESSION['rights'];

if (isset($rights['postDelete']) && $rights['postDelete'] == 1) {
    // do something
}
 
Zurück