PDA

Zobacz pełną wersję : Modul logowania - zmienna



lutador
08-01-2008, 16:50
Witam,

chcialbym stworzyc nowy komponent ale tylko dla wybranych zalogowanych uzytkownikow. Nie bardzo moge znalezc gdzie joomla przechowuje sobie informacje o zalogowanym uzytkowniku.. czy gdzies w zmiennej sesji trzyma id usera czy jak to jest rozwiazane ?

pozdrawiam

Atom
16-01-2008, 16:23
w bazie danych

robdk
16-01-2008, 19:36
$my->id; - identyfikator id zalogowanego usera
$my->username; - login zalogowanego usera.. itd.
Oczywiście dane z bazy danych ale baza nie mówi kto jest w danej chwili zalogowany i komponent czy też moduł rozpoznaje właśnie ze zmiennej (tablica) globalnej $my.

Musisz oczywiście na początku skryptu zadeklarować zmienną globalną:

global $my;

lutador
18-01-2008, 15:48
dzieki Robdk za pomoc a moze wiesz jeszcze w jaki sposob przesylane sa dane wprowadzone do formularza ktory znajduje sie w user.html.php do funkcji znajdujacych sie w user.php ?

robdk
18-01-2008, 23:26
Przesyłasz metodą post lub get na swój moduł czy też komponent. Rozumiem, że user.php to jest główny plik komponentu i w nim robisz require_once do pliku user.html.php.
Nie wiem czy jasno to określiłem ale możesz poczytać jak zrobić komponent z pomocy (http://www.pomoc.joomla.pl/content/view/67/30/)

lutador
21-01-2008, 14:25
Nie wyrazilem sie chyba zbyt jasno o co mi chodzi w poprzednim poscie :/ Proboje rozbudowac istniejacy juz komponent do zarzadzania uzytkownikami. Zalezy mi zeby dodac dodatkowe informacje o uzytkownikach np date urodzenia. W pliku user.html.php jest formularz ktory rozbudowalem ale teraz nie wiem w jakis sposob zmienne sa przekazywane do pliku user.php i jak sie mam do nich odwolac zeby zapisac je w bazie.

robdk
21-01-2008, 23:28
Ja zrozumiałem ale widzę, ze nie bardzo rozumiesz zasadę działania tego komponentu. Głównym plikiem tego komponentu jest user.php i on robi całą robotę a tylko wstawia na wyświetlaną stronę odpowiednie fragmenty kodu HTML (dlatego ten drugi plik ma w nazwie html - bo przechowuje właśnie ten kod) i w zależności czy się logujesz, czy rejestrujesz czy też jesteś zalogowany to całą logikę działania zawiera właśnie plik user.php i on odwołuje się do pliku user.html.php i wyświetla na stronie dany fragment.
Parametry opisane przez ciebie obsługuje plik index.php (jest on wskazany jako odbiorca danych w formularzu) i on je przetwarza, więc nie jest możliwe obsłużenie nowych parametrów bez zmiany tegoż pliku.
Aby zrealizować to co zamierzasz nie wystarczy zmienić formularz ale trzeba utworzyć nową tabelę danych w bazie gdzie będą przechowywane te dane bo standardowa tabela joomli users nie posiada takich pól.
Ponadto w pliku user.php nalerzałoby zawrzeć całą logikę odbioru danych zastępując index.php a w formularzu wskazać odbiorcę na user.php wtedy odebrane dane można umieścić tam gdzie się chce...
Podobny manewr zrobiłem z modułem logowania który sprawdza czy dany user jest zalogowany w okresie np. 7 dni od rejestracji lub aktywacji konta, jeśli dłużej to nie jest logowany takie czasowe ograniczenie logowania... to tak pokrótce...
Niewiem czy jasno to opisałem...