PDA

Zobacz pełną wersję : Komponent i sesje



panto
22-03-2006, 19:07
Witam serdecznie

Piszę komponent pod Joomlę i nie bardzo wiem, jak mogę przypisać zmienną przechowywaną za pomocą sesji. Z tego, co się zorientowałem mogę ją odczytywać w za pomocą polecenia: mosGetParam(), ale jak mogę ją ustanowić? Będę wdzięczny za podpowiedź.

Pozdrawiam
Panto

nexus246
22-03-2006, 20:17
Mosgetparam służy do pobierania zmiennej przekazywanej przez POST lub przez GET.

A do sesji to tak możesz pisac:
//tworzy instancje
$my_session = new mosSession(session_id());
//pobiera z GET lub POST
$d = mosGetParam($_REQUEST,'d',"");
//ustawia zmienna sesyjna
$my_session->set("nazwa",$d);
//pobiera zmienna sesyjna
$my_session->get("nazwa", "wartosc_domyslna")


[edit]

sory, za pomoca mosGetParam tez mozna pobrac wartosc zmiennej sesyjnej :)

panto
23-03-2006, 01:03
$my_session = new mosSession(session_id());

1. To rozwiązanie niestety nie działa. Jako parametr konstruktora klasy mosSession przekazywałem: 1) zmienną $session_id, jak również zmienną $db (tak jest w definicji konstruktora tej klasy) i niestety nie pomogło. Być może coś robię nie tak, choć nie wydaje mi się. Czy mógłbyś mi podać jakiś przykładowy komponent z takim rozwiązaniem?

2. Szperałem i przed chwilką znalazłem coś, co może komuś się przydać: http://forum.mamboserver.com/showthread.php?t=29389.

Pozdro
Panto

nexus246
23-03-2006, 09:22
faktycznie zapomniałem session_start() :)
Trzeba pamiętać że to wywołanie musi być przed wysłaniem jakichkolwiek nagłówków HTTP.

daniofantasy
18-02-2008, 07:05
można tego uniknąć, stosując buforowanie wyjścia, choć nie zawsze działa...
ob_start();
session_start();
i wtedy wywołujesz nową sesję.
Jak są problemy - to należy zrobić podgląd źródła - jakieś echo przed ob_start() i patrzeć się, co tam jest - jak jest choćby pusta linia, należy ją usunąć (oczywiście do testów, czy po usunięciu linii wszystko działa należy usunąć wcześniej wspomniane echo ;)