• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь Подмена картинки для незарегистрированого пользователя

Статус
В этой теме нельзя размещать новые ответы.
А не легче через .htaccess ограничить доступ по рефферу? Или нужна защита от загрузки картинок даже с рефером вашего сайта для незарегистрированных пользователей?

Собственно через .htaccess уже запретил для скачивания напрямую (не с сайта:(

Код:
Options -Indexes
RewriteCond %{HTTP_REFERER} !^http://(www.)?ПОДДОМЕН.ДОМЕН/ПАПКА_С_ГРАФ_РЕСУРСАМИ.*$ [NC]
RewriteRule .(jp?g|gif|png|css|mov|swf|dcr|exe|rar|avi|vob|zip)$ - [F]


Но стоит задача для незарегистрированых юзеров подсовывать левую картинку. При этом картинка под каждую публикацию - разная (генерится с надписью. Подробно описывалось выше). И здесь уже кое какие наработки есть.
Через правило в .htaccess:
Код:
RewriteRule  ^[0-9]*\.jpeg$ БЛА_БЛА_БЛА.jpgphp
AddHandler application/x-httpd-php .jpgphp
Все запросы картинок (для тестирования пока только .jpeg) пересылаются на скрипт БЛА_БЛА_БЛА.jpgphp
В итоге скрипт генерит картинку с надписью и отдает юзеру.

Код скрипта пока сырой:
Код:
<?php
function true_img ($jpeg_file) {
//функция открытия правильной картинки 
  // Создаем изображение из JPEG-файла  
  $img = imagecreatefromjpeg($jpeg_file)ж
  return $img;
}
function false_img ($mynews_id ) {   //$mynews_id - название новости, из которой запрашивают картинку
	$img = false;
	$strimg = "БЛАБЛАБЛА". $mynews_id . "БЛАБЛАБЛА";
	$himg = 3*imagefontheight ('cambriab');
	$vimg = 10 * strlen ($strimg);
	$img = @imagecreate ($vimg, $himg)
		or die ("Cannot Initialize new GD image stream ");
	$background_color = imagecolorallocate ($img, 255, 255, 255);
	$text_color = imagecolorallocate ($img, 0, 0, 0);
	imagestring ($img, 5, 5, 2,  $strimg, $text_color); 
return $img;
}
//global ??????????????????????????
//проверяем юзера
if ЗАРЕГИСТРИРОВАН {
$im = true_img ("путь к правильной картинке");
}else{
$im = false_img ($ПЕРЕМЕННАЯ_С_ИМЕНЕМ_СТАТЬИ);
}
imagejpeg($im); 
ImageDestroy($img);

?>


Не знаю как в него передать:
1.название просматриваемой статьи.
2.код групи юзера(зареган/не зареган).
 
Заголовок есть в файлах "\engine\modules\show.short.php" и "\engine\modules\show.full.php"
после
PHP:
while ( $row = $db->get_row( $sql_result ) ) {
Можно вкладывать твой код includом сразу после этой строки.

$row['title'] - заголовок просматриваемой статьи
$member_id['user_group'] - номер группы юзера
$is_logged - авторизован
 
Juror А не слишком ли большая нагрузка будет на сервер если каждый раз генерировать изображение? Можно было бы сделать статичное изображение для всех новостей, либо чтобы при заливке изображения для новости создавалось сразу 2 файла: оригинал и файл для не зарегестрированных пользователей?
 
Juror А не слишком ли большая нагрузка будет на сервер если каждый раз генерировать изображение? Можно было бы сделать статичное изображение для всех новостей, либо чтобы при заливке изображения для новости создавалось сразу 2 файла: оригинал и файл для не зарегестрированных пользователей?


Уввы, я не знаю. :(
Кто может подсказать, как рассчитать нагрузку на сервер от просмотра (за сутки) 1к новостей, в каждой из которых в среднем по 3 картинки? (При варианте автогенерации картинок)
 
3000 * время генерации.
Время можно замерить вложив код между:
PHP:
$bench = microtime(1);
и
PHP:
$bench_time = microtime(1)-$bench;
echo '<hr>'.round($bench_time, 2).' сек.<hr><br>';
 
При авто генерации нагрузки будет намного больше чем от вывода статических. Так как в статье у тебя картинка будет генериться по 3 раза. Нагрузки будет достаточно много
 
Либо можно сделать что то на вроде генераций с кешированием, грубо говоря таже статика
 
Спс. Вопрос решил через .htaccess. При запросе незареганого юзера ему подсовывается стат.картинка с рекомендацией зарегистрироватся.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху