LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
27.05.2012, 16:56:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: [Хак] Загрузка файлов с именами на русском языке для Kunena 1.7.1  (Прочитано 392 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
leo78
Завсегдатай
*****

Репутация: +52/-7
Offline Offline

Пол: Мужской
Сообщений: 764


I left from paradise!?...


« : 05.01.2012, 21:39:03 »

Пока готового решение нет!


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

/libraries/joomla/filesystem/file.php

Находим ст. 50-60:
Код:
/**
* Makes file name safe to use
*
* @param string $file The name of the file [not full path]
* @return string The sanitised string
* @since 1.5
*/
function makeSafe($file) {
$regex = array('#(\.){2,}#', '#[^A-Za-z0-9\.\_\- ]#', '#^\.#');
return preg_replace($regex, '', $file);
}

Здесь для J1.5 от ChaosHead - код не доделан
Код:
function makeSafe($file) {

// $regex = array('#(\.){2,}#', '#[^A-Za-z0-9\.\_\- ]#', '#^\.#');
// return preg_replace($regex, '', $file);

$gost299 = array(
                   "Рђ"=>"A","Р‘"=>"B","Р’"=>"V","Р“"=>"G","Р”"=>"D",
                   "Р•"=>"E","РЃ"=>"JO","Р–"=>"ZH",
                   "Р—"=>"Z","Р˜"=>"I","Р™"=>"J","Рљ"=>"K","Р›"=>"L",
                   "Рњ"=>"M","Рќ"=>"N","Рћ"=>"O","Рџ"=>"P","Р "=>"R",
                   "РЎ"=>"S","Рў"=>"T","РЈ"=>"U","Р¤"=>"F","РҐ"=>"H",
                   "Р¦"=>"C","Р§"=>"CH","РЁ"=>"SH","Р©"=>"SHH","РЄ"=>"",
                   "Р«"=>"Y","Р¬"=>"","Р­"=>"JE","Р®"=>"YU","РЇ"=>"YA",
                   "Р°"=>"a","Р±"=>"b","РІ"=>"v","Рі"=>"g","Рґ"=>"d",
                   "Рµ"=>"e","С‘"=>"jo","Р¶"=>"zh",
                   "Р·"=>"z","Рё"=>"i","Р№"=>"j","Рє"=>"k","Р»"=>"l",
                   "Рј"=>"m","РЅ"=>"n","Рѕ"=>"o","Рї"=>"p","СЂ"=>"r",
                   "СЃ"=>"s","С‚"=>"t","Сѓ"=>"u","С„"=>"f","С…"=>"h",
                   "С†"=>"c","С‡"=>"ch","С€"=>"sh","С‰"=>"shh","СЉ"=>"",
                   "С‹"=>"y","СЊ"=>"","СЌ"=>"je","СЋ"=>"yu","СЏ"=>"ya"," "=>"-"
                );

                $res = trim($file);
                $res = strtr($res, $gost299);
                $res = preg_replace(array('/\s+/','/[\$\&\+\,\/\:\;\=\?\@\'\"\<\>\#\%\{\}\|\\\^\~\[\]\`\.]/'), array('-',''), $res);
                $res = str_replace ('-', ' ', $res);
                $res = trim (strtolower ($res));
                $res = preg_replace(array('/\s+/','/[^A-Za-z0-9\-]/'), array('-','-'), $res);

return $res;
}
Цитировать
       Не удалось загрузить 'tam-gdejpg' файл: Вы должны использовать разрешённые расширения файлов (для изображения: jpg, jpeg, gif, png и другие файлы: txt, rtf, pdf, zip, tar.gz, tgz, tar.bz2).
        Не удалось загрузить 'fajlzip' файл: Вы должны использовать разрешённые расширения файлов (для изображения: jpg, jpeg, gif, png и другие файлы: txt, rtf, pdf, zip, tar.gz, tgz, tar.bz2).


Для  J1.7 от AlexSmok - вроде работает
Цитировать
public static function makeSafe($file)
{
//$regex = array('#(.){2,}#', '#[^A-Za-z0-9._- ]#', '#^.#');
//return preg_replace($regex, '', $file);

$gost = array(
"╨Р"=>"A","╨С"=>"B","╨Т"=>"V","╨У"=>"G","╨Ф"=>"D",
"╨Х"=>"E","╨Б"=>"JO","╨Ц"=>"ZH",
"╨Ч"=>"Z","╨Ш"=>"I","╨Щ"=>"J","╨Ъ"=>"K","╨Ы"=>"L",
"╨Ь"=>"M","╨Э"=>"N","╨Ю"=>"O","╨Я"=>"P","╨а"=>"R",
"╨б"=>"S","╨в"=>"T","╨г"=>"U","╨д"=>"F","╨е"=>"H",
"╨ж"=>"C","╨з"=>"CH","╨и"=>"SH","╨й"=>"SHH","╨к"=>"",
"╨л"=>"Y","╨м"=>"","╨н"=>"JE","╨о"=>"YU","╨п"=>"YA",
"╨░"=>"a","╨▒"=>"b","╨▓"=>"v","╨│"=>"g","╨┤"=>"d",
"╨╡"=>"e","╤С"=>"jo","╨╢"=>"zh",
"╨╖"=>"z","╨╕"=>"i","╨╣"=>"j","╨║"=>"k","╨╗"=>"l",
"╨╝"=>"m","╨╜"=>"n","╨╛"=>"o","╨┐"=>"p","╤А"=>"r",
"╤Б"=>"s","╤В"=>"t","╤Г"=>"u","╤Д"=>"f","╤Е"=>"h",
"╤Ж"=>"c","╤З"=>"ch","╤И"=>"sh","╤Й"=>"shh","╤К"=>"",
"╤Л"=>"y","╤М"=>"","╤Н"=>"je","╤О"=>"yu","╤П"=>"ya"," "=>"-"
);

$res = trim($file);
$res = strtr($res, $gost);
$res = preg_replace(array('/s+/','/[$&+,/:;=?@'"<>#%{}|\^~[]`]/'), array('-',''), $res);
$res = str_replace ('-', ' ', $res);
$res = trim (strtolower ($res));
$res = preg_replace('#(.){2,}#','.', $res);
return $res;
}

Есть ещё вариант от pawa - этот вариант точно не работает)))
Код:
function makeSafe($file) {
- $regex = array('#(\.){2,}#', '#[^A-Za-z0-9\.\_\- ]#', '#^\.#');
- return preg_replace($regex, '', $file);
+ $res = preg_replace('#(\.){2,}#','.', $file);
+ $res = preg_replace('#^\.#','', $res);
+ $res = preg_replace('#[^A-Za-z0-9\.\_\- ]#','-', $res);
+ return $res;
 }


Мой вариант, но есть проблемы,  все буквы не делает строчными, то есть оставляет заглавные буквы не переводит их в строчные.
Код:
function makeSafe($file) {
                $gost = array(
                   "Рђ"=>"A","Р‘"=>"B","Р’"=>"V","Р“"=>"G","Р”"=>"D",
                   "Р•"=>"E","РЃ"=>"JO","Р–"=>"ZH",
                   "Р—"=>"Z","Р˜"=>"I","Р™"=>"J","Рљ"=>"K","Р›"=>"L",
                   "Рњ"=>"M","Рќ"=>"N","Рћ"=>"O","Рџ"=>"P","Р "=>"R",
                   "РЎ"=>"S","Рў"=>"T","РЈ"=>"U","Р¤"=>"F","РҐ"=>"H",
                   "Р¦"=>"C","Р§"=>"CH","РЁ"=>"SH","Р©"=>"SHH","РЄ"=>"",
                   "Р«"=>"Y","Р¬"=>"","Р­"=>"JE","Р®"=>"YU","РЇ"=>"YA",
                   "Р°"=>"a","Р±"=>"b","РІ"=>"v","Рі"=>"g","Рґ"=>"d",
                   "Рµ"=>"e","С‘"=>"jo","Р¶"=>"zh",
                   "Р·"=>"z","Рё"=>"i","Р№"=>"j","Рє"=>"k","Р»"=>"l",
                   "Рј"=>"m","РЅ"=>"n","Рѕ"=>"o","Рї"=>"p","СЂ"=>"r",
                   "СЃ"=>"s","С‚"=>"t","Сѓ"=>"u","С„"=>"f","С…"=>"h",
                   "С†"=>"c","С‡"=>"ch","С€"=>"sh","С‰"=>"shh","СЉ"=>"",
                   "С‹"=>"y","СЊ"=>"","СЌ"=>"je","СЋ"=>"yu","СЏ"=>"ya"," "=>"-"
                );
$regex = array('#(\.){2,}#', '#[^A-Za-z0-9\.\_\- ]#', '#^\.#');
        $res = trim($file);
        $res = strtr($res, $gost);
return preg_replace($regex, '', $res);
}
Пример:  

- У нас есть два файла:

Там где.jpg
файл.zip

Код переведёт их:

fajl.zip
Tam-gde.jpg


 drink

« Последнее редактирование: 25.01.2012, 15:25:21 от ChaosHead » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet