Anzeige

Session Abruf-Problem


EuroCent

KlappStuhl 2.0
#1
Hallo zusammen,

aktuell haben wir folgendes Problem:
wir bauen verschiedene Seiten (Tools) mit unterschiedlichen Menüs auf, dass ist auch gewollt.
Der Menü Aufbau wird durch ein Berechtigungskonzept abgebildet.

Das Problem ist nun, dass wir wenn Wir eine Seite (Tool) aufrufen, muss man quasi 1, 2 mal Aktualisieren damit das Menü vollständig angezeigt wird.

session_start();

wird als erstes Übergeben, damit wir dann auf die Session-Variablen zugreifen können.

Das Menü wird via require_once eingebunden.

Index.php
PHP:
<?php
session_start();

require_once 'berechtigungen.php';
require_once 'menu.php';
?>
die menu.php
PHP:
<ul class="nav navbar-nav">
    <li role="presentation"><a href="#"><span class="glyphicon glyphicon-home"></span> Startseite</a></li>
    <?php
    if ($_SESSION['SESSIONVARIABLE'] == 1) {
        ?>
        <li role="presentation" class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="#">
                <span class="glyphicon glyphicon-cog"></span><span class="caret"></span></a>
            <ul class="dropdown-menu">
                <li><a href="#">Link 1</a></li>
                <li><a href="#">Link 2</a></li>
                <li><a href="#">Link 3</a></li>
            </ul>
        </li>
        <?php
    }
    ?>       
</ul>
Das Menü wird auch geladen bis zur Startseite.
Das was dann danach kommt wird gar nicht erst ausgeführt, erst wenn ich ein Reload der Seite, durchführe. :(

in der Berechtigung.php wird einfach nur die $_SESSION['SESSIONVARIABLE'] auf 1 gesetzt.

Hat hier einer eine Idee? :)
 

merzi86

Erfahrenes Mitglied
#2
Hast du mal Probiert beim ersten Aufruf ein var_dump auf $_SESSION durchzuführen?
Sind da andere Felder in der Session bereits gesetzt und nur die Entsprechende "SESSIONVARIABLE" nicht?
 

EuroCent

KlappStuhl 2.0
#3
Ja die anderen Sessions werden geschrieben aber es wird nicht darauf angewendet :/

Ich nutze var_dump nicht sondern eher printf() Inbegriff mit print_r :)

Wie gesagt, rufe Ich die Variable auf bekomme Ich auch den Wert, nur wird dieser nicht auf die Nav angewandt.

In der Menü.php prüfe Ich ob die Variable gesetzt ist und gebe dann die weiteren Links aus.

Das Menü wird angezeigt, auch den Wet bekomme Ich, allerdings nicht die Links die eigentlich kommen sollten... :(

Die kommen erst wenn Ich die Seite Reloade was irgendwie total Sinn ist, wenn die Variable in der Session doch gibt und mir den Wert aus liefert :(

Kann es auch ein Apache Problem sein?
 

merzi86

Erfahrenes Mitglied
#4
Nein Apache als Ursache kannst du ausschließen, da der Apache hier für den Aufruf des Interpreters zuständig ist und danach Rückgabe der Ausgabe des Interpreters an den Browser (ja ich weiß diverse andere Funktionen können noch mit aktiv sein in Apache, welche aber jetzt für diese Betrachtung uninteressant sind).

Im zweifelsfall kannst du ja auch die Datei auch mal direkt an den Interpreter senden, indem du die Datei bzw. die Index php direkt angibst.
z.B. so:
Bash:
php /path/to/index.php
Zu welchen Zeitpunkt hast du den Wert der Sessionvariable dir ausgeben lassen?
In der Variable steht auch 1 und nicht true?
 

EuroCent

KlappStuhl 2.0
#5
Okay... da bin Ich schon mal beruhigt :)

Den Wert lass Ich mir nach dem setzen der Variable ausgeben, vorher macht es keinen Sinn. :)

Die Variable gibt als String entsprechend die 1 aus :)

Das komische ist ja, dass er die Variable die drin steht mir ja auch ausgibt, sei es die Zahl 1 oder sei es dabei den Wert „Okay“...

Allerdings setzt er das Menü nicht weiter fort, erst beim reload :/

Kann es mit dem Include/require zusammen hängen? Wobei Ich mir das nicht vorstellen kann, da er ja die Variable kennt.
Ich werd aber noch mal schauen ob es einfach nur an der Session selbst liegt.

Komisch ist, wenn Ich eine andere Session nehme die es bereits gibt, dann nimmt er das Menü vollständig ohne das Ich reloaden muss oO

Wahrscheinlich muss Ich mir noch mal genauer anschauen wo das Problem genau sitzt :)
 

EuroCent

KlappStuhl 2.0
#6
Also scheinbar hab Ich den kleinen Fehler schon einmal gefunden.

in der berechtigung.php lege Ich die Session Variable an.
Diese kennt die index, aber nicht die menu.php... Warum?

Wenn Ich die Session Variable aus der berechtigung nur in die Menu lege, dann kennt es das Menu und die Index.

Warum wird hier unterschieden?
Gibt es dazu eine logische Erklärung?
Liegt es an der php.ini oder woran kann es liegen, dass es solche unterschiede macht? :(
 
Anzeige
Anzeige