Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ PHP _ unikalni odwiedzający stronę

Napisany przez: mkoszar 17.01.2021, 09:39:04

Sprawa dość ciekawa. Na stronie index i podstronach umieściłem kawałek takiego kodu:

  1. $ip = $_SERVER["REMOTE_ADDR"];
  2. $zapytanie = "INSERT INTO `licznik` (`id`, `ip`, `data`, `strona`) VALUES (NULL, '$ip', NOW(), 'index')";
  3. mysqli_query($db, $zapytanie);


Rejestruję tym samym zdarzenie otwarcia/pobrania danej strony/podstrony.
Wszystko fajnie, ale w liście dostaje zdarzenia z IP pochodzące od Googolebot, OVH, SAS, ColoCrossing-USA, Amazon itp. Takie dane są nie istotne.

Wymyśliłem, że zrobię tablicę, bo cześć tych IP się cyklicznie powtarza a jak dojdą nowe to się douzupełni tablicę i jako tako będzie

  1. $lista_ip=http://www.php.net/array("54.36.149.96"=>"OVH SAS-FRANCJA","66.249.79.110"=>"Googlebot-USA","66.249.79.106"=>"Googlebot-USA","107.172.228.78"=>"ColoCrossing-USA");


I teraz w liście którą pobieram z bazy

  1. while ($row_ip = mysqli_fetch_row($result_ip)) {
  2. /* row_ip[1] = IP*/
  3. /* row_ip[2] = data*/
  4. /* row_ip[3] = strona*/}


chciałbym sprawdzić czy zmienna np. $ip_z_bazy = $row[1];
znajduje się w tablicy $lista_ip=array(...);
a jeśli tak to zapisz jako np. 66.249.79.110_Googlebot-USA
no a jak nie występuje to po prostu 52.161.150.183 i tyle...

tym samym po jakimś czasie wyfiltruje te wejścia, które nie będę brał pod uwagę jako informacja o wejściach przez żywych ludzi smile.gif

Jest taka funkcja
array_values() returns all the values from the array and indexes the array numerically.
tylko że ona mi znowu poda tablicę ze wszystkimi wartościami kluczy - chyba nie przydatne

in_array($row_ip[1],$lista_ip,) Returns true if needle is found in the array, false otherwise.
też nie specjalnie, bo uzyskam jedynie info, że tak występuje w tablicy albo nie.

Może jest jakiś inny sposób ? sekret.gif

Napisany przez: trueblue 17.01.2021, 09:52:48

Chcesz przy wyświetlaniu danego IP doklejać informację?

  1. http://www.php.net/echo $row_ip[1];
  2. if(http://www.php.net/isset($lista_ip[$row_ip[1]]){
  3. http://www.php.net/echo $lista_ip[$row_ip[1]];
  4. }

Napisany przez: LowiczakPL 17.01.2021, 10:05:32

Takich IP będą TYSIĄCE, które kilka razy dziennie trzeba będzie dodawać do wykluczenia. IP to ostateczność.

Jeśli chcesz się pozbyć robotów to identyfikuj je po imieniu. Zazwyczaj roboty się przedstawiają, jednak korzystają z SETEK adresów IP, zamęczysz się na śmierć po IP.

Przeglądarka też się przedstawia, można tez po przeglądarce logować odwiedziny.

Napisany przez: mkoszar 17.01.2021, 10:06:06

Cytat(trueblue @ 17.01.2021, 09:52:48 ) *
Chcesz przy wyświetlaniu danego IP doklejać informację?

  1. http://www.php.net/echo $row_ip[1];
  2. if(http://www.php.net/isset($lista_ip[$row_ip[1]]){
  3. http://www.php.net/echo $lista_ip[$row_ip[1]];
  4. }


DOKŁADNIE TAK exclamation.gif!



po modyfikacji, ale to to samo w zasadzie

  1. if(http://www.php.net/isset($lista_ip[$row_ip[1]])){
  2. $xxx = $lista_ip[$row_ip[1]];
  3. } else {$xxx = '';}


Napisany przez: dublinka 17.01.2021, 10:12:18

Troche zle do tego podeszles. Sprawdzaj

  1. $_SERVER ['HTTP_USER_AGENT'];

Jest lista robotow. Porownaj liste z tym co poboerasz i wtedy zapisuj do bazy.

Napisany przez: mkoszar 17.01.2021, 10:20:09

Cytat(dublinka @ 17.01.2021, 10:12:18 ) *
Troche zle do tego podeszles. Sprawdzaj
  1. $_SERVER ['HTTP_USER_AGENT'];

Jest lista robotow. Porownaj liste z tym co poboerasz i wtedy zapisuj do bazy.


O ! sprawdzę to za moment.
Ale skąd się problem pojawił. Miałem na 000webhost darmowy serwer i już pierwszego dnia zablokowali z powodu tego że miałem 100 unikalnych wejść. i blokada.
Unikalnych .. mhm, chyba robotów . Ale regulamin to regulamin i zablokowali.
A jak już zbieram te dane to niech coś z tego też wiem. Zaraz obczaje co zwraca $_SERVER ['HTTP_USER_AGENT'];

Napisany przez: dublinka 17.01.2021, 10:22:56

Chocby stad przyklady

https://stackoverflow.com/questions/422969/how-to-recognize-bots-with-php

Napisany przez: mkoszar 17.01.2021, 11:08:18

a tak z innej beczki: To chyba dobrze, że te Googleboty i inne odwiedzają stronę. Przy okazji indeksują zawartość. Pewnie z pozycjonowaniem to niema nic wspólnego w wyszukiwaniach, bo to inna bajka..
Tutaj chodzi o to, żeby "wyłuskać" unikalnych odwiedzających.

Wrzuciłem nową kolumnę do bazy i zobaczymy co się stanie. To już jest dużo informacji smile.gif

Napisany przez: Pyton_000 17.01.2021, 19:02:59

https://github.com/JayBizzle/Crawler-Detect

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)