adbacz
22.06.2011, 15:27:04
Zrobiłem logowanie za pomocą sesji a teraz chciałem dodać opcję zapamiętywania. Sesja standardowo jest ustawiona na 7200 a chciałem by zapamiętywała opcjonalnie na więcej niż 2 godziny. Poczytałem dokumentację CI i chciałem zamienić tamtą wartość za pomocą $this->config->set_item('sess_expiration', 86400). Niestety nie zmienia mi opcji - nadal jest standardowa wartość.
Najlepsze jest to, że po napisaniu dodatkowej funkcji, tam zmiana jest dokonywana. W construktorze zachodzi zmiana tej wartości a w dodatkowej funkcji jest wyświetlanie tej wartości już zmienionej a w funkcji logowania - nie.
Próbowałem już wszystkiego ale nic mi nie wychodzi, cały czas w tym logowaniu zostaje taka sama wartość. Mogę prosić o pomoc?
EDIT:
Znalazłem tymczasowe rozwiązanie. W pliku konfiguracyjnym zrobiłem instrukcję warunkową. I teraz przy konkretnym warunku zmienia wartość. Ale jak już pisałem jest to tylko tymczasowe rozwiązanie.
szok
29.06.2011, 08:40:18
Opcje zapamiętywania robi się w inne sposoby, zapisuje ciasteczko na komputerze np z jakimś ID i potem na tej podstawie tworzy aktualna sesje.
Nie zmienisz tej opcji przez config->set_item(), dlatego że sesja tworzy się na samym początku działania skryptu i zmienić się jej nie da.
Dając warunek w pliku konfiguracyjnym przeczy się dokumentacji i założeń frameworka. Tam mają być tylko tablice z konfiguracją i nic więcej.
Poczytaj w necie jak rozwiązany jest problem z zapamiętaniem użytkownika.
adbacz
1.07.2011, 09:49:22
No dobrze, rozumiem o co biega ale dlaczego w osobnej funkcji zachodzi zmiana a w funkcji logowania - nie? Wg mnie jest to conajmniej dziwne. Jeśli sesja tworzy się na samym początku skryptu to powinno się zmienić jej wygaśnięcie poprzez konstruktor, prawda? Przecież on zawsze jest uruchamiany na początku każdego skryptu a dopiero później właściwa funkcja.
Przecież PHP sesja ustawia na samym początku i nie można zmienić ustawień sesji w trakcie pracy programu, czyli generowania skryptu.
Konstruktor jest to klasa, a sesje w PHP a na pewno w CI są obsługiwane przez funkcje session_start(), poczytaj o sposobie działania sesji i jak to wszystko wygląda.
sesja tworzy się przed wczytaniem kontrolera a dopiero później ładowane są klasy kontrolera i tak to działa w każdym frameworku.
adbacz
2.07.2011, 11:40:20
Dziękuję, teraz wiem o co konkretnie biega. No cóż, moja wiedza kuleje... ;/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.