![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 24.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
mam taki problem - jest sobie system do którego logują się osoby z różnych części świata - autoryzacja w php ustawia czas istnienia ciasteczek, weryfikuje też czas zalogowania w bazie mysql. dla systemu jest zdefiniowany w php default timezone.
niestety dla użytkowników z niektórych stref czasowych następuje za szybko wygaśnięcie zalogowania (pewnie cookie się przedawnia bo ma niewłaściwą datę), użytkownicy narzekają też na to, że np formularze pokazują domyślnie wypełnione pole (wypełnione za pomocą php) bieżącego czasu niezgodnei z ich strefą czasową. chę to jakoś uporządkować aby działało to uniwersalnie i żeby np użytkownik dla swojego konta wybierał swoją strefę czasową. coś takiego widziałem w phpbb, tylko, że tam po prostu jest dodawany +/- ilosc minut ja chciałym użyć obiektów, które są dostępne w php 5.2 $dtzone = new DateTimeZone($timezone); $dtime = new DateTime($time,$dtzone); tylko jak je optymalnie zastosować - aby dla każdego użytkownika była ta sam długośc istnienia ciasteczka definiowanego w php - aby były poprawnie wyświetlane daty, czas wiem, ze w takim przypadku chyba lepiej wszystkie daty w bazie danych notować w postaci timestamp ale wolalbym normalne daty. czy ktoś mógłby przedstawić jakieś optymalne rozwiązanie obsługi stref czasowych - tzn jak zapisywać daty, na którym etapie je przekształcać, jak radzić sobie z generowaniem cookie - czasem isnienia cookie, generowaniem defaultowych dat/czasu np dla formularzy gdy mamu userów z różnych stref czasowych |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
GMT dla wszystkich i po kłopocie..
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 307 Pomógł: 37 Dołączył: 9.11.2010 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Chyba nie do końca rozumiem w czym dokładnie leży problem ? W bazie trzymasz strefę dla każdego użytkownika. Przy zalogowaniu wrzucasz też tę strefę do ciastka. Używasz tych danych do wypełniania pól formularzy z uwzględnieniem strefy czasowej użytkownika. Ciastko u użytkownika musi mieć date trwania ustawioną z uwzględnieniem tych danych tak aby nadal było to na przykład 24H czasu, ale licząc cokolwiek u siebie w serwisie używasz ich tak aby powrócić na czas lokalny serwera. Może podaj jakiś dokładniejszy przykład bo nigdy nie miałem z tym jakiegokolwiek problemu u Siebie.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 24.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
przykład - ofert wstawiane przez userow
uzytkownik w USA wstawia wedlug swojego czasu np start oferty o 8 rano - wybiera to z formularza. serwer ma ustawiony czas wewnetrzny wedlug strefy w europie centralnej (pobierajac cos z bazy bede uzywal tego czasu europa centralna). rozumiem, ze w tym przypadku: - przy zapisie do bazy musze przeksztalcic czas z usa na czas europy srodkowej - a przy edycji formularza znowu wyswietlac czas przeksztalcajac na ten z USA aby to co widzi user z USA bylo dla niego poprawne? czy jest jakies prostsze rozwiązanie? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 307 Pomógł: 37 Dołączył: 9.11.2010 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Ale co dokładnie jest nie prostego w tym rozwiązaniu, przecież ta cała 'konwersja' wiąże się z 1 linią kodu. Zapewne można to robić inaczej, tylko niestety nie sądzę że można prościej.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 24.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Ale co dokładnie jest nie prostego w tym rozwiązaniu, przecież ta cała 'konwersja' wiąże się z 1 linią kodu. Zapewne można to robić inaczej, tylko niestety nie sądzę że można prościej. chodzi o to, że trzeba tego używać przy każdym miejscu gdzie pracujemy nad datami, latwo o bład przy wielu miejscahc gdzxie tego się używa (IMG:style_emoticons/default/smile.gif) sprawdzałem jak to wyglada dla różnego typu open source cms i w zasadzie jest tam różnie, co moduł to jest to uwzględniane lub nie jest raz jest używan funkcja date() a raz gmdate() rozumiem, że lepiej wszystko zapisywać jako gmdate() a tylko przy wyswietlaniu zmieniac odpowiednio wartosci? poza tym warto zdefinioować dla całago systemu wybór domyslnej strefy czasowej + strefa czasowa dla każdego z userów indywidualnie do wyboru. a co z funkcjami daty z mysql, np http://dev.mysql.com/doc/refman/5.5/en/dat...ml#function_now - one tez powinny mi np do zapisu danych ustawiac wartosci z GMT a chyba zwracaja czas zgodny z ustawieniem serwera mysql? właśnie znalazłem taki artykuł http://www.sjhannah.com/blog/?p=113 gdzie jest kilka dróg do wyboru obsługi timezone. najchętniej użył bym MySQL CONVERT_TZ(), tylko nie wiem na ile często są problemy z dostępnością stref czasowych w konfiguracjhi mysql. Ten post edytował jwaldek 9.01.2012, 10:40:14 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 16:25 |