![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Na każdej stronie (prócz login.php) dodaję taki kod:
Czyli odczytuję dane sesji do zmiennej $sessiondata i aktualizuje obecny czas w sesji (session_time). Funkcja append_sid dodaje do adresu identyfikator sesji. Loguję się za pomocą tego kodu:
Logowanie działa na takiej zasadzie: Zamiast usuwać sesję i tworzyć nową użytkownika zalogowanego, to poprostu uaktualniamy wartość sesji poprzez wywołanie $session->write($ses) na tym identyfikatorze. Logowanie działa wporządku, nawigacja po stronie tak samo. Jedyna rzecz, która nie działa to wylogowywanie (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Chcę aby było to na takiej samej zasadzie - pole session_value przy odpowiednim SID ustawiam jako puste ($session->close()) a następnie wracam na stronę główną z tym samym identyfikatorem ($session->session_id). Niestety po powrocie na stronę otrzymuję nowy identyfikator, przez co sesja użytkownika dalej jest w bazie. Proszę o pomoc!! |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
próbuję i próbuję ale nic.
a co masz na myśli pisząc: Cytat Niestety po powrocie na stronę otrzymuję nowy identyfikator, przez co sesja użytkownika dalej jest w bazie. Ale jak robisz close to kasujesz sesję z bazy i zakładasz nową o tym samym ID. Trochę to dziwne. NIe kumam. Pozatym nie lepiej zrobić UPDATE i wyczyscic tylko zbędne pola? Po co aż dwa zapytania?
|
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
1. wracam na stronę i mam już $_GET['sid'] i w warunkach (drugi kod) nie powinno utworzyć nowej sesji, tylko zaktualizować tą z SID pobranym z $_GET... jak robie F5 po zalogowaniu się, to normlanie aktualizuje czas...
2. Próbując zrobić UPDATE i ustawiając SET SESSION_VALUE='' wywala mi błąd mysql... |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
1) tyle to ja wiem. czytać umiem. Ino logiki nie kumam. Piszesz że wracasz na stronę głównę i masz inny identyfikator. A ty jak wracasz to nie podajesz w URL tego identyfikatora? Wszędzie podawaŁęs tylko teraz nie?
2) Skoro ci wywała błąd sql znaczy ze masz błąd sql (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) To trzeba to poprawić a nie generować dwa inne zapytania. A gdzie optylny kod? Pokaz tego update to może coś poraadzimy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
1) header("Location: index.php?sid=".$session->session_id);
tak wracam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) więc identyfikator jest przekazywany dalej 2)
Coś w tym rodzaju... |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
1) hmm, dziwne. A po przejściu na tą stronę główną to dalej jest w url ten stary sid? Bo ty nowy sid nadajesz tylko w start() gdy nie ma starego ($_GET['sid'] nie istnieje) i tylko tam ma prawo się zmienić.
2) hmm, zapytanko wydaje się być ok jedynie ten limit jest zbędny 3) (nowe (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) robisz wiele zbędnych rzeczy w kodzie jak np.: Skoro wszesdleś w waruenk to $sid bedzie mialo jakąś wartość i nie trzeba sprawdzać czy jest jakaś, a więc:
|
|
|
![]()
Post
#7
|
|
Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
1. No właśnie po przejściu na stronę główną w adresie mam nowy ID, chyba coś nie tak z instrukcją ale to niemożliwe...
2. OK, podmieniłem, usunąłem LIMIT i działa. 3. Poprawiłem, faktycznie kombinowałem jak koń pod górę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Nadal problem z 1! Już wiem gdzie był błąd (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) append_sid dodawał wszędzie ?sid= (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i dlatego nie przekazywało identyfikatora (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
1) w close() nie zmieniasz identyfikatora. Może coś źle go potem przekazujesz. Możesz pokazać kod tam gdzie używasz close (wylogowanie)
2) No to popraw jeszcze to: te dwa zapytania to mozna spokojnie jednym zrobić. przecież ta sama tabela , ten sam warunek tylko pola inne |
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Błąd rozwiązany (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Info w poście powyżej (moim) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Klasę udostępnie na forum Skrypty php... można zamknąć i usunąć..
@nospor: dzięki za wytrwałość przy moim problemie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
hihi, nie ma za co. flaszkę prześlij pocztą (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif)
tylko popraw nową 2) |
|
|
![]()
Post
#11
|
|
Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
@nosport sorki, że Cię tak ciągle męczę ale nie mogę sobie poradzić z dodaniem do tych sesji opcji zapamiętaj mnie. Wiem kiedy ustawić cookie ale nie potrafię dodać obsługę cookie do tej klasy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
hejka, weekendowa przerwa, ale już jestem (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Za bardzo nie rozumiem o jakiej obsłudze mówisz. Improwizuję: Jak gościu wciśnie zapamiętaj mnie, ustawiasz mu cookie z której wartością będzie sid (z racji że ty te sid w bazie trzymasz). Potem przy starcie sktyptu, gdy nie masz sid w url, zczytujesz czy jest Twoje cookie. Jak jest to je sczytujesz i patrzysz czy masz takie sid. Jak tak to oki, a jak nie to generujesz nowy sid jak dotej pory. pozdro |
|
|
![]()
Post
#13
|
|
Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Już sobie poradziłem z COOKIE'sami (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Sprawdzam na stronie głównej czy jest cookie i czy nie ma session_id w adresie. Jeżeli zwraca mi TRUE to wtedy przeładowuję stronę, gdzie w GET przesyłam identyfikator sesji i już normalnie mogę pracować (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Dziękuję za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#14
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
hihi, rozumiemy się bez słów (podobna logika myślenia).
Aczkolwiek niepotrzebnie chyba przeładowujesz stronę gdy sid jest w ciastku. Skoro masz sid to Twój obiekt sesji ma wszystkie niezbędne dane i nie ma potrzeby go przeładowywać aby sczytał z url. Kolejne linki rób już z url z sid, ale tem jest niepotrzebny moim zdaniem. |
|
|
![]()
Post
#15
|
|
Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
A dokładneij to zczytywanie wygląda tak:
Mam teraz taki kod, append_sid sprawdza czy istnieje session_id z klasy $session jeżeli tak to go dodaje a jeżeli nie (jest cookie) to ustawia SID z cookies'a |
|
|
![]()
Post
#16
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Uważam że ten kod (trochę zmieniony) powinieneś dodać do metody start() i nie przeładowywać strony i nie niszczyć sesji. Niepotrzebnie tutaj ciągle jest strona przeładowywana.
|
|
|
![]()
Post
#17
|
|
Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
No to może podasz mi jak umieścić tą funkcję w metodzie start() ? Bo ja nie wiem (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
|
|
|
![]()
Post
#18
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
myslalem o czymś takim (mogą być male literówki):
czy to nie będzie spelnialo Twojego oczekiwania? |
|
|
![]()
Post
#19
|
|
Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
No może być ciekawe (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Jednak zastanawiam się jeszcze nad bezpieczeństwem ciastek. Nie wiem czy sprawdzać pochodzenie ciasta (identyfikacja przeglądarki) czy ustawiać dodatkowe z datą utworzenia COOKIE, żeby nikt nie podszył się pod innego użytkownika (nie utworzył sobie cookie). Co o tym sądzisz?
|
|
|
![]()
Post
#20
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
hmmm, no nie wiem. Możesz tworzyć cookie z sumą kontrolną dodatkowo jeszcze, która by była generowana np. z hasła. DOpiero jak to i sid bedą się zgadzały to wtedy będzie ok.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 17:41 |