2012-12-05 7 views
6

Ich habe ein Hauptverzeichnis mit dem Namen System mit einem Unterverzeichnis namens Subsystem. Meine Sitzung aus dem Hauptverzeichnis funktioniert nicht im Unterverzeichnis.Funktioniert eine PHP-Sitzung in Unterverzeichnissen?

Wenn ich echo session_save_path(); in beiden Ordnern, zeigen sie mir .

Dann habe ich versucht, session_save_path("../tmp"); in meinem Unterverzeichnis zu setzen, aber es zeigt mir "This webpage has a redirect loop".

session.php in System Verzeichnis:

<?php 
session_start(); 

if (!($_SESSION['uid'])) 
{ 
    header("Location:index.php"); 
} 
else 
{ 
    $_SESSION['uid'] = $_SESSION['uid']; 
} 
?> 

session.php in Sub-Systemordner:

<?php 
session_save_path("../tmp"); 
session_start(); 

if (!($_SESSION['uid'])) 
{ 
    header("Location:index.php"); 
} 
else 
{ 
    $_SESSION['uid'] = $_SESSION['uid']; 
} 

>

Ich habe alle über gegoogelt, aber ich kann immer noch nicht bekommen? arbeiten.

+0

@TheSmose, ja, kommentiert unter Ihrer Antwort;) – Newbie

Antwort

1

Das Verzeichnis hat keinen Einfluss auf den Sitzungsstatus (alle Verzeichnisse einer bestimmten Apache-PHP-Website greifen in einer Standardkonfiguration auf dieselbe Sitzung zu). Sie sollten session_save_path() nicht verwenden müssen.

Ich denke, dass das Problem in Teil ist, dass Sie "uid" auf sich selbst setzen ($_SESSION['uid'] = $_SESSION['uid'];) - daher möglicherweise nie tatsächlich auf einen Wert festlegen - und möglicherweise unbegrenzt umleiten, wenn es nicht festgelegt ist.

Ich schlage vor, diesen einfachen Test, um sicherzustellen, dass Ihre Sitzungen sind in der Tat arbeiten:

/session_set.php

<?php 
    session_start(); 
    $_SESSION['uid'] = 123; 

/sub_dir/session_get.php

<?php 
    session_start(); 
    echo $_SESSION['uid']; 
+0

dieser Test funktioniert, der Unterordner kann die Sitzung aus dem Hauptordner abrufen. Meine Sitzung wird in login.php erstellt, nachdem sich der Benutzer erfolgreich eingeloggt hat. So übergebe ich die Session durch session.php im Hauptordner. aber mein Unterordner bekommt die Sitzung immer noch nicht :( – Newbie

+0

Übrigens, ($ _SESSION ['uid'] = $ _SESSION ['uid'];) funktioniert einfach unter den Seiten im Hauptverzeichnis. – Newbie

+0

@Newbie - Es wird überall gut funktionieren, aber es tut nichts. Die Probleme, die Sie haben, sind nicht auf die Sitzung zurückzuführen. Es gibt ein Problem woanders in deiner Logik. Ich schlage vor, Sie erstellen eine neue Frage, die all Ihre Sitzungslogik veröffentlicht, und lassen Sie jemanden herausfinden, wo der Fehler ist. –

0

Eine Sitzung erstellt eine Datei in einem temporären Verzeichnis auf dem Server, in dem die Sitzungsvariable registriert ist Fähigkeiten und ihre Werte werden gespeichert. Diese Daten werden während des Besuchs für alle Seiten auf der Website verfügbar sein.

Der Speicherort der temporären Datei wird durch eine Einstellung in der php.ini-Datei session.save_path bestimmt. also bitte diesen Weg.

Auch [session-save-path()] [1] Holen und/oder setzen Sie den aktuellen Sitzungsspeicherpfad.

Ich denke, du musst diese Zeile nicht schreiben und überprüfen Sie Ihre php.ini für den richtigen Pfad.

für Sitzung fand ich einige nützliche Artikel http://www.tutorialspoint.com/php/php_sessions.htm

Dank.

+0

in php.ini (im public/html-Ordner) geupdated, fand ich session.save_path = "/ tmp". dann sollte ich tun? ich frage mich, ist es etwas falsch mit dem seission_save_path oder nicht. – Newbie

Verwandte Themen