Groove

Groove
Рейтинг
41
Регистрация
22.02.2007
Должность
Разработка сайтов
_wind_:
что такое "ЧПУ"?

ЧеловекоПонятныйУрл

надо слешить точку:


RewriteEngine On
RewriteRule ^script\.php?parametr=777&id=(.*)$ ...

Алексей Юрьевич

verhmax:
о, это уже лучше, спасибо. правда необходимость в таком скрипте не для того чтоб скрывать картинки и логировать, а наоборот, пользователи любые должны видеть эти картинки, и картинка с адресом, к примеру, images1.gif должна показываться любому и логироваться на каком сайте она размещена. данные о человеке который её смотрит меня не интерисуют, мне главное с какого адреса любая из папки картинка грузиться.

тогда надо изменить 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;
}
?>
verhmax:
я вот что-то не очень разобрался.
1. в htaccess надо прописать чтоб все картинки с папки images при вызове извне обрабатывались скриптом fake_img.php.
В самомже fake_img.php должно происходить открытие картинки и:
записать откуда запрашивает - не разобрался
послать нужный заголовок - что нам это даст?

Итак у нас есть сайт, картинки которого мы не хотим давать наружу и плюсом к этому еще попалить тех, кто их использует.

Для этого:

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/

для меня вопрос снят по объективности оценки, когда я заглянул в код, который он оценил и дал сайту первое место...

verhmax:
а это поможет? ткни пальцем куда именно смотреть! работу с графикой в php знаю, но чтоб проверять кто грузит куртинку этого не заметил:(

1) открыть файл картинки

$content = file_get_contents($file_name);

2) записать откуда запрашивает

3) послать нужный заголовок

header('Content-Type: image/jpeg'); 

4) сделать

print $content;

а в htaccess надо прописать, чтобы для удаленных вызовов картинки апач отдавал их через скрипт

что то типа того:

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^$ [OR]
RewriteCond %{HTTP_REFERER} !^.*sitename\.ru.*$ [NC]
RewriteRule .*\.(gif|jpg)$ /fake_img.php

P.S.: тут же можно пакостить, добавляя веселые надписи на картинки)))

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

Всего: 165