#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 на сервер для удаления старых журналов (с запросом) каждую ночь или еженедельно.
удачи