dzajko
4.03.2012, 10:23:41
Witam
Korzystam z klasy sesja, która ustanawia mi sesje użytkowników.
Generalnie wszystko jest ok poza dostepem do klasy gdy korzystam z AJAX.
Za pomocą JS wysyłam zapytanie do pliku PHP, gdzie potrzebne mi są dane z klasy sesji np. id użytkownika i tu problem, klasa zawsze zwraca użytkownika anonimowego mimo zalogowania.
Jak uzystkać dostęp do klasy sesji, którą tworze przy ładowaniu strony z innych plików?
Musisz sprawdzić czy request został wysłany przez ajax
function is_ajax ()
{
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND
$_SERVER['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest") {
return true;
}
else
{
return false;
}
Jeśli będzie true wczytaj klasę od sesji raz jeszcze, bo ajax odwołuje się do pliku na świeżo i nie widzi nic poza nim.
mortus
4.03.2012, 13:27:13
@!*!: Może niezbyt trafnie to ująłeś pisząc "wczytaj klasę od sesji jeszcze raz". Nie wiesz przecież, jak ta klasa sesji wygląda, a ponowne jej zainicjowanie może spowodować utworzenie nowej sesji lub choćby usunięcie aktualnych danych (dlatego autor powinien pokazać kod, jakim się posługuje). Kod który podałeś nie zawsze zadziała, zwykłe/standardowe żądanie XMLHttpRequest nie przesyła nagłówka HTTP_X_REQUESTED_WITH. Wtedy trzeba ten nagłówek dopisać lub skorzystać z innej metody, jak np. przekazanie rodzaju żądania w adresie URL. Nie ma z tym problemów, jeśli korzystamy z większości współczesnych bibliotek JavaScript.
@autorze: Niemniej jednak chodzi właśnie o to, że w skrypcie, który próbujesz wykonać za pomocą AJAX-a nie została włączona obsługa sesji. Żeby jednak określić, co jest nie tak, trzeba zobaczyć kod.