Sprawdzanie jakie urządzenie i z jakiej przeglądarki użytkownik wchodzi na moją stronę

0

Witam wszystkich, robię swoją pierwszą stronę. Zrobiłem już prosty kod który sprawdza adres zewnętrzny ip użytkownika który wchodzi na stronę chce jeszcze dodać pare rzeczy, ale nią bardzo wiem jak to zrobić na razie mam coś takiego:

<?php
$adres_ip = $_SERVER['REMOTE_ADDR'];
$plik = fopen("ip.txt", "a");
flock($plik, 2);
fwrite($plik, $adres_ip."\n");
flock($plik, 3);
fclose($plik);
?>

Zapisuje on adres zewnętrzny ip użytkownika do pliku o nazwie ip.txt który wszedł na stronę w nowej linii. Moje pytanie jest następujące. Czy jest możliwość dodania godziny o której dany użytkownik wchodzi na stronę? Tak aby godzina była zapisywania przed adresem zewnętrznym ip w nowej linii i czy jest możliwość zmodyfikowana kodu php tak aby zapisywał tylko te adresy zewnętrzne ip które nie są już zapisane ( tak aby się nie powtarzało i zapobiegało spamowi mam tu na myśli odświeżanie strony i bezsenyzapisywanie tego samego adresu zewnętrznego ip użytkownika)

2

Skoro się uczysz, to kolejny temat do ogarnięcia na już -> baza danych. Do plików możesz sobie logi zapisywać ale jeśli robisz takie rzeczy jak weryfikacja już dodanych rzeczy to zwyczajnie lepiej to robić na bazie danych. Nie musisz od razu zaprzęgać do działania mysql możesz użyć sqlittle. Co do godziny no to ogarnij funkcję "date()"

3

Zobacz w dokumentacji PHP jakie pola zawiera tablica $_SERVER : https://www.php.net/manual/en/reserved.variables.server.php
Przeglądarkę częściowo można zidentyfikować poprzez odczyt klucza HTTP_USER_AGENT.
Tu masz listę takich nagłówków: https://developers.whatismybrowser.com/useragents/explore/
Dlaczego piszę o tym, że można to sprawdzić częściowo? Bo, jednak tak naprawdę każdy wysyłając żądanie jest w stanie zmienić ten nagłówek.

Obecną datę możesz uzyskać używając zwykłej funkcji date() i odpowiednio sformatować sobie otrzymany string.
https://www.php.net/manual/en/function.date

Jeśli chodzi o to by logować tylko unikalne IP do pliku tekstowego, to może rozważ bazę danych? Oczywiście można najpierw odczytać plik, sprawdzić czy adres już wystąpił a potem ewentualnie go dopisać.

0

Pewnie, że się da.
Jakie to ilości odwiedzin? Do czegoś amatorskiego plik wystarczy, ale dla większy wdrożeń to zabije wydajność. Jakaś baza key-value by była optymalna.

A ja sobie po cichutku podejrzewam, że chodzi o coś innego, niż pytasz. Jakiś problem XY.
O co NAPRAWDĘ chodzi?

0

Jeśli chodzi o to by logować tylko unikalne IP do pliku tekstowego, to może rozważ bazę danych? Oczywiście można najpierw odczytać plik, sprawdzić czy adres już wystąpił a potem ewentualnie go dopisać.
<
Właśnie to mam na myśli, mógłbyś podać mi tutaj taki kod PHP, (chciałbym go przeanalizować, będę wdzięczny <3.)który sprawdzałby z pliku ip.txt czy już w jakiejś LINII istnieje ten adres IP który właśnie chce wejść i jeśli już istnieje to aby go nie dopisywał do ip.txt, tylko zwyczajnie ignorował.

2

Tu nie ma co wymyślać koła na nowo. Po prostu rozważ zapis danych do tego swojego pliku w formie CSV. Potem CSV'a sobie odczytujesz i wpisujesz do tablicy. Na koniec przeszukujesz tablicę.
Zobacz tu:
https://stackoverflow.com/questions/1269562/how-to-create-an-array-from-a-csv-file-using-php-and-the-fgetcsv-function
Do przeszukiwania tablicy służy in_array();
Najwięcej nauczysz próbując coś pisać samemu.
P.S.
CSV to taki specyficzny plik tekstowy z danymi.

0

Jurek1980
Czy mógłbyś napisać mi taki prosty kod PHP który by zapisywał czas timestamp ( mam tu na myśli 1591868323 ) i obok tego czasu adres zewnętrzny urządzenia które weszło na moją stronę na razie mój kod PHP wygląda tak:

<?php $adres_ip = $_SERVER['REMOTE_ADDR']; $timestamp = time(); $plik = fopen("ip.txt", "a"); flock($plik, 2); fwrite($plik, $timestamp . " " . $adres_ip . "\n"); flock($plik, 3); fclose($plik); ?>

Kod ten zapisuje czas w jakim urządzenie weszło na stronę i obok po prawej stronie adres zewnętrzny tego urządzenia zapisywane to jest w pliku ip.txt i wygląda mniej więcej tak:
1591868383 192.x.x.x
1591868395 172.x.x.x
Jak mógłbym to zapisywać w csv, czy da się napisać kod PHP który zapisywał to do csv? Mógłbyś mi go tutaj napisać tak abym mógł przeanalizować?

Dzięki za pomoc!

0

Takie rzeczy robi się obecnie narzędziami do seo, no chyba, że to portal/forum z userami.

0
Tine napisał(a):

Jak mógłbym to zapisywać w csv, czy da się napisać kod PHP który zapisywał to do csv? Mógłbyś mi go tutaj napisać tak abym mógł przeanalizować?

Odpuść, błagam.

Masz problem z wydrukowaniem przecinka i sklejaniem stringów (elementarz elementarza).
Umiesz tam mało, że nie umiesz skorzystać z pomocy.

Poćwicz język na jakiś maksymalnie prostych przykładach.
Otwórz jakiś dobry kurs, albo czytaj książkę

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