← На сайт  FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   

Форум находится в режиме только для чтения!
 
Всвязи с тем, что на данный момент основная команда ARAdmin Software прекратила свою деятельность, данный форум переведен в архивный режим и доступен только для чтения и регистрация и авторизация отключены.
Тем не менее, мы считаем, что расположенная здесь информация может быть полезна людям, поэтому сайт будет существовать и дальше, но только в нынешнем режиме.

С уважением, команда ARAdmin Software

 

weblog_posting.php

 
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов ARAdmin Software -> PHP
Предыдущая тема :: Следующая тема  
Автор Сообщение
Александр Михалицын


*MOD Installer Maintainer

*MOD Installer Maintainer
Зарегистрирован: 10.11.2007
Сообщения: 125

СообщениеДобавлено: Пн Апр 14, 2008 10:58 am    Заголовок сообщения: weblog_posting.php Ответить с цитатой

Короче установил мод The Blogs Mod для phpBB 2.0.23
все вроде ок.. но хочу немного переделать встроеную закачку картинок что бы она заливала зипы и рары..
вроде переделал но не работает..

Код:
function check_image_type(&$type)
{
switch( $type )
{
case 'zip':
return '.zip';
break;
case 'rar':
return '.rar';
break;
case 'jpeg':
return '.jpeg';
break;
case 'jpg':
return '.jpg';
break;
case 'gif':
return '.gif';
break;
case 'png':
return '.png';
break;
default:
break;
}
return false;
}

Код этой функции ему передается тип файла и он возврашает нужное значение но.. вот незадача.. я добавил кейсы.. а он возврашает false;
почему?? Вы скажете. скорее другие функции виноваты но нет..
я в жтой функции решил обхитрить для теста чтобы выяснить виновного.. так вот напсал вместо return false; return true;
прокатило!! В чем ошибка в switch'e ?? Помогите плиз![/code]
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Gosudar


Новый член клуба

Новый член клуба
Зарегистрирован: 12.03.2008
Сообщения: 12

СообщениеДобавлено: Пн Апр 14, 2008 3:24 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
вроде переделал но не работает..

и не будет работать.
Если найти код где вызывается эта функция check_image_type
Код:
$imgtype = check_image_type($image_filetype);

и посмотреть на 7 строчек выше:
Код:
if ( preg_match('/\.(jpg|jpeg|gif|png)$/i', $image_name) )

отсюда нужно начинать копать
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Александр Михалицын


*MOD Installer Maintainer

*MOD Installer Maintainer
Зарегистрирован: 10.11.2007
Сообщения: 125

СообщениеДобавлено: Пн Апр 14, 2008 6:46 pm    Заголовок сообщения: Ответить с цитатой

Да.. вот что меня бесит в неокторых людях.. ты пост внимательно почитал.. от начала до конца?? Я ж ведь напсал что если япишу return true; работает.. а теперь сам догадайся увидел ли я твой прег мач...
в твоем коде уже давно я все заменил и сделал я попросил поправить кейс..

_________________
Мой сайт с моими разработками
Мой форум
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Gosudar


Новый член клуба

Новый член клуба
Зарегистрирован: 12.03.2008
Сообщения: 12

СообщениеДобавлено: Пн Апр 14, 2008 9:59 pm    Заголовок сообщения: Ответить с цитатой

Эх, молодо-зелено, только хамить умеют

MIME тип-s:
image/gif , image/jpeg , image/png и application/zip
разницу видите?

Добавлено спустя 5 минут 42 секунды:

и замена на return true ничего не даёт. Это не решение проблемы.
Это обход проблемы.
Просто в функцию check_image_type в случае zip попадает $type=application/zip

смотрим дальше:

Код:
   if ( preg_match('/\.(jpg|jpeg|gif|png)$/i', $image_name) )
   {
      if ( $image_size <= $weblog_config['max_pic_size'] && $image_size > 0 )
      {
         preg_match('#image\/[x\-]*([a-z]+)#', $image_filetype, $image_filetype);
         $image_filetype = $image_filetype[1];

         list($width, $height) = @getimagesize($image_filename);

         $imgtype = check_image_type($image_filetype);

getimagesize выдаст false (даже может ругнуться в зависимости от E_WARNING) для zip-a со всеми вытекающими проблемами.

Во-как, молодой, хамоватый человек.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Александр Михалицын


*MOD Installer Maintainer

*MOD Installer Maintainer
Зарегистрирован: 10.11.2007
Сообщения: 125

СообщениеДобавлено: Вт Апр 15, 2008 8:41 am    Заголовок сообщения: Ответить с цитатой

Я нехамоватый..я сразу отпостил с просьюой о помощи..
а вы начали говорить про прегмач.. я как только первый раз скрипт открыл сразу нашел в нем все строки где уптребляются слова png gif итд..и везде добавлял свои расширения... я не хамлю.. протсто знаете время поджимает.. а мне вместо того что бы помоч тыкают в мое незнание..

@getimagesize(); подскажите пожалуйста.. есть ли замена этой функции подходящая не только для картиинок но и простых файлов.. Embarassed

А за то что вспылил простите чесно Embarassed Embarassed
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Gosudar


Новый член клуба

Новый член клуба
Зарегистрирован: 12.03.2008
Сообщения: 12

СообщениеДобавлено: Вт Апр 15, 2008 9:20 am    Заголовок сообщения: Ответить с цитатой

Цитата:
а вы начали говорить про прегмач.
правильно, про прегматч preg_match('#image\/[x\-]*([a-z]+)#', $image_filetype, $image_filetype);$image_filetype = $image_filetype[1];
как раз здесь из image/gif получается gif, ну а zip то нигде не обрабатывется (так и остаётся application/zip)

getimagesize() - только для картинок. описание: http://lv2.php.net/manual/ru/function.getimagesize.php
Берётся размер картинки $width, $height и затем в скрипте сравнивается с max_pic_width, max_pic_height И если наши больше то сообщение - слишком велика.

Может быть имеет смысл оставить как есть этот код
Код:
   if ( preg_match('/\.(jpg|jpeg|gif|png)$/i', $image_name) )
   {   бла-бла .....


А вместо вот этого
Код:
      else
      {
         $template->assign_block_vars('switch_preview', array());

         $template->assign_vars(array(
            'PREVIEW_MESSAGE' => $lang['Picture_too_big'])
         );
      }

сделать что-то на подобие

Код:
      else if ( preg_match('/\.(zip)$/i', $image_name) )
      {
         //Ок filetype=zip. Check file and upload file
         //bla-bla-bla
      }
      else
      {
      $template->assign_block_vars('switch_preview', array());

      $template->assign_vars(array(
         'PREVIEW_MESSAGE' => $lang['Wrong_file_type'])
      );
      }

Вместо bla-bla-bla - процедура проверки и обработки файла zip.

Хотя можно и не заморачиваться прописать
case 'application/zip':

а перед getimagesize проверять расширение, и если не картинки, то просто не вызывать эту функцию, а указать типа размер $height=1, $width = 1.

пы.сы. всё таки правильней первый вариант.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Александр Михалицын


*MOD Installer Maintainer

*MOD Installer Maintainer
Зарегистрирован: 10.11.2007
Сообщения: 125

СообщениеДобавлено: Вт Апр 15, 2008 4:39 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
getimagesize() - только для картинок

А есть аналог для обычных файлов?

_________________
Мой сайт с моими разработками
Мой форум
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Alek$


Разработчик<br>Почетный член клуба

Разработчик
Почетный член клуба
Зарегистрирован: 17.05.2007
Сообщения: 157

СообщениеДобавлено: Пт Апр 18, 2008 3:00 pm    Заголовок сообщения: Ответить с цитатой

Systemnik
нет, конечно. Как можно получить высоту и ширину, например, архива Wink
При обработке обычных файлов можно эту функцию просто пропускать.

_________________
Самая страшная ошибка - это ошибка без видимых причин и конкретных последствий.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Александр Михалицын


*MOD Installer Maintainer

*MOD Installer Maintainer
Зарегистрирован: 10.11.2007
Сообщения: 125

СообщениеДобавлено: Вс Май 04, 2008 3:08 pm    Заголовок сообщения: Ответить с цитатой

Ой.. я просто неправильно понял слово size я думал, это размер файла.. Embarassed
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов ARAdmin Software -> PHP Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB