Mailinglisten-Archive |
Steffen Kother schrieb: > $Modul = Pruefe_Modul('fibu'); > /* ^ Liefert bei true 'fibu', sonst 0 */ > $Funktion = Pruefe_Funktion('zudd_erfassen', $Modul); > /* ^ Liefert bei true die Funktion sonst 0 */ > > Der User hat in seiner Session die Berechtigung f=A8r 'zudd_erfasen', > aber irgendwie will er den Vergleich von $Value mit > strtolower($Funktion) nicht, denn $Funk bleibt leer. Schreibe ich vor > den Vergleich $Value='zudd_erfassen' hart rein, dann gehts. das ist wirklich schwer zu sagen mach doch mal ein print_r() an dieser stelle, und ist der Funktionsname auch wirklich klein geschrieben in der DB? ... wieso dieses 'serialize' ? und diese vielen foreach? //[1] - Schreiben in $_SESSION['cl_Rechte'] - /** * vorher werden alle m=F7glichen Rechte f=A8r den User ermittelt * und die Abfrage zu Modulen und Funktionen erledigt */ if ( ! empty($SELECT) ) { /* Die Module und Funktionen auslesen */ $ERG = mysql_fetch_assoc($SELECT) or $ERG = ''; $Modul = $ERG['bezeichnung_modul']; $Funktion = $ERG['bezeichnung_funktion']; /* Je Modul ein Array (Modul => Funktion) */ $_SESSION['cl_Rechte'][$Modul][] = $Funktion; } /* ... */ //[3] - Abgleichen der Berechtigungen - /** * Funktion zum Pr=A8fen des Modul */ function Pruefe_Modul( $Modul ) { if ( array_key_exists( $Modul, $_SESSION['cl_Rechte'] ) ) return $Modul; else return 0; } /** * Funktion zum Pr=A8fen der Funktion */ function Pruefe_Funktion( $Funktion, $Modul ) { $rechte = array(); if ( isset($_SESSION['cl_Rechte'][$Modul]) ) $rechte = $_SESSION['cl_Rechte'][$Modul]; if ( isset($_SESSION['cl_Rechte']['all']) ) $rechte = array_merge( $rechte, $_SESSION['cl_Rechte']['all'] ); if ( in_array( strtolower($Funktion), $rechte ) || isset($rechte['all']) ) return $Funktion; else return 0; } -- Sebastian Mendel www.sebastianmendel.de www.warzonez.de www.tekkno4u.de www.nofetish.com www.sf.net/projects/phpdatetime www.sf.net/projects/phptimesheet
php::bar PHP Wiki - Listenarchive