Перейти к контенту
  • 0

названия аттачей исчезают


Casper975

Вопрос

Помогите пожалуйста, отчего может быть такой баг: прицепляю к сообщению файл, и если в названии есть русские буквы, то они все меняются на подчеркивания. Кодировку, вроде, везде, где только можно поправил, Remove chr(0xCA) from input отключил, т.е. в самих постах буквы не исчезают...

 

P.S. поиском пользовался, но что-то ничего похожего не нашел :D

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

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

  • 0

Русские имена файлов любой нормальный сервер поддерживает. Главное - с кодировкой чтобы вопрос был решён.

 

Другое дело, что IB все нелатинские буквы/цифры и т.п. в именах принудительно меняет на подчерки :D

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

  • 0
так вроде нет серверов с поддержкой русских имен файлов

Русские имена файлов тут ни при чём. Файлы при закачке получают служебные имена, там всё на английском.

 

Виновата во всём этом деле вот эта строчка в Post.php:

$FILE_NAME = preg_replace( "/[^\w\.]/", "_", $FILE_NAME );

Т.е., по идее, если её закомментировать / удалить / добавить в регулярное выражение ещё

А-Яа-я

то всё должно стать путём.

 

Но странная вещь - у меня на локалхосте (стандартный Денвер-2) русские имена файлов НЕ заменяются подчеркиваниями. Это значит, что А-Яа-я - уже входят в шаблон \w. По-русски - это значит, что замена русских букв подчёркиваниями определяется настройками PHP.

Под Денвером-2 + PHP5 русские имена файлов вообще заменяются на вот такой ужастик:

__1054____1079___1072___1097___1080___1090___1077____1087___1088___1072___1074__

__1087___1086___1090___1088___1077___1073___1080___1090___1077___1083___1077___1

0

81_.rtf

По ходу, дело в уникоде, но не знаю - разбираться не стал.

Такие вот дела.

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

  • 0
Походу дела, на локалхосте под Денвером у меня тоже не заменяются. Значит виноват провайдер? И все же, можно-ли это как-нить исправить?
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Э... Не знаю, карается ли здесь up, но вопрос все еще в силе :D Как исправить сию гадость? катить бочку на провайдера?
Ссылка на комментарий
Поделиться на других сайтах

  • 0
$FILE_NAME = preg_replace( "/[^\w\.]/", "_", $FILE_NAME );

— закомментировать или удалить. И проверить. Если всё работает - то и слава богу.

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

  • 0

а для личных сообщений в каком файле это искать?

 

все, нашел... для 2.1.*

надо искать в файле ips_kernel\class_upload.php

 

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

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

  • 0
Закомментировал. Русские стали аттачица. Вопрос в безопасности. Какие могут быть последствия?
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Да все таки? Как насчет безопасности?

Эта регулярка как то повышает безопасность?

и эту регулярку я нашел не в Post.php, а в class_upload.php

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

  • 0

Т.е. если совместить, то получится так?

 

$FILE_NAME = preg_replace( "/[^a-zA-Z0-9а-яА-Я\-\.\_]/", "_", $FILE_NAME );

 

Это будет верно?

 

Дело в том, что русские имена у аттачей пропали после одного из официальных фиксов безопасности, к сожалению не помню номер и ссылку, но там говорилось именно об этом. В принципе можно поднять FAQ и найти этот фикс.

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

  • 0

Искал во всех файлах - не нашёл вообще нигде эту строчку :D

 

Версия форума: 2.0.х

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

  • 0
Т.е. если совместить, то получится так?

 

$FILE_NAME = preg_replace( "/[^a-zA-Z0-9а-яА-Я\-\.\_]/", "_", $FILE_NAME );

 

Это будет верно?

 

Дело в том, что русские имена у аттачей пропали после одного из официальных фиксов безопасности, к сожалению не помню номер и ссылку, но там говорилось именно об этом. В принципе можно поднять FAQ и найти этот фикс.

 

сделал именно так

 

в файле class_upload.php

 

все заработало...

------------------------------

Мой вопрос по безопасности в службу поддержки

 

Это как то может повлиять на безопасность форума?

 

Ответ:

Нет, у Вас значит хостинг настроен нормально. Просто не для каждого хостинга

подойдет такое решение, поэтому если Вы вдруг будете переносить форум на

другой хостинг обратите на это внимание.

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

  • 0
замените регулярку на более человеческое =)

 

[^a-zA-Z0-9а-яА-Я\-\.\_]

 

Эта регулярка, увы, неполная

 

Она делает дополнительное подчёркивание после каждого слова, да скобки пропадают...

 

 

а вот закомментить строчку в class_upload.php действительно помогает...

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

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

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

Гость
Ответить на вопрос...

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

  Допустимо не более 75 смайлов.

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

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

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

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

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.