Domyślna wartość, Pytanie |
Domyślna wartość, Pytanie |
29.12.2010, 18:48:35
Post
#1
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) |
Czy istniej możliwość przywrócenia domyślnej wartości w danej kolumnie w bazie mysql po zamknięciu przeglądarki.
Coś w rodzaju auto DEFAULT. |
|
|
29.12.2010, 19:05:53
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
może napisz wprost co próbujesz zrobić? jeżeli chcesz, żeby pewne informacje były dostępne tylko na czas odwiedzin to masz sesję do tego
|
|
|
29.12.2010, 19:19:51
Post
#3
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) |
Mam ustawioną wartość domyślną w bazie danych na nieaktywny,kiedy uruchomie skrypt chcę zmienić na aktywny,po zamknięci przeglądarki ,automatyczny powrót do wartości domyślnej coś ala reset.Hmm nie wiem czy to możliwe?
|
|
|
29.12.2010, 19:21:40
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) |
No a nie możesz po prostu ustawić wartości z powrotem na nieaktywny?
Tak czy siak jakieś zapytanie do bazy musisz wykonać więc nie widzę sensu szukania jakiejś dedykowanej funkcji. -------------------- |
|
|
29.12.2010, 19:26:20
Post
#5
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) |
Cytat No a nie możesz po prostu ustawić wartości z powrotem na nieaktywny? Po zamknięciu przeglądarki cokolwiek ustawić jest ciężko ,a wręcz niemożliwe. Próbuję się dowiedzieć czy sama baza posiada taką funkcję.
Ten post edytował Rid 29.12.2010, 19:27:00 |
|
|
29.12.2010, 20:28:07
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
to zamiast ustawiać status aktywny/nieaktywny, w bazie zapisuj ostatni czas aktywności i na podstawie tego ustalisz czy użytkownik jest online czy nie, możesz dawać aktualizację tego czasu przy każdym odświeżeniu strony, lub przy pomocy AJAXA tak często jak potrzebujesz np. co minutę
Ten post edytował tehaha 29.12.2010, 20:30:02 |
|
|
29.12.2010, 21:54:54
Post
#7
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) |
Cytat to zamiast ustawiać status aktywny/nieaktywny, w bazie zapisuj ostatni czas aktywności i na podstawie tego ustalisz czy użytkownik jest online czy nie, możesz dawać aktualizację tego czasu przy każdym odświeżeniu strony, lub przy pomocy AJAXA tak często jak potrzebujesz np. co minutę Z tego ,co piszesz ostatni zapis minus przesunięcie czasu np.15min -po 15minutach jeśli nieodświeżane aktywność upływa- to jest aktywność użytkownika -system ten zastosowałem ,ale u mnie ma służyć jako zabezpieczenie przed ponownym (kolejnym)zalogowaniem-w rezultacie zdaje to egzamin,do czasu jak użytkownik zamknie przeglądarkę-wtedy będzie musiał czekać ,aż okres aktywności minie aby, ponownie się zalogować. Updadate co minutę do bazy danych zbytnio obciąży bazę mysql. W rezultacie myślę ,nad w/w rozwiązaniem ,które wydaje mi się najbardziej optymalne i najłatwiejszym do wykonania i ile to jest możliwe,czy baza mysql sama w sobie może powrócić do wartości default(domyślnej) Ten post edytował Rid 29.12.2010, 21:55:48 |
|
|
29.12.2010, 22:11:11
Post
#8
|
|
Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) |
A skąd niby baza danych ma wiedzieć, że ktoś zamknął przeglądarkę, kiedy ona nawet nie wie, że istnieje coś takiego, jak przeglądarka? Podstawy działania aplikacji PHP się kłaniają.
Do problemu zabierasz się od niewłaściwej strony. Nie prościej po prostu ustawić ciastko z określonym czasem aktywności? Wtedy nawet wyłączenie i ponowne włączenie przeglądarki nie usunie go, a użytkownik dalej będzie mieć swoją niewylogowaną sesję. -------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
29.12.2010, 22:21:43
Post
#9
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) |
A więc niemożliwe.Jeśli chodzi o podtrzymanie sesji przez cookies to , już to zrobiłem ,mam zabezpieczenie przed przechwyceniem sesji ,jeszcze próbuje zrobić zabezpieczenie przed kolejnym zalogowaniem z innego komputera i innej przeglądarki.Nie chciałbym ,aby użytkownik albo użytkownicy miał/mieli prawo do zalogowania na jedno konto z wielu lokacji.
|
|
|
29.12.2010, 22:39:20
Post
#10
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 8 Dołączył: 10.11.2010 Skąd: Polska,Katowice Ostrzeżenie: (0%) |
no to ja już tak chcesz. To w cookies masz session_key, w bazie masz tabela np.
session_key session_ip session_time session_browser i sprawdzasz co do: Cytat Nie chciałbym ,aby użytkownik albo użytkownicy miał/mieli prawo do zalogowania na jedno konto z wielu lokacji. Dajesz w bazie kont kolumne lockaccount i przy logowaniu sprawdzasz czy ostatnie ip jest równe ip klienta. Co do wielu lokacji - albo przy logowaniu usuwa ostatnia sesje lub wyswietla komunikat ze konto jest zalogowane. Lepsze 1 rozwiązanie Ten post edytował kulczycki 29.12.2010, 22:41:14 |
|
|
29.12.2010, 23:07:15
Post
#11
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) |
Cytat Dajesz w bazie kont kolumne lockaccount i przy logowaniu sprawdzasz czy ostatnie ip jest równe ip klienta. Co do wielu lokacji - albo przy logowaniu usuwa ostatnia sesje lub wyswietla komunikat ze konto jest zalogowane. Lepsze 1 rozwiązanie 1 rozwiązanie nie jest dobre,co sieciami osiedlowymi -wielu użytkowników jedno IP -jednego użytkownika wpuścisz ,resztę poblokujesz ,co do drugiego rozwiązania nie wiem za bardzo, o co chodzi z tym usuwaniem sesji. |
|
|
30.12.2010, 00:10:51
Post
#12
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 8 Dołączył: 10.11.2010 Skąd: Polska,Katowice Ostrzeżenie: (0%) |
Co do 1 rozwiązania dałem Ci przykładowo - zawsze można rozwinąć. Co do drugiego. Session_key i dane o sesji trzymasz w tabeli w bazie. Wiec jesli ktoś się loguje na usera który ma aktywną sesje to się nie zaloguje, lub po prostu wywala tą osobę/połączenie które ma aktywną sesje.
account: acc_id username session: acc_id session_key session_time session_ip session_browser Teraz mniej więcej rozumiesz ? Lockaccount się stosuje jako dodatek, i każdy klient może sam sobie to nałożyć (jeśli ma np stałe ip i wie że jest sam w sieci). Jeśli ktoś jest w sieci osiedlowej nie po blokuje nikogo bo przecież mają te same ip. Ten post edytował kulczycki 30.12.2010, 00:12:52 |
|
|
30.12.2010, 00:33:48
Post
#13
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) |
Dziękuję za zainteresowanie!!Nie wiem może ja coś,źle robię ale za każdym razem Sesion_key się zmienia,jedyny zapis do bazy odbywa się poprzez Update.W moim przypadku wiąże się to z:
,a chciałbym uzyskać efekt odwrotny.Jakoś nie mogę sobie z tym poradzić |
|
|
30.12.2010, 00:41:58
Post
#14
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 8 Dołączył: 10.11.2010 Skąd: Polska,Katowice Ostrzeżenie: (0%) |
Cytat Nie wiem może ja coś,źle robię ale za każdym razem Sesion_key się zmienia,jedyny zapis do bazy odbywa się poprzez Update .Session_key musi być stały podczas sesji. Session_key tworzysz wyłącznie podczas próby zalogowania jeśli wszystkie warunki się zgadzają. Podczas odświeżania strony podbijasz tylko session_time na aktualny czyli time(). Cytat a chciałbym uzyskać efekt odwrotny.Jakoś nie mogę sobie z tym poradzić Powiedzmy sobie że są dwie tabele account i account_session. W skrócie wyglądają one tak account: account_id username passwrod account_session: account_id session_key session_time session_ip session_browser I przykładowo 1 klient się loguje wszystkie warunki się zgadzają. Aktywnej sesji dla danego użytkownika nie ma, to dodajesz wpis do tabeli account_session. Teraz przychodzi drugi klient i chce się zalogować na tego samego użytkownika (Po loginie sprawdzasz jego account_id i sprawdzasz w account_session) Podczas sprawdzania warunków musisz zrobić jeden tak by sprawdził czy dla danego użytkownika jest sesja i czy jest ona aktywna czyt. session_time (session_time >= ( time() - 900 ) dla 15minut). Jesli jest wyświetla komunikat że jest aktywna sesja i nie można się zalogować, jeśli nie ma aktywnej sesji jedzie dalej z logowaniem i tworzysz sobie session_key i dodajesz wpis do tabeli account_session. Ten post edytował kulczycki 30.12.2010, 00:44:49 |
|
|
30.12.2010, 14:51:20
Post
#15
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) |
A skąd niby baza danych ma wiedzieć, że ktoś zamknął przeglądarkę, kiedy ona nawet nie wie, że istnieje coś takiego, jak przeglądarka? Podstawy działania aplikacji PHP się kłaniają. Czytałem właśnie o wyzwalaczach -w bazie dany oracle jest napisane Cytat wyzwalacze wykonywane są gdy struktura bazy (struktura tabeli) jest modyfikowana oraz gdy użytkownik łączy się lub rozłącza z bazą danych. więc możliwa jest modyfikacja bazy po rozłączeniu z bazą danych ,nie wiem jak z mysql.Nie za dużo pisze się tutaj o wyzwalaczach:( |
|
|
30.12.2010, 14:54:02
Post
#16
|
|
Grupa: Moderatorzy Postów: 6 070 Pomógł: 860 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
więc możliwa jest modyfikacja bazy po rozłączeniu z bazą danych ,nie wiem jak z mysql Tylko weź pod uwagę, że w większości przypadków skrypt działa tak: łączy się z bazą, pobiera dane, rozłącza. Czyli w efekcie będziesz miał zdarzenie rozłączenia z bazą danych w momencie wczytania strony, a nie fizycznego jej opuszczenia przez użytkownika. Do tego mylisz nieco pojęcia: użytkownik strony to nie użytkownik bazy danych. Przecież wszyscy użytkownicy strony korzystają z tych samych danych dostępowych do bazy danych (login + hasło) zapisanych gdzieś w konfiguracji. |
|
|
30.12.2010, 15:01:53
Post
#17
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 8 Dołączył: 10.11.2010 Skąd: Polska,Katowice Ostrzeżenie: (0%) |
Cytat więc możliwa jest modyfikacja bazy po rozłączeniu z bazą danych ,nie wiem jak z mysql .Nie za dużo pisze się tutaj o wyzwalaczach:( Po to masz session_time i sprawdzasz czy aktywne dla wszystkich mozesz wykonywac query co np. 5 minut.
Ten post edytował kulczycki 30.12.2010, 15:02:48 |
|
|
30.12.2010, 15:12:48
Post
#18
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) |
Wszystko jest dobre w twojej metodzie,jednakże badanie aktywności w oparciu o czas ,ma swoją wadę.Jeśli użytkownik ,się wyloguje wszystko jest ok,a co jeśli użytkownik zamknie przeglądarkę?W bazie danych pozostanie on aktywny,do upłynięcia czasu aktywności ,przez ten okres nie będzie mógł się ponownie zalogować.
Temat także opisałem:tutaj Ten post edytował Rid 30.12.2010, 15:17:08 |
|
|
30.12.2010, 15:23:08
Post
#19
|
|
Grupa: Moderatorzy Postów: 6 070 Pomógł: 860 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
Istnieje jeszcze jedna metoda: co X sekund wysyłaj AJAXem żądanie do skrypty, który będzie aktualizował czas ostatniej "akcji" użytkownika. Nawet jeśli będzie siedział na stronie i ją długo czytał (nie przechodzi na kolejne strony) to będziesz miał o tym informację.
Pewnie padnie: "ale ja nie znam AJAXa" więc: jQuery.ajax() |
|
|
30.12.2010, 20:26:45
Post
#20
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) |
Wpadłem na pomysł-jak sprawdzić aktywność na stronie i nadać status użytkownika aktywny/nieaktywny.
Większość osób wizualną część swojej strony tworzy na podstawie szablonów CSS-czyli tzw divach-ja również. W divach(blokach) umieszczane są elementy,tła do późniejszej graficznej obróbki. Div także obsługuje zdarzenia: .Na podstawie tych zdarzeń ,możnaby ustalić aktywność.Co o tym Sądzicie??Chyba niezła metoda?? |
|
|
Wersja Lo-Fi | Aktualny czas: 23.04.2024 - 11:29 |