[Problemem] Jak rozwiazac sesje uzytkownikow?

0

Mam taki dylemat jak to rozwiazan w nowym Coyocie. Bo oczywiscie chce zastapic mechanizm sesji PHP, wlasnym, tak jak to jest w obecnej wersji.

Problem jest nastepujacy: czesto serwis odwiedzaja rozne boty i inne dziadostwa, ktore nie maja mozlwosci zapisania cookies z ID sesji. Wobec tego TEORETYCZNIE ID sesji powinien byc dolaczany do URL'a. Nieraz jednak to nie dziala, i jakies boty pomijaja query string w ogole, co doprowazda do dublowani sesji. Wobec tego pozniej mamy 3000 userow online ;)

Chcialbym jednak z tego zrezygnowac, niewygodne jest "dbanie" zawsze o to, aby ten SID znalazl sie w URL'u. No wlasnie, ale jak? Rozroznianie userow poprzez IP? Tez nie bardzo, bo czasem ten IP moze nie byc taki unikalny (w przypadku jakis sieci)....

hmmm....

0

Ja bym zrobił tak, ze gdy wchodzimy na stronę, to tworzymy ciasteczko oraz zapisujemy ip tego usera na okres ok max 0,5 godz. Następnie na każdej stronie sprawdzałbym te ciasteczko czy istnieje, jeśli nie to sprawdzamy czy ten user był wcześniej na stronie, poprzez sprawdzenie tego ip zapisanego na 0,5godz. Jeśli uzytkownik był juz wczesniej na stronie, a nie ma ciasteczka to znaczy ze jest to bot i mozna mu zablokowac licznik lub cala strone. 99,99% prawdziwych użytkowników akceptuje cookie.

0

Miałem już odpisać dokładnie to samo, ale...
Weźmy sieć lokalną z jednym zewnętrzym IP. Wchodzi user A, dostaje ciasteczko. Strona jeszcze nie jest w stanie sprawdzić czy dostał to ciasteczko (przekazywanie w tle ajaxem na kazdej stronie nie wchodzi w gre). Wchodzi user B z tej samej sieci. W bazie jest jego IP, czyli wg tego rozumowania jest botem... Ale... user A odswieza strone i co? Mamy ciasteczko - przed chwilą uznaliśmy że to IP to bot i ma (na przykład) bana.
Z drugiej strony jeśli po drugiej wizycie usera A pojawi sie to ciasteczko, mozemy IP odbanować... user B moze juz korzystac ze strony, ale na początku się już zraził.

Myślałem nawet nad trzymaniem hasha ip/useragent/accept czy coś, ale sytuacja j/w.

0

Ymmm qrde! Kiedy będzie te cholerne Ipv6... rozwiąże mnóstwo problemów, lecz trochę ich nada. Ale jeśli chodzi o licznik to ilu może być ludzi w tej samej sieci? powiedzmy ze 6 naraz na stronie. To najwyżej zablokujemy im dostęp do licznika... ale nie do strony. Już lepiej mieć różnice o 6 a nie o 100 jak Adam Boduch powiedział . Ale warto ta sprawę rozwiazać.

0

Hmm, to moze polaczenie SID oraz IP. I zakladamy, ze kazdy realny user obsluguje cookies. Wowczas tak jak mowliliscie. Jezeli IP jest w bazie danych, a ciastka nie ma -> bot. Nie chodzi tutaj o banowanie, jedynie na uniknieciu dublowania sesji. Wiec jezeli wykrywamy, ze bot -> analujemy dalsza czesc wykonywania skryptu zwiazanego z sesja.

//Ciekawe literówki robisz ;) - n

0

bordeux: Pogrzało? Z całym szacunkiem, ale to totalna bzdura. Wyobraź sobie taką sytuację - wchodzę sobie na 4p ze swojego kompa z Fx. Ok, wszystko pięknie. Ktoś narzeka na to, że mu się coś pod Operą rozwala. Otwieram Operę, włączam 4p i dostaję bana. No sorry.

Inny przykład - wchodzę na 4p. W tym samym czasie mój brat wchodzi na 4p z innego kompa, ale podpiętego pod ten sam kabel. Dostajemy bana. Również nie ciekawie.

P.S. IPv6 nic nie zmieni w pierwszym podanym przeze mnie przypadku. Ile użytkowników może mieć ten sam adres IP? 10 tysięcy? 20? Wystarczy duża sieć firmowa, która nie potrzebuje więcej adresów IP, więc ich nie wykupuje. Wszyscy korzystają z jednego (na zewnątrz), ale użytkowników realnych mogą być dziesiątki tysięcy.

0

Panie Adamie.Pilorzu, zwrócił pan uwagę na mój 2 post??? <font size="3">

To najwyżej zablokujemy im dostęp do licznika... ale nie do strony.
</span>
P.S
I jeszcze warto czasami korzystać z przycisku szybka edycja, lub edycja aby dodać P.S

Oddaje honor za IPv6. Zapomniałem o firmach...

0

Zwróciłem uwagę. Ale dopiero po fakcie ;). Podczas pisania postu musiałem odejść od kompa i wysłałem sporo później niż zacząłem pisać i nie widziałem dalszych wypowiedzi. Nie odświeżyłem, mea culpa.

Co do edycji - za bardzo przyzwyczaiłem się do for, w których dodanie odpowiedzi w wątku, który jest zakończony moim postem powoduje automatyczne sklejenie z poprzednim.

0

Ok, dzieki za sugestie. Napisalem juz klase, ktora mam nadzieje bedzie odpowiednia i wydajna :-)

0

Można też sprawdzić czy dany użytkownik to bot takim sposobem:

<?php
setcookie("Kremowka", "ok");
if ((eregi($_SERVER['HTTP_HOST'], $_SERVER['HTTP_REFERER']) && $_COOKIE['Kremowka'] !='ok') {
	//BOT
}
?> 

Sprawdzamy czy user był na wcześniej stronie, nie poprzez sprawdzenie jego ip w bazie, lecz poprzez sprawdzenie strony poprzedniej :D

// może googlowiczom się przyda :p

0

A jak przeglądarka bot nie przekazuje REFERER???

0

mniejsza zgaga :D

<?php
setcookie("Kremowka", "ok");
if ((eregi($_SERVER['HTTP_HOST'], $_SERVER['HTTP_REFERER']) && $_COOKIE['Kremowka'] !='ok') {
        //BOT
} else {
//Nasz licznik
}
?> 

Teraz mozemy liczyć licznik, ale będzie dopiero liczony od 2 strony.

1 użytkowników online, w tym zalogowanych: 0, gości: 1