LINUX.ORG.RU

Чтение базы MySql и сравнения с HTTP_REFERER

 ,


0

1

Пиши такой код для контроля HTTP_REFERER от куда приходят. Работает хорошо. Вопрос в том как сделать мне чтоб сайты ботов (гугл,яндекс и т.д.) чтались из базы MySql?

$userstable = «ref»;

$ref = $_SERVER['HTTP_REFERER'];

if (!empty($ref) && strpos($_SERVER[«HTTP_REFERER»],"http://google.ru")===false && strpos($_SERVER[«HTTP_REFERER»],"http://www.google.ru")===false && strpos($_SERVER[«HTTP_REFERER»],"http://google.com")===false && strpos($_SERVER[«HTTP_REFERER»],"http://www.google.com")===false && strpos($_SERVER[«HTTP_REFERER»],"https://google.ru")===false && strpos($_SERVER[«HTTP_REFERER»],"https://www.google.ru")===false && strpos($_SERVER[«HTTP_REFERER»],"http://yandex.ru")===false && strpos($_SERVER[«HTTP_REFERER»],"http://www.yandex.ru")===false) {

$query = «select * from $userstable where usera = '$ref'»;

$result = mysql_query($query); $rows = mysql_num_rows($result);

if ($rows == 0){ $kol = «1»; $query1 = «insert into $userstable (usera,date,kol) values('$ref','$timka','$kol')»; mysql_query($query1);

} else {

$hitquery = «select kol from $userstable where usera = '$ref'»; $result2 = mysql_query($hitquery); $row = mysql_fetch_array($result2); $kol = $row[«kol»];

$query2 = «update $userstable set kol = kol+1, date = '$timka' where usera = '$ref'»; mysql_query($query2); }

}

Код самой базы из которой хотелось бы читать URL сайтов:

$req = mysql_query(«SELECT * FROM `refbad`»); while ($res = mysql_fetch_assoc($req)) { // echo 'URL='.$res['url']; }

$_SERVER[«HTTP_REFERER»],"http://google.ru")===false && strpos($_SERVER[«HTTP_REFERER»],"http://www.google.ru")===false && strpos($_SERVER[«HTTP_REFERER»],"http://google.com")===false && strpos($_SERVER[«HTTP_REFERER»],"http://www.google.com")===false && strpos($_SERVER[«HTTP_REFERER»],"https://google.ru")===false && strpos($_SERVER[«HTTP_REFERER»],"https://www.google.ru")===false && strpos($_SERVER[«HTTP_REFERER»],"http://yandex.ru")===false && strpos($_SERVER[«HTTP_REFERER»],"http://www.yandex.ru")===false

1. http://php.net/preg_match

2.1. http://php.net/parse_url
2.2. http://php.net/in_array

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

KRoN73 Ответ

Вот я бы не обратился бы если получалось. Я не мудрый пхпшник, я учусь и на протяжении 2 месяцев не могу решить эту проблему. Решил обратиться в форум. А вы ссылки предлагаете. Смотрел и там для меня тёмный лес(

djtimoha ()
Ответ на: KRoN73 Ответ от djtimoha

Хотел сделать что то типа так:

$req = mysql_query(«SELECT * FROM `refbad`»);

while ($res = mysql_fetch_assoc($req)) {

if (!empty($ref) && strpos($_SERVER[«HTTP_REFERER»],$res['url'])===false) { echo 'В списке REFBAD'; }

}

djtimoha ()
Ответ на: Хотел сделать что то типа так: от djtimoha

Бонус юному падавану если этот самый падаван осилит любую книгу по программированию где описывается ООП, вынесение общих кусков кода по методам. Нашивка на грудь «ковбой PHP» даётся также в случае если падаван перестанет читать русскоязычные форумы погромистов с кучей обезьян внутри и возьмёт за пример php.net и stackoverflow.

ThisNameWasFree ()

Вся инфа уже хранится в логах веб-сервера, как админ локалхоста говорю, лучше грепай access.log!

Spoofing ★★★★★ ()
Ответ на: комментарий от ThisNameWasFree

У вас так всё просто, а у меня всё сложно и именно для этого я написал сюда. Спасибо за помощь. Можете удалять эту тему. Да и аккаунт тоже можно. Я больше не буду тут помощи искать! Спасибо душевное!!!

djtimoha ()
Ответ на: комментарий от djtimoha

Я не понял, ты ожидал, что за тебя тут код напишут?

Да и аккаунт тоже можно

Выкладывай пароль

r_asian ★☆☆ ()

Не понимаю, вроде KRoN73 вполне себе правильно сослался на все русские маны для решения поставленной задачи.

Неужто школьники на столько обленились что уже даже по ссылкам не ходят.

Вообще удивительно что он до лора добрался, может это такие тонкотролли без троллинга пошли.

VictimOfLoveToLinux ()

В HTTP_REFERER возможно наличие sql-инъекций и вообще это не очень надежно: режут, меняют. Сделать это не очень просто, а в лёгкую...

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.