ЧеловекоПонятныйУрл
надо слешить точку:
Алексей Юрьевич
тогда надо изменить fake_img.php
<? header('Content-Type: image/jpeg'); $file_name = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI']; if(file_exists($file_name)){ $img = file_get_contents($file_name); $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; $host = ''; if($referer){ $pu = parse_url($referer); $host = $pu['host']; } file_put_contents('img_log.csv', sprintf('%s;%s;%s;%s;%s'."\n", $referer, $host, $_SERVER['REQUEST_URI'], date('Y-m-d'), date('H:i:s') ), FILE_APPEND); print $img; } ?>
Итак у нас есть сайт, картинки которого мы не хотим давать наружу и плюсом к этому еще попалить тех, кто их использует.
Для этого:
1) в папку images кладем файл .htaccess
RewriteEngine on RewriteCond %{HTTP_REFERER} ^$ [OR] RewriteCond %{HTTP_REFERER} !^.*sitename\.ru.*$ [NC] RewriteRule .*\.(gif|jpg)$ /fake_img.php
2) создаем в корне сайта файл fake_img.php
<? header('Content-Type: image/jpeg'); $img = file_get_contents('default.jpg'); file_put_contents('img_log.csv', sprintf('%s;%s;%s;%s'."\n", $_SERVER['HTTP_REFERER'], $_SERVER['REMOTE_ADDR'], $_SERVER['REQUEST_URI'], date('d-m-Y H:i:s') ), FILE_APPEND); print $img; ?>
3) грузим в корень сайта картинку с именем default.jpg
там например тупо пишем "ты вор моих картинок!" )))
В итоге, при загрузке напрямую sitename.ru/images/img.gif
или при использовании нашей картинки с другого сайта
вору будет выдаваться default.jpg.
А мы поимеем лог, который удобно смотреть в Excell.
Можно доработать fake_img.php в двух вариантах:
- считывать запрашиваемую картинку и выдавать ее, просто прозрачно логируя запросы
- рисовать при помощи php: http://www.php5.ru/articles/image
помогло? а то я без проверки написал... просто думаю должно работать
http://itproject.ru/
для меня вопрос снят по объективности оценки, когда я заглянул в код, который он оценил и дал сайту первое место...
1) открыть файл картинки
$content = file_get_contents($file_name);
2) записать откуда запрашивает
3) послать нужный заголовок
header('Content-Type: image/jpeg');
4) сделать
print $content;
а в htaccess надо прописать, чтобы для удаленных вызовов картинки апач отдавал их через скрипт
что то типа того:
RewriteEngine onRewriteCond %{HTTP_REFERER} ^$ [OR]RewriteCond %{HTTP_REFERER} !^.*sitename\.ru.*$ [NC]RewriteRule .*\.(gif|jpg)$ /fake_img.php
P.S.: тут же можно пакостить, добавляя веселые надписи на картинки)))
http://www.yandex.ru/yandsearch?yasoft=barff&text=procexp.exe
http://phpclub.ru/talk/showthread.php?s=&threadid=96719
// ...function register_referer() { // yandex, google, msn, mail, aport, rambler, yahoo, km, altavista if (!is_empty($ref = $_SERVER['HTTP_REFERER'])) { $uri = parse_url($ref); $host = isset($uri['host'])?strtolower($uri['host']):''; parse_str($a = gpcvar_str($uri['query']),$query); if (preg_match('~\.yandex\.ru$~',$host)) {$search_query = gpcvar_str($query['text']);} elseif (preg_match('~^(www\.google\.|search\..*?\.msn.com)$~',$host) or $host == 'www.altavista.com' or $host == 'go.mail.ru' ) {$search_query = gpcvar_str($query['q']);} elseif ($host == 'sm.aport.ru') {$search_query = gpcvar_str($query['r']);} elseif ($host == 'www.rambler.ru') {$search_query = gpcvar_str($query['words']);} elseif ($host == 'go.km.ru') {$search_query = gpcvar_str($query['sq']);} elseif ($host == 'search.yahoo.com') {$search_query = gpcvar_str($query['p']);} else {$search_query = '';} $search_query = charset_x_win($search_query); } }// ...
его надо подкрутить только немного, автор его выдрал из рабочего проекта, например удалить эти функции gpcvar_str