Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: własna obsługa sesji w php5
Forum PHP.pl > Forum > PHP
Apo
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
em1X
a gdzie będziesz przetrzymywał numer sesji ?
Apo
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...
Ludvik
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...
Apo
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 ? ;]
batman
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.
.radex
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
em1X
- 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
mike
Cytat(em1X @ 11.06.2006, 22:26 ) *
- 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ż.
Ludvik
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...
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.