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