![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 426 Pomógł: 1 Dołączył: 2.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Myśle nad stworzeniem własnej obsługi sesji w php5 i mysql. Chcia zrobić identyfikator sesji na podstawie adresu ip, uniqueid i time(), gdy skrypt stworzy ID to zapisze go do pliku a takiej nazwie jak np ip usera. Gdy użytkownik będzie już miał swoje ID to skrypt otworzy ten plik odczyta ten ID i wykona zapytanie: SELECT * FROM session WHERE ID = $ID AND IP = $REMOTE_ADDR; No i wtedy otrzymam kolumne data gdzie będzie zserializowana tablica ze zeminnymi. Chciałem się zapytać czy takie rozwiązanie jest dobre ? Ps. cookie odpadają Pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
a gdzie będziesz przetrzymywał numer sesji ?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 426 Pomógł: 1 Dołączył: 2.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat gdy skrypt stworzy ID to zapisze go do pliku a takiej nazwie jak np ip usera Tylko nie wiem czy zapisywać te ID najpierw do pliku czy odrazu do bazy danych... |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Ale skąd będziesz wiedział jaki id sesji ma obecny użytkownik? Po adresie ip tego nie da się zrobić. Możesz przekazywać identyfikator przy żądaniu zwykłym getem, ale wtedy łatwo go zgubić. Wykluczając ciastka zamykasz sobie drogę do najlepszego rozwiązania...
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 426 Pomógł: 1 Dołączył: 2.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Po adresie ip tego nie da się zrobić. Możesz przekazywać identyfikator przy żądaniu zwykłym getem, ale wtedy łatwo go zgubić. Wykluczając ciastka zamykasz sobie drogę do najlepszego rozwiązania... No właśnie chciałem zrobić tak że użytkownik ma swój plik o nazwie takiej jak jego ip a w tym pliku jest jego identyfikator sesji, i za każdym razem to odczytuje z bazy i sprawdzam. A np co by było gdyby ktoś wyłączył cookie w przeglądarce ? ;] |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Witam.
Na początku muszę przeprosić za bardzo długą nieobecność - siła wyższa. Wracając do tematu. Skoro używasz sesji pewnie chcesz śledzić poczynania użytkownika na stronie, ewentualnie sprawdzać czy takowy jest zalogowany. Jeśli masz jakąś bazę użytkowników, to w tabeli session dodajesz pole będące kluczem obcym. Kluczem pierwotnym jest idsession (serial). Do tabeli powinno zapisywać się też czas utworzenia, ip oraz rodzaj przeglądarki. Jeśli nie masz logwania użytkownika, a w związku z tym nie możesz podać idusera, wówczas na pierwszej stronie generujesz jakąś unikatową wartość i używsz jej zamiast iduser. Między stronami możesz przekazywać ją przy pomocy $_SESSION. Po każdym odświeżeniu strony sprawdzasz czy nie uległy zmianie przeglądarka, ip. Możesz również sprawdzić czas jaki upłynał od ostatniej akcji użytkownika na stronie. Każde odświeżenie strony oprócz zapisania powyższych informacji do bazy może również tworzyć plik o nazwie - iduser_timestamp. W ten sposób każdy użytkownik ma własny plik, nawet jeśli zdarzy się sytuacja wygenerowania takiego samego iduser. Usuwanie starych plików z sesją i wpisów do bazy może zajmować się skrypt działający w cronie, ewentualnie sama aplikacja podczas każdego przeładowania strony. Jeśli nie chcesz usuwać wpisów z bazy lepiej użyć bigserial. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
tak, nie rozumiem dlaczego nie chcesz użyć ciastek, ale wracając do tematu wg. mnie najlepiej zrobić klucz unikatowych przez ip w md5
wtedy bedzie napewno unikat |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
- taak, na pewno będą unikaty.. szczególnie że co drugi wchodzący ma NATowe 192.168.0.1
- cookie to tez zadne rozwiazanie bo u wielu osob są wyłączone |
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
- cookie to tez zadne rozwiazanie bo u wielu osob są wyłączone Co rozumiesz pod pojęciem wielu? Ranking :: cookies :: polscy użyszkodnicy Wynika z tego że wyłączone cookies ma 1.5% użyszkodników, a to nie jest wiele. Kombinacja IP + ciacho jest wg. mnie wystarczająca. Ewentualnie dorzucasz inną informację w stylu system operacyjny i już. |
|
|
![]()
Post
#10
|
|
Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Problem leży w tym, że użytkownicy będący za NAT-em mają wspólne IP. Kolejna sprawa to użytkownicy serwerów proxy, które nie zawsze zwracają poprawny nagłówek X-Forwarded-For. Z kolei na przykłąd neostradowcy mają zmienny adres.
Rozpoznawanie po przeglądarce/systemie jest zupełnie niebezpieczne, co za problem w żądaniu jeden nagłówek podstawić. Ktoś powie, że ciastka można ukraść, ale trzeba mieć dostęp do systemu plików, a z tym będzie trochę większy problem. Czyste ciastka z unikalnym identyfikatorem sesji są według mnie najlepszą metodą przenoszenia sesji pomiędzy żądaniami. Nie ma sensu dodawać adresu IP, gdyż uderzy to w użytkowników, którzy mają zmienny adres. Jaki jest sens w wyłączaniu ciastek? Można ograniczyć przyjmowanie ciastek do zaufanych adresów, wtedy problem z prywatnością zniknie. Tak jak pisał mike_mech - 1.5% to zdecydowana mniejszość, którą nie należy się przejmować. Jak komuś zależy na funkcjonalności strony, to włączy... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 09:40 |