universalsite
3.11.2010 - 16:04
Проблемный вопрос.
Ответ на который толком никто дать не может, что на 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 написал(а):
Спустя 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 раз сказал уже одно и тоже и на пальцах.
хотябы алгоритм поймите.