Jump to content

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


Recommended Posts

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

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');
*/

 

 

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

 

 

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

 

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

Edited by DaVinci
Link to post
Share on other sites
  • Replies 103
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

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

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

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

Link to post
Share on other sites

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

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

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

 

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

 

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

Link to post
Share on other sites

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

 

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

 

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

Link to post
Share on other sites

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

{$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;                    // высота будущего изображения
Link to post
Share on other sites
  • 3 months later...

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

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();
        }

 

 

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

 

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

Link to post
Share on other sites

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

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 к картинке брался из-за заголовка товара?

Link to post
Share on other sites
  • 2 months later...

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

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

Link to post
Share on other sites
  • 3 weeks later...

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

 

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


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


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

 

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

Edited by Денис
Link to post
Share on other sites
  • 5 months later...

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

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();
        }

 

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

 

 

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

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

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

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

Link to post
Share on other sites

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

Забыл отредактировать файл 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);
}

Link to post
Share on other sites
  • 3 weeks later...

 

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

Забыл отредактировать файл 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);
}

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

Link to post
Share on other sites
  • 2 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...