2012-12-05 9 views
6

Mam główny katalog o nazwie System z podkatalogiem o nazwie Subsystem. Moja sesja z głównego katalogu nie działa w podkatalogu.Czy sesja PHP działa w podkatalogach?

Kiedy I echo session_save_path(); w obu folderach, pokaże mi "/tmp".

Następnie próbowałem umieścić session_save_path("../tmp"); w moim podkatalogu, ale to pokazuje mi "This webpage has a redirect loop".

session.php w System katalogu:

<?php 
session_start(); 

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

session.php w folderze podsystem:

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

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

>

mam Googled wszystko się skończy, ale nadal nie mogę dostać? pracować.

+0

@TheSmose, tak, skomentował pod swoją odpowiedzią;) – Newbie

Odpowiedz

1

Katalog nie ma wpływu na twój stan sesji (wszystkie katalogi danej strony Apache-PHP będą miały dostęp do tej samej sesji w standardowej konfiguracji). Nie powinieneś używać session_save_path().

Wydaje mi się, że po części problem polega na tym, że ustawiasz "uid" na siebie ($_SESSION['uid'] = $_SESSION['uid'];) - dlatego potencjalnie nigdy właściwie nie ustawiasz go na wartość - i potencjalnie przekierowujesz w nieskończoność, jeśli nie jest ustawiony.

Proponuję ten prosty test, aby upewnić się, że sesje są w rzeczywistości pracuje:

/session_set.php

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

/sub_dir/session_get.php

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

to test działa, podfolder może pobrać sesję z głównego folderu. Moja sesja jest tworzona w login.php po pomyślnym zalogowaniu użytkownika. W ten sposób przekazuję sesję przez session.php w głównym folderze. ale mój podfolder nie dostanie jeszcze sesji :( – Newbie

+0

Nawiasem mówiąc, ($ _SESSION ['uid'] = $ _SESSION ['uid'];) po prostu działa dobrze pośród stron w głównym katalogu. – Newbie

+0

@Newbie - wszystko będzie działało dobrze, ale nic nie da. Problemy, które masz, nie są spowodowane sesją. W twojej logice jest problem. Sugeruję, aby utworzyć nowe pytanie, publikując całą logikę sesji i pozwolić komuś dowiedzieć się, gdzie jest błąd. –

0

Sesja tworzy plik w katalogu tymczasowym na serwerze, na którym zarejestrowana jest zmienna sesji ables i ich wartości są przechowywane. Te dane będą dostępne dla wszystkich stron w witrynie podczas tej wizyty.

Lokalizacja pliku tymczasowego jest określona przez ustawienie w pliku php.ini o nazwie session.save_path. więc plebiscyt sprawdź tę ścieżkę.

Również [session-save-path()] [1] Pobierz i/lub ustaw bieżącą ścieżkę zapisu sesji.

Myślę, że nie musisz pisać tej linii i sprawdź, czy plik php.ini zawiera poprawną ścieżkę.

dla sesji znalazłem kilka przydatnych towaru http://www.tutorialspoint.com/php/php_sessions.htm

Dzięki.

+0

w php.ini (w folderze publicznym/html), znalazłem session.save_path = "/ tmp". to powinienem zrobić? Zastanawiam się, czy coś jest nie tak z funkcją seesion_save_path, czy też nie. – Newbie

Powiązane problemy