Как мне создать захват IP-адреса, в котором IP-адрес пользователя отображается только один раз?

#javascript #php #authentication

#javascript #php #аутентификация

Вопрос:

 <?php
    $ip = getenv('REMOTE_ADDR');
    $port = getenv('REMOTE_PORT');
    $agent = getenv('HTTP_USER_AGENT');
    $data =  date("Y-m-d");

    $fp = fopen('IP.php', 'a');

    fwrite($fp, "rn");
    fwrite($fp,"<tr>");
    fwrite($fp, "rn");
    fwrite($fp, "<th>$ip</th>");
    fwrite($fp, "rn");
    fwrite($fp, "<th>$port</th>");
    fwrite($fp, "rn");
    fwrite($fp, "<th>$agent</th>");
    fwrite($fp, "rn");
    fwrite($fp, "<th>$data</th>");
    fwrite($fp, "<tr>");

    fclose($fp); 
?>
 

Этот захват IP-адреса. Мне нужно знать ИНФОРМАЦИЮ о пользователях моего сайта при входе. Однако я хочу, чтобы, если пользователь входил в систему более одного раза, его IP-адрес появлялся только один раз, если он идентичен, а если он отличается, он должен отображаться в таблице IP.

ПРИМЕР:

Если в течение 1 раза, а затем в течение следующего дня с тем же IP-адресом я не получаю его журналы, поскольку пользователей так много, я бы не хотел, чтобы он заполнялся каждый раз, когда пользователь вводит, возможно, более одного раза в день.

Комментарии:

1. Вы должны использовать базу данных вместо обычного файла. Гораздо проще обрабатывать ограничения (например, один журнал в день на пользователя), а также намного быстрее.

2. Если бы это был проект для хобби, я бы просто сказал вам получить содержимое файла, найти в нем IP-адрес и действовать соответственно. Но потом вы сказали since there are so many users . Тогда правильный способ — использовать базу данных. Вы можете установить УНИКАЛЬНОЕ ограничение для этого поля, чтобы вам не приходилось обрабатывать его самостоятельно

3. Для уточнения… Можно ли это сделать, используя в качестве хранилища то, что выглядит как файл исходного кода PHP? Абсолютно. Но это типичная вещь, которую вы делаете только как вызов, чтобы доказать, что это можно сделать.

Ответ №1:

Если вы хотите хранить журналы в файлах (в день) без какой-либо обработки записанных файлов, это может быть логично, но если вы хотите читать и обрабатывать файлы журналов перед новой записью, у вас возникнут проблемы с увеличением запросов на чтение и запись.

Поэтому я предлагаю вам использовать таблицу журналов в базе данных вместо файлов. затем сделайте запрос, чтобы найти различные значения ip и более продвинутые reports.in таким образом, вы могли бы регистрировать все логины пользователей и другие пользовательские журналы, а затем решать, что делать с этими данными.

Если вы беспокоитесь об увеличении размера этой таблицы, вы можете поместить Cron Job на сервер для удаления старых журналов (с запросом) каждую ночь или еженедельно.

удачи