[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Определение IP с PHP, занесение и блок. в базу.
universalsite
Проблемный вопрос.
Ответ на который толком никто дать не может, что на USA что на RU сайтах. Нужна ваша помощь.

Более 2 недель ищу.

Всё что нашел выкладываю здесь. Надеюсь на квалифицированную поддержку.
Я конечно новичок в этом деле но кое что умею, руки тоже не кривые но практики в панорамированию на ПХП нет.

На одном сайте нарыл:

Определение IР-адреса;
Занесение его в базу, которая обновляется (обнуляется) через 24 часа;
Проверка посетителя по IP адресу (сверка с базой) и блокирование доступа, если с такого IP уже заходили.
...


Начнем по порядку

Определение IР-адреса;

в данном случае вопрос стоит в определении ip посетителя, но я приведу еще пример определения ip сервера
посетителя
<?php 
echo $_SERVER["REMOTE_ADDR"];
?>


сервера
Цитата
<?php
echo $_SERVER["SERVER_ADDR"];
?>




Иногда использую для определения ip функцию РНР getenv(...);
посетителя
Цитата
<?php
$ip = getenv ("REMOTE_ADDR");
?>



Занесение его в базу, которая обновляется (обнуляется) через 24 часа;

Для этого создайте базу данных IP со следующими столбцами:
ID | IP | DATE
и заносите свои данные в таблицу
Цитата
<?php
$ip=$_SERVER["REMOTE_ADDR"];
$date=("Y-m-d");
$q = mysql_query("insert into table (IP, DATE) values ('$ip','$date') ");
?>



не забывайте коннектиться к MySQL

А для очистки используйте код еще проще, можно даже при каждом запуске скрипта. Если дата уже не текущая, то все значения IP удаляются.
Цитата
<?php
$date=("Y-m-d");
$q = mysql_query("delete from table where DATE!='$date' ");
?>



Проверка посетителя по IP адресу (сверка с базой) и блокирование доступа, если с такого IP уже заходили.

Схема такая: смотрим в базе, есть ли такой IP, если IP есть то блокируем посетителя.
Цитата
<?php
$ip=$_SERVER["REMOTE_ADDR"];
$q = mysql_query("select count(*) from table where IP='$ip'");
$ROW= mysql_fetch_array($q);
if ($ROW[0]>0) die ("Доступ запрещен");
?>[php]


Я работаю с joomla 1.5... создал что-то на подобие модуля установил еффекта никакого.

модуль



Спустя 4 часа, 7 минут (3.11.2010 - 19:11) vasa_c написал(а):
Простите, чего?

Спустя 1 минута, 2 секунды (3.11.2010 - 19:12) universalsite написал(а):
Нужно так сделать чтобы человек посетивший один раз сайт был заблокирован на 24 часа, и если ему нужно будет что-то уточнить на сайте пусть заходит на следующий день.

Спустя 52 минуты, 32 секунды (3.11.2010 - 20:05) vasa_c написал(а):
Посетивший одну страницу?

Спустя 17 часов, 10 минут, 45 секунд (4.11.2010 - 13:15) vagrand написал(а):
А вас не смущает то что у юзеров из одной подсети может быть один внешний IP, т.е. один юзер зашел из 100 и больше никто. Класс

Спустя 9 часов, 1 минута, 30 секунд (4.11.2010 - 22:17) universalsite написал(а):
Уважаемые пользователи большая к вам просьба не осуждать зачем и почему. Если кто то может помочь, помогите.

Все + и - я оценил.

Спустя 12 минут, 28 секунд (4.11.2010 - 22:29) Игорь_Vasinsky написал(а):
Цитата
Ответ на который толком никто дать не может, что на USA что на RU сайтах. Нужна ваша помощь.



ест же ещё UA...

короче делаё так -

в базу пиши IP, Data-TIME и сосчитай и запиши ещё DATEdead и TIMEdead когда истекает 24 часа для этого IP

На главной странице напиши php-код который при обращении к странице (любой посетитель или бот) - проверяет эти последнии DATEdead и TIMEdead - сверяет по базе и сли есть кто у кого это время или меньшее (с реальным временем) - то удаляй -"cобнуляй" этот IP

Спустя 3 минуты, 27 секунд (4.11.2010 - 22:33) Игорь_Vasinsky написал(а):
проще писать - DATE = time(), Datedead = time() + (3600*24)

а реальное время для проверки тож в формате time()
поле для сверки Datedead

Спустя 9 минут, 33 секунды (4.11.2010 - 22:42) Игорь_Vasinsky написал(а):
че в нем проблемного...........из мухи слона и громкое название темы.........

Спустя 19 минут, 29 секунд (4.11.2010 - 23:02) universalsite написал(а):
Насколько я понял в базе создать таблицу и в таблице раздела IP, DATE u ID

Спустя 5 минут, 38 секунд (4.11.2010 - 23:07) Игорь_Vasinsky написал(а):
нет ..
IP - понятно
DATE - дата захода = time() (можно не создовать - это для мониторинга кто, когда)
DAEdead - дата по истечении 34 часов = time() + (3600x34)

а на главной странице скрипт считывает время - на сейчашниймомент так же в формате time() и сверяет с DATEdead и если time() > DATEdead - То удаляем IP из таблы

Спустя 1 минута, 35 секунд (4.11.2010 - 23:09) universalsite написал(а):
user posted image

user posted image

Спустя 42 секунды (4.11.2010 - 23:10) universalsite написал(а):
Так или нет

Спустя 2 минуты, 7 секунд (4.11.2010 - 23:12) Игорь_Vasinsky написал(а):
тогда в DATE пиши не время захода на сайт, а время когда заход будет разрешен сновая, т.е. на 24 часа больше....

Спустя 1 минута, 53 секунды (4.11.2010 - 23:14) universalsite написал(а):
как, если можно на пальцах объясните.

Спустя 9 минут, 50 секунд (4.11.2010 - 23:24) Игорь_Vasinsky написал(а):
блин.. да тут все разжовано...

пришел юзер
в БД записали его IP и DATEdead (это время когд ему снова разряшат зайти
- т.е. нужно считать время, потом добавить к нему 24 часа и записать все это в базу)
т.к. с DATEdead в формате 23 октября 2010 года 23 часа 12 минут - работать не удобно - по этому DATEdead лучш запист в формате $datedead = time() + (3600*24)

а на главной странице php код проверяет if (time() > $deatedead(переменная из БД)) {стираем IP по ID из базы}

все... болше ни че не скажу..я 5 раз сказал уже одно и тоже и на пальцах.

хотябы алгоритм поймите.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.