Перейти к содержанию
Официальный форум поддержки Simpla

Убираем Токен Из Адреса Изображения


Рекомендуемые сообщения

В стандарной симпле адрес изображения имеет вот такой адре:

http://simpla/files/products/Samsung-Galaxy-Mini-S5570.300x300.jpg?72fa7cbe766923a198b8ad7e132e5e9f

 

Задача получить адрес без $token-на

http://simpla/files/products/Samsung-Galaxy-Mini-S5570.300x300.jpg

 

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

 

Размеры изображений задаются через шаблон. Потому можно запомнить необходимые размеры в настройках.

 

в Design.php добавляем код

        $size = ($width?$width:0).'x'.($height?$height:0).($set_watermark?"w":'');
        $image_sizes = array();
        if($this->settings->image_sizes)
            $image_sizes = explode('|',$this->settings->image_sizes);
        if(!in_array($size, $image_sizes)){
            $image_sizes[] = $size;
            $this->settings->image_sizes = implode('|',$image_sizes);
        }

 

В Image.php добавляем код

        $size = ($width?$width:0).'x'.($height?$height:0).($set_watermark?"w":'');
        $image_sizes = array();
        if($this->settings->image_sizes)
            $image_sizes = explode('|',$this->settings->image_sizes);
        if(!in_array($size, $image_sizes)){
            header("http/1.0 404 not found");
            exit();
        }

 

в resize/resize.php

/*
if(!$simpla->config->check_token($filename, $token))
	exit('bad token');
*/

 

 

Более подробно смотрите на видео

 

 

Смотрите другие доработки в моем профиле

 

Хотите сказать спасибо? Вам сюда   :)

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 103
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

Забыли упомянуть про настроку - $this->settings->image_sizes

В админке в разделе "Настройки" обавляем поле image_sizes, где через | (вертикальную черту) вносим все допустимые размеры, включая те, что используются в админке (50x50 и 100x100).

Т.е. получится строка вида 50x50|100x100|300x300

Ссылка на сообщение
Поделиться на другие сайты

Забыли упомянуть про настроку - $this->settings->image_sizes

В админке в разделе "Настройки" обавляем поле image_sizes, где через | (вертикальную черту) вносим все допустимые размеры, включая те, что используются в админке (50x50 и 100x100).

Т.е. получится строка вида 50x50|100x100|300x300

 

не обязательно, потому что все изображения проходят через шаблон.

 

задача токена запретить нарезку изображений произвольных размеров через браузер. данное решение с этим справляется.

Ссылка на сообщение
Поделиться на другие сайты

Да, понял Вашу задумку :) Извините. Просто Вы использовали системную переменную, вот и сбило с толку.

 

безусловно можно использовать эту настройку и даже нужно.

 

К примеру - часто при создании шаблонов верстальщики балуются с размерами. после остается много мусора. зная размеры созданных изображений, имея соответствующий функционал, можно удалять именно те которые уже не нужны.

Ссылка на сообщение
Поделиться на другие сайты

Насколько я понял изменения в файле api/Image.php нужны для того чтобы не было произвольной нарезки изображений?

Ссылка на сообщение
Поделиться на другие сайты

Еще один момент - я (не знаю как другие) порой использую конструкции без передачи высоты, т.е. что-то типа

{$image->filename|resize:400}

Так вышеуказанные поправки не отрабатывали - выбрасывало на 404.

Выход нашел в принудительном указании нулевого размера. В файле api/Image.php (~105 строка) меняем

        $width = $matches[2];                    // ширина будущего изображения
        $height = $matches[3];                    // высота будущего изображения

на

        $width = $matches[2] ? $matches[2] : 0;                    // ширина будущего изображения
        $height = $matches[3] ? $matches[3] : 0;                    // высота будущего изображения
Ссылка на сообщение
Поделиться на другие сайты
  • 3 месяца спустя...

В стандарной симпле адрес изображения имеет вот такой адре:

http://simpla/files/products/Samsung-Galaxy-Mini-S5570.300x300.jpg?72fa7cbe766923a198b8ad7e132e5e9f

 

Задача получить адрес без $token-на

http://simpla/files/products/Samsung-Galaxy-Mini-S5570.300x300.jpg

 

но при это запретить произвольную нарезку изображений.

 

Размеры изображений задаются через шаблон. Потому можно запомнить необходимые размеры в настройках.

 

в Design.php добавляем код

        $size = $width.'x'.$height;
        $image_sizes = array();
        if($this->settings->image_sizes)
            $image_sizes = explode('|',$this->settings->image_sizes);
        if(!in_array($size, $image_sizes)){
            $image_sizes[] = $size;
            $this->settings->image_sizes = implode('|',$image_sizes);
        }

 

В Image.php добавляем код

        $size = $width.'x'.$height;
        $image_sizes = array();
        if($this->settings->image_sizes)
            $image_sizes = explode('|',$this->settings->image_sizes);
        if(!in_array($size, $image_sizes)){
            header("http/1.0 404 not found");
            exit();
        }

 

 

Более подробно смотрите на видео

 

Извините, а зачем убирать токен с изображений? Это как-то влияет на поисковые системы?

Ссылка на сообщение
Поделиться на другие сайты

В стандарной симпле адрес изображения имеет вот такой адре:

http://simpla/files/products/Samsung-Galaxy-Mini-S5570.300x300.jpg?72fa7cbe766923a198b8ad7e132e5e9f

 

Задача получить адрес без $token-на

http://simpla/files/products/Samsung-Galaxy-Mini-S5570.300x300.jpg

 

но при это запретить произвольную нарезку изображений.

 

Размеры изображений задаются через шаблон. Потому можно запомнить необходимые размеры в настройках.

 

в Design.php добавляем код

        $size = $width.'x'.$height;
        $image_sizes = array();
        if($this->settings->image_sizes)
            $image_sizes = explode('|',$this->settings->image_sizes);
        if(!in_array($size, $image_sizes)){
            $image_sizes[] = $size;
            $this->settings->image_sizes = implode('|',$image_sizes);
        }

 

В Image.php добавляем код

        $size = $width.'x'.$height;
        $image_sizes = array();
        if($this->settings->image_sizes)
            $image_sizes = explode('|',$this->settings->image_sizes);
        if(!in_array($size, $image_sizes)){
            header("http/1.0 404 not found");
            exit();
        }

 

 

Более подробно смотрите на видео

 

А как подключить чтобы alt к картинке брался из-за заголовка товара?

Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...

кто поставил, отпишитесь - полезное дополнение, нет?)

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты

кто поставил, отпишитесь - полезное дополнение, нет?)

Да очень полезное!!! Большое спасибо!

Изменено пользователем Maksclub
Ссылка на сообщение
Поделиться на другие сайты

+ Дополнения так то, что поисковики начнут картинки хорошо индексировать, а плагины для кнопок соцсетей наконец смогут подтягивать картинку товара без лишних манипуляций.

Проверено, работает.

Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...

Спасибо, то что искал.

 

Появился вопрос: можно ли делать картинки на выходе переименованные относительно названия товара используя чпу.


Например, загрузили картинку оригинал с названием 4ec3bbe56f65a.jpg у товара Кондиционер Electrolux FVNB 50M, а на выходе получаем kondicioner_electrolux_fvnb_50m.300x300.jpg , если указали ресайз 300 на 300


Если у товара множество картинок, в конце, после 50m, подставляем _2, _3, _4 и т. д.

 

Готов поощрить.

Изменено пользователем Денис
Ссылка на сообщение
Поделиться на другие сайты
  • 5 месяцев спустя...

В стандарной симпле адрес изображения имеет вот такой адре:

http://simpla/files/products/Samsung-Galaxy-Mini-S5570.300x300.jpg?72fa7cbe766923a198b8ad7e132e5e9f

 

Задача получить адрес без $token-на

http://simpla/files/products/Samsung-Galaxy-Mini-S5570.300x300.jpg

 

но при это запретить произвольную нарезку изображений.

 

Размеры изображений задаются через шаблон. Потому можно запомнить необходимые размеры в настройках.

 

в Design.php добавляем код



        $size = $width.'x'.$height;
        $image_sizes = array();
        if($this->settings->image_sizes)
            $image_sizes = explode('|',$this->settings->image_sizes);
        if(!in_array($size, $image_sizes)){
            $image_sizes[] = $size;
            $this->settings->image_sizes = implode('|',$image_sizes);
        }

 

В Image.php добавляем код



        $size = $width.'x'.$height;
        $image_sizes = array();
        if($this->settings->image_sizes)
            $image_sizes = explode('|',$this->settings->image_sizes);
        if(!in_array($size, $image_sizes)){
            header("http/1.0 404 not found");
            exit();
        }

 

Более подробно смотрите на видео

 

 

Хотите сказать спасибо? Вам сюда   :)

Только что обнаружил.

При добавлении нового товара картинки не появляются.

Это у меня у одного так?

Ссылка на сообщение
Поделиться на другие сайты

Разобрался с ошибками.

Забыл отредактировать файл resize/resize.php 

т.е. не закоментировал строки:

require_once('../api/Simpla.php');

$filename = $_GET['file'];
$token = $_GET['token'];

$simpla = new Simpla();
/*
if(!$simpla->config->check_token($filename, $token))
	exit('bad token');		
*/
$resized_filename =  $simpla->image->resize($filename);

if(is_readable($resized_filename))
{
	header('Content-type: image');
	print file_get_contents($resized_filename);
}

Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...

 

Разобрался с ошибками.

Забыл отредактировать файл resize/resize.php 

т.е. не закоментировал строки:

require_once('../api/Simpla.php');

$filename = $_GET['file'];
$token = $_GET['token'];

$simpla = new Simpla();
/*
if(!$simpla->config->check_token($filename, $token))
	exit('bad token');		
*/
$resized_filename =  $simpla->image->resize($filename);

if(is_readable($resized_filename))
{
	header('Content-type: image');
	print file_get_contents($resized_filename);
}

Спасибо ЧЕЛОВЕЧИЩЕ!!!

Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...