Die HTML-Datei:
- Code: Select all
1 <?php
2 // Directory-Link zum obersten Level
3 $dirTop = "../../";
4 // benoetigte PHP-Libraries
5 require_once $dirTop."php/config.inc";
6 require_once $phpTools;
7 // Menu erstellen
8 $xmlMenu = simplexml_load_file($fileMenu);
9 // Zugriffsrechte laden
10 $xmlAdmin = simplexml_load_file($fileAccess);
11 ?>
12 <head>
13 <link rel="stylesheet" href="<?=$dirTop?>styles/menu.css" type="text/css" media="all">
14 <script language="JavaScript" src="<?=$dirTop?>javascript/anzeigen.js" type="text/javascript"></script>
15 </head>
16 <body class="menu">
17
18 <div class="MenuListe">
19 <ul id="MenuPoint">
20 <li><a target="_top" href="<?=$dirTop?>index.htm">CVJM Steinheim</a></li>
21 <li><a target="haupt" href="center.php">Verwaltung</a></li>
22 </ul>
23 </div>
24
25 <div class="MenuListe"> </div>
26
27
28 <!-- Verwaltungscenter-Menu -->
29 <div class="MenuListe">
30 <ul id="MenuPoint">
31 <?php foreach($xmlMenu->menupoint as $daten): ?>
32 <!-- Hauptmenuepunkt -->
33 <!-- User bzgl. Rechte fuer Menuepunkt pruefen und danach ausgeben -->
34 <?php if(CheckRechte($daten->recht,$_SERVER['REMOTE_USER'])): ?>
35 <li><a target="haupt" href="<?=$daten->aktion?>"><?=utf8_decode($daten->name)?></a></li>
36 <!-- Untermenuepunkt -->
37 <?php if($daten->submenu): ?>
38 <?php foreach($daten->submenu as $subdaten): ?>
39 <!-- User bzgl. Rechte fuer Menuepunkt pruefen und danach ausgeben -->
40 <?php if(CheckRechte($subdaten->recht,$_SERVER['REMOTE_USER'])): ?>
41 <li><a class="submenu" target="haupt" href="<?=$subdaten->aktion?>"><?=utf8_decode($subdaten->name)?></a></li>
42 <?php endif; ?>
43 <?php endforeach; ?>
44 <?php endif; ?>
45 <?php endif; ?>
46 <?php endforeach; ?>
47 </ul>
48 </div>
49 </p>
50
51 </body>
52 </html>
In Zeile 34 rufe ich die Funktion CheckRechte() auf:
- Code: Select all
1 function CheckRechte($strMenu,$strUser) {
2 // globale Variablen
3 global $xmlAdmin;
4
5 $flagAccess = False;
6 // pruefen, ob User in Zugriffsliste eingetragen ist
7 if($listUser=$xmlAdmin->xpath("//user[remote_id='".$strUser."']")) {
8 // Adminstrator
9 if($listUser[0]->rechte->administrator)
10 $flagAccess = True;
11 // nomaler User
12 else {
13 foreach($listUser[0]->rechte->recht as $Rechte) {
14 if($Rechte==$strMenu)
15 $flagAccess = True;
16 }
17 }
18 }
19 // Berechtigugn zureuckgeben
20 return $flagAccess;
21 }
In Zeile 14 ist die IF-Abfrage, die seit PHP 5.2.0 nicht mehr funktioniert. Bei einer Überprüfung der Funktion durch Ausgabe der beiden Werte (echo "*".$Rechte."/".$strMenu."*<br>"), die bei der IF-Abfrage verwendet werden, gab es z.B. die Ausgabe: *nachrichten/nachrichten*. Somit sind nach meinem Verständnis beide Werte identisch, was ja auch durch Funktionieren der Abfrage in PHP 1.5.6 bestätigt wird. In PHP 5.2.0. komme ich jedoch nie in den True-Zweig der IF-Abfrage (Zeile 15). Kann jemand erklären, was in PHP 5.2.0 anders ist, das die Abfrage zu einem Ungleich führt.