Nervenzusammenbruch wegen in_array

Soapp

Erfahrenes Mitglied
In einer PHP Datei steht:

checkrights("edit_roles");


Die Funktion dazu:

PHP:
function checkrights($right)
{
		if (isset($_SESSION['RIGHTS']))
		{
			if (!in_array($right,$_SESSION['RIGHTS']))
			{		?>
					<p>&nbsp;</p>
					<p>&nbsp;</p>
					<body id="hellgrau">
					<table width="60%" border="0" align="center">
					  <tr>
						<td><strong><?php die ("Sie haben keine Berechtigung für diese Aktion! 
						Wenden Sie sich an den Administrator.");?></strong></td>
					  </tr>
					</table>
					</body>
					<?php
			}


		} //if isset $_SESSION

else {echo "Sie sind nicht angemeldet !<p> Bitte gehen Sie zur <a href=/index.php>Hauptseite</a> und melden Sie sich dort an!";}

}


print_r($_SESSION['RIGHTS']) ergibt:

Array ( [0] => insert_edit_bla [1] => insert_edit_categories [2] => write_text [3] => write_onlinetext [4] => insert_edit_blubb [5] => insert_edit_fixfoxfertig [6] => insert_edit_value [7] => insert_edit_rules [8] => edit_owner [9] => edit_roles )

Problem: Es wird in diesem Fall angezeigt, dass man keine Berechtigung hat, obwohl ja
edit_roles im Array vorkommt.

HELP
 
Hallo!

Also an der Funktion liegt es jedenfalls nicht..... die funktioniert.
Bleiben also nur noch die Möglichkeiten dass checkrights("edit_roles") oder die Session nicht korrekt übergeben werden.

Testest Du das Script lokal und rufst es über localhost auf?
Dann rufe es mal über die IP auf..... denn zumindest der IE akzeptiert (aus welchen Gründen auch immer) keine Session-Cookies von localhost.
Andernfalls müsste die Session per URL übergeben werden, um auf die Session zugreifen zu können.

Gruss Dr Dau
 
Hallo!

Also an der Funktion liegt es jedenfalls nicht..... die funktioniert.
Bleiben also nur noch die Möglichkeiten dass checkrights("edit_roles") oder die Session nicht korrekt übergeben werden.

Testest Du das Script lokal und rufst es über localhost auf?
Dann rufe es mal über die IP auf..... denn zumindest der IE akzeptiert (aus welchen Gründen auch immer) keine Session-Cookies von localhost.
Andernfalls müsste die Session per URL übergeben werden, um auf die Session zugreifen zu können.

Gruss Dr Dau

Das Script liegt online.
Die Session ist ja da, sonst würde ja print_r($_SESSION['RIGHTS']) nicht funktionieren.
ODER ?
Es muss meiner Meinung nach da irgendwie bei in_array liegen.
Ich hatte auch schon versucht, das Session Array in ein normales Array zu kopieren, weil ich dachte,
es liegt am Session-Array. brachte aber auch nichts.

Wie kann ich denn jetzt weiter debuggen ?

GRÜBEL
 
Problem gelöst.

var_dump ($_SESSION['RIGHTS']) offenbarte, dass die Rechte mit einem Leerzeichen zum
Schluss im Array stehen (warum auch immer) .....


Danke für Bemühungen
 
Die Session ist ja da, sonst würde ja print_r($_SESSION['RIGHTS']) nicht funktionieren.
ODER ?
Ja und nein..... wenn Du print_r() auf Seite A ausgibst, heisst es noch lange nicht dass die Session auch auf Seite B verfügbar ist (ich kenne den Aufbau Deiner Seiten/Scripte nicht), dass wollte ich damit sagen. ;)

Wo das Leerzeichen herkommt, kann ich Dir so auch nicht sagen..... ich weiss ja nicht woher das Array kommt bzw. wie es erstellt wird.
Anscheinend hast Du das Problem aber ja schon gelöst.
 
Zurück