| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
Александр Михалицын

*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] |
|
| Вернуться к началу |
|
 |
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 Зарегистрирован: 10.11.2007 Сообщения: 125
|
Добавлено: Пн Апр 14, 2008 6:46 pm Заголовок сообщения: |
|
|
Да.. вот что меня бесит в неокторых людях.. ты пост внимательно почитал.. от начала до конца?? Я ж ведь напсал что если япишу return true; работает.. а теперь сам догадайся увидел ли я твой прег мач...
в твоем коде уже давно я все заменил и сделал я попросил поправить кейс.. _________________ Мой сайт с моими разработками
Мой форум |
|
| Вернуться к началу |
|
 |
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 Зарегистрирован: 10.11.2007 Сообщения: 125
|
Добавлено: Вт Апр 15, 2008 8:41 am Заголовок сообщения: |
|
|
Я нехамоватый..я сразу отпостил с просьюой о помощи..
а вы начали говорить про прегмач.. я как только первый раз скрипт открыл сразу нашел в нем все строки где уптребляются слова png gif итд..и везде добавлял свои расширения... я не хамлю.. протсто знаете время поджимает.. а мне вместо того что бы помоч тыкают в мое незнание..
@getimagesize(); подскажите пожалуйста.. есть ли замена этой функции подходящая не только для картиинок но и простых файлов..
А за то что вспылил простите чесно |
|
| Вернуться к началу |
|
 |
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 Зарегистрирован: 10.11.2007 Сообщения: 125
|
Добавлено: Вт Апр 15, 2008 4:39 pm Заголовок сообщения: |
|
|
| Цитата: | | getimagesize() - только для картинок |
А есть аналог для обычных файлов? _________________ Мой сайт с моими разработками
Мой форум |
|
| Вернуться к началу |
|
 |
Alek$

Разработчик Почетный член клуба Зарегистрирован: 17.05.2007 Сообщения: 157
|
Добавлено: Пт Апр 18, 2008 3:00 pm Заголовок сообщения: |
|
|
Systemnik
нет, конечно. Как можно получить высоту и ширину, например, архива
При обработке обычных файлов можно эту функцию просто пропускать. _________________ Самая страшная ошибка - это ошибка без видимых причин и конкретных последствий. |
|
| Вернуться к началу |
|
 |
Александр Михалицын

*MOD Installer Maintainer Зарегистрирован: 10.11.2007 Сообщения: 125
|
Добавлено: Вс Май 04, 2008 3:08 pm Заголовок сообщения: |
|
|
Ой.. я просто неправильно понял слово size я думал, это размер файла.. |
|
| Вернуться к началу |
|
 |
|