universalsite
3.11.2010 - 18:14
Проблемный вопрос.
Ответ на который толком никто дать не может, что на 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... создал что-то на подобие модуля установил еффекта никакого.
модуль
Спустя 2 минуты, 27 секунд (3.11.2010 - 17:17) universalsite написал(а):
Что нужно?
Нужно так сделать чтобы человек посетивший один раз сайт был заблокирован на 24 часа, и если ему нужно будет что-то уточнить на сайте пусть заходит на следующий день.
Спустя 9 минут, 59 секунд (3.11.2010 - 17:27) SlavaFr написал(а):
Цитата (universalsite @ 3.11.2010 - 14:14) |
Проверка посетителя по IP адресу (сверка с базой) и блокирование доступа, если с такого IP уже заходили. |
а так не получится.
Ip может менятся при каждом запросе, кроме того имеется прокси-серверы и ты можеш сразу тысячи людей заблокировать.
Если хочеш блокировать, так только благодоря логину.
Спустя 3 минуты, 36 секунд (3.11.2010 - 17:30) universalsite написал(а):
Сайт базируется на одной странице. Страница визитка на базе Joomla.
Мне главное сделать так чтобы один и тот же ip не посещал страницу более одного раза в день.
Хорошо или плохо сам обдумывал.
Но решения остается прежним.
Кто знает помогите.
Спустя 26 минут, 2 секунды (3.11.2010 - 17:56) kovaldm написал(а):
Спустя 2 минуты, 8 секунд (3.11.2010 - 17:59) SlavaFr написал(а):
прикольно, что ты пологаешся на вещи, которые в http-портоколе не предусмотренны.
ты к стате используй mysql_error и echo так как информация
Цитата (universalsite @ 3.11.2010 - 14:14) |
Я работаю с joomla 1.5... создал что-то на подобие модуля установил еффекта никакого.
|
довольно скудная. если у тебя нет не какого еффекта и мы сразу ошибки из кода не найдем, то у нас еффект будет еще меньше.
ты к стате таблицу действительно table назвал?
Спустя 5 минут, 15 секунд (3.11.2010 - 18:04) SlavaFr написал(а):
Цитата (kovaldm @ 3.11.2010 - 14:56) |
Отправляйте куки. |
А на куки можно также положится как и на IP, т.е все это до одного места. Только регистрация может гарантировать что реч идет действительно о том человеке, который поситил сайт и то, в том случае если его пароль не стянули и актуальную сессию не взломали.
Спустя 2 минуты, 30 секунд (3.11.2010 - 18:06) universalsite написал(а):
Вам довольно просто сказать, отправляйте куки.
На мой взгляд как новичку в php работе проще будет с помещу скрипта или модуля на joomla в становить запрет на посещения сайта.
Выше я выкладывал скрипты знаю точно то что они рабочие видел как работают, мне если честно понравилось. Но тот человек который разместил у себя на сайте должен в остановить joomla, но с восстановлением скрипт пропал.
Надеюсь на вашу поддержку.
Мне нужно сделать так чтобы этот скрипт заработал. Или на подобие него.
+ на сайте нет регистрации. Она не нужна.
Все делается для учета реального трафика.
На счет модуля которого я пробивал.
Спустя 1 минута, 34 секунды (3.11.2010 - 18:08) kovaldm написал(а):
А не зарегеный юзер сможет торчать на сайте круглосуточно. Так что тоже не решение.
Либо скрывать часть информации от незарегистрированных пользователей.
Спустя 1 минута, 1 секунда (3.11.2010 - 18:09) universalsite написал(а):
Спустя 1 минута, 14 секунд (3.11.2010 - 18:10) universalsite написал(а):
под 1.5 сам написал. В программировании на php полный 0
но Google и учебники помогли
Спустя 4 минуты, 17 секунд (3.11.2010 - 18:14) Invis1ble написал(а):
universalsite
алгоритм и код, который ты привел должен работать нормально, но работать с ip - это есть плохо
Эффекта никакого - понятие относительное, ошибки давай (mysql_error())
Спустя 3 минуты, 56 секунд (3.11.2010 - 18:18) universalsite написал(а):
Я смотрю и joomla установила этот модуль но эффекта никакого.
пожалуйста посмотрите модуль может где то я не разобрался.
Но на мой взгляд может бить проблема с привязкой к базе данных.
Я боле чем установил модуль больше ничего не делал.
Спустя 2 часа, 47 минут, 55 секунд (3.11.2010 - 21:06) SlavaFr написал(а):
я в Jomla не разбираюсь, но нахожу абсолутно неправилным применять mysq функции после того как вызвана база данных
$db =& JFactory::getDBO();
с первого же запроса в гугле нашел JDatabase с подозрительным методом query
http://api.joomla.org/Joomla-Framework/Dat.../JDatabase.htmlна мой вопрос :
Цитата (SlavaFr @ 3.11.2010 - 14:59) |
ты к стате таблицу действительно table назвал?
|
ты не ответил словами, но зато кодом. Да ты действительно назвал таблицу table и вызываеш ее в sql без кавычек `` , что конечно приведет к 100% ошибке во всех sql которые ты вызываеш в скрипте, так как это слово имеет особое значение в sql. Таже проблема будет с полем DATE.
К сожалению не могу больше помочь, так как не имею опыта с jomloa и саму идею блокировки ip для твоих целей нахожу неправильной.
Цитата (Invis1ble @ 3.11.2010 - 15:14) |
алгоритм и код, который ты привел должен работать нормально |
может алгоритм и правильный, но код в актуальном виде работать не может.
Спустя 2 часа, 4 минуты, 51 секунда (3.11.2010 - 23:11) Invis1ble написал(а):
SlavaFr
естественно говоря "код должен работать нормально" я имел ввиду, что названия таблицы и полей будут заключены в косые кавычки, а так - да, служебные слова )
Спустя 1 час, 32 минуты, 46 секунд (4.11.2010 - 00:44) SlavaFr написал(а):
@Invis1ble да я просто придераюсь
Спустя 2 минуты, 22 секунды (4.11.2010 - 00:46) Игорь_Vasinsky написал(а):
ну конечно же куки (time of dead 24ч) - при входе записать (прада если они влючены)
и проверять - если они есть - то отправлять на mytraff.ru ))))))))
траффиком тож принебригать нельзя..........
Спустя 54 минуты, 45 секунд (4.11.2010 - 01:41) SlavaFr написал(а):
Цитата (Игорь_Vasinsky @ 3.11.2010 - 21:46) |
(прада если они влючены) |
в том то и дело.
Спустя 14 минут, 23 секунды (4.11.2010 - 01:55) Игорь_Vasinsky написал(а):
а представь скока народу сидит на мтс коннект....
или прокси... куки эффективнее
Спустя 20 часов, 37 минут, 31 секунда (4.11.2010 - 22:33) universalsite написал(а):
Смотрите. Мне в принципе не так важно или под Джумла или просто сайт без системы.
Мне главное чтобы ограничить ip
Если кто знает помогите время идет а толку нету.
Спустя 10 минут, 51 секунда (4.11.2010 - 22:44) Игорь_Vasinsky написал(а):
Спустя 6 минут, 7 секунд (4.11.2010 - 22:50) Invis1ble написал(а):
universalsite
ну что тут непонятного.. Ты ж сам алгоритм уже привел.
По нему и делай - там все просто