Advanced search  

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Pages: 1 [2] 3   Go Down

Author Topic: Отображение галереи в кодировке windows-1251 win1251  (Read 43606 times)

0 Members and 1 Guest are viewing this topic.

LeaX

  • Coppermine regular visitor
  • **
  • Offline Offline
  • Posts: 96
    • Lost Jack and Kate

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

До этого у меня были изменены файлы по варианту natalina (см.выше)
Я их менять не стала обратно, просто доделала следующее:

1. Нашла файл Russian (/gallery/language/russian.php).
Он действительно был в кодировке UTF-8, но это не его название.
Открыла в блокноте. Файл-Сохранить как-(внизу выбрала в выпадающем списке вместо UTF-8 - ANSI)

2. admin.php - (/gallery/admin.php)
Куда писать строчку: 'Cyrillic (windows-1251)' => 'windows-1251' ?
Неясно.
Оказывается если ручками перегрести, то можно найти такую строчку:
'Cyrillic' => 'koi8-r'

Подозреваю, что нужно ее как раз и заменить на 'Cyrillic (windows-1251)' => 'windows-1251'
По крайней мере я так и сделала.

В Конфиге (кнопка слева в админке Галереи) поменяла кодировку на Cyrillic (windows-1251). В результате все добавленные ранее буквы отобразились крякозябрами.

3. Поиск search.inc.php - (/gallery/include/search.inc.php)

Находим это
$multibyte_charset = 'UTF-8, big5, shift_jis, euc-kr, gb2312';

Меняем на это:
$multibyte_charset = 'UTF-8, windows-1251, big5, shift_jis, euc-kr, gb2312';

4. keyword_select.php - (gallery/keyword_select.php)

Такой строчки у меня не нашлось
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Поэтому я вбила половину и нашла вот это
<meta http-equiv="Content-Type" content="text/html; charset=$charset" />

Заменила на
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

5. stat_details.php - (gallery/stat_details.php)
Анналогично

После всего проделанного имею Галерею в кодировке win-1251 явно, но:
-админ-панель в win-1251
-а вот все добавленные ранее названия категорий и материалов идут крякозябрами (UTF-8)

Ручками перебиваю название одного из альбомов - забивается в кодировке win-1251
Вопрос что делать с разделами/категориями? Видимо делать новые и перетаскивать в них старые альбомы.
« Last Edit: April 03, 2009, 11:59:01 pm by Makc666 »
Logged

natalina

  • Coppermine regular visitor
  • **
  • Offline Offline
  • Gender: Female
  • Posts: 96
    • Interior & Architecture

Да, после изменения кодировки придется названия менять. Но зачем создавать и перетаскивать?! С помощью менеджера альбомов можно заменить названия:)   
« Last Edit: April 03, 2009, 11:58:55 pm by Makc666 »
Logged

Alex Revo

  • Moderator
  • Coppermine addict
  • ****
  • Offline Offline
  • Posts: 637
  • Инженер человеческих душ
    • Фото Ростова-на-Дону

Все шаги выполнены правильно, но вы забыли о главном - переконвертировать базу данных. 

Для этого нужно сделать бекап и спрятать подальше, потом запустить charsetmgr.php и попробовать переконвертировать значения c UTF-8 в Win-1251
Не факт что все пройдет гладко, если база большая может не хватить времени на выполнение скрипта или ошибки какие вылезут, а может и получится.
Еще, если у вас есть какие-то записи в полях USER 1-5 - они останутся в старой кодировке, т.к. скрипт их не трогает (хотя может уже и исправили этот косяк, я давно делал)
Еще можно испробовать такой вариант, слить дамп базы и с помощью программы Штирлиц переконвертировать его в 1251 или просто открыть в блокноте, если русский текст читается нормально сохраните этот дамп в кодировке ANSI и попробуйте залить. Потом проверьте чтобы во всех сопоставлениях базы были только cp_1251

Если все получится то, у вас будет полностью рабочая галерея в кодировке 1251. Далее от версии к версии нужно просто будет править файлы и все.

В скором будущем я планирую выпустить свою сборку галереи специально в кодировке 1251  с настроеным бриджем к Джумла.
« Last Edit: April 03, 2009, 11:58:40 pm by Makc666 »
Logged

Andrey

  • Coppermine newbie
  • Offline Offline
  • Posts: 16

Здравствуйте! Я сделал всё по инструкции LeaX, далее преобразовал все файлы базы данных из UTF-8 в win1251 с помощью Штирлица 4.0, все получилось великолепно но почему то файл cpg149_users.MYD не поддается конвертированию ни в какую, т.е. после декодирования этого файла сразу же Fatal error. Кто знает в чём проблемка? 
« Last Edit: April 03, 2009, 11:58:32 pm by Makc666 »
Logged

Alex Revo

  • Moderator
  • Coppermine addict
  • ****
  • Offline Offline
  • Posts: 637
  • Инженер человеческих душ
    • Фото Ростова-на-Дону

Вероятно потому, что при перекодировке нарушаются контрольные суммы зашифрованных паролей. Не трогайте эту таблицу и все будет хорошо или правьте только текстовые поля. 
« Last Edit: April 03, 2009, 11:58:22 pm by Makc666 »
Logged

Andrey

  • Coppermine newbie
  • Offline Offline
  • Posts: 16

Вероятно потому, что при перекодировке нарушаются контрольные суммы зашифрованных паролей. Не трогайте эту таблицу и все будет хорошо или правьте только текстовые поля.
да, но ведь тогда русские имена в usermgr.php отображаются кракозябрями! вообщем у меня получилось всё переконвертировать успешно вот кроме этих Имен пользователей на русском языке! Есть ещё какие нибудь варианты? 
« Last Edit: April 03, 2009, 11:58:18 pm by Makc666 »
Logged

Alex Revo

  • Moderator
  • Coppermine addict
  • ****
  • Offline Offline
  • Posts: 637
  • Инженер человеческих душ
    • Фото Ростова-на-Дону

Посмотрите чтобы для этих полей стояла кодировка cp_1251, должно быть нормально 
« Last Edit: April 03, 2009, 11:58:04 pm by Makc666 »
Logged

Andrey

  • Coppermine newbie
  • Offline Offline
  • Posts: 16

Посмотрите чтобы для этих полей стояла кодировка cp_1251, должно быть нормально
простите великодушно но что то я не пойму где эти поля?
нашел в usermgr.php
if (utf_strlen($user_name) < 2) cpg_die(ERROR, $lang_register_php['err_uname_short'], __FILE__, __LINE__);
        if ($user_password && utf_strlen($user_password) < 2) cpg_die(ERROR, $lang_register_php['err_password_short'], __FILE__, __LINE__);
utf_ заменил на cp1251 ничего не изменилось..., или про какие поля вы говорили?

Также вы говорили "что при перекодировке нарушаются контрольные суммы зашифрованных паролей" но как мне тогда декодировать эти файлы cpg149_users.*** чтобы пароли не нарушились?  ???
Кто это делал обьясните пожалуйста как вы базу данных о пользователях перекодировали из utf8 в win1251? ???
« Last Edit: April 03, 2009, 11:57:54 pm by Makc666 »
Logged

Alex Revo

  • Moderator
  • Coppermine addict
  • ****
  • Offline Offline
  • Posts: 637
  • Инженер человеческих душ
    • Фото Ростова-на-Дону

Попробуйте убрать только "utf_"

Я когда конвертировал базу не трогал вообще эту таблицу, потом просто вручную перебил испорченные логины. Все остальные данные, в т.ч. и пароли остались не тронутыми.
« Last Edit: April 03, 2009, 11:57:46 pm by Makc666 »
Logged

Andrey

  • Coppermine newbie
  • Offline Offline
  • Posts: 16


Попробуйте убрать только "utf_"

Я когда конвертировал базу не трогал вообще эту таблицу, потом просто вручную перебил испорченные логины. Все остальные данные, в т.ч. и пароли остались не тронутыми.
убрал utf_
далее специально создал ещё логин на русском языке с русским паролем в CPG работающем в UTF-8, потом перенес эту базу в базу которую переконвертировал в win1251. Пробовал 2-мя способами исправлять Логины; первый в администрировании пользователей просто Каракули исправлял на Имя которое было забито ещё в базе UTF-8, строчку пароль оставлял пустым дабы не сбить его, начал заходить ОШИБКА попробуйте снова... вторым способом зашел через phpMyAdmin в эту табличку там исправил Каракули логина на Имя, пароль не трогал и тоже самое ОШИБКА попробуйте снова...  Причем код пароля абсолютно одинаков и в базе UTF и в базе win. Потом создал пользователя с Русским именем но с Англ. паролем и без проблем каракули логина исправил на имя и залогонился. В чем может быть проблема? Почему русский пароль не подходит хотя код пароля абсолютно одинков?
« Last Edit: April 03, 2009, 11:57:35 pm by Makc666 »
Logged

Alex Revo

  • Moderator
  • Coppermine addict
  • ****
  • Offline Offline
  • Posts: 637
  • Инженер человеческих душ
    • Фото Ростова-на-Дону

Я буквально вчера сделал перевод галереи в кодировку 1251 на одном сайте, при этом таблицу пользователей не трогал совсем и файл usermgr не правил, все работает. Сделайте шаг назад, верните таблицу пользователей из бекапа и оригинальный файл. Попробуйте зайти в галерею, если не получится, пробуйте создать пользователя с русским именем и англ. паролем и т.д. О результатах напишите. 
« Last Edit: April 03, 2009, 11:57:22 pm by Makc666 »
Logged

Andrey

  • Coppermine newbie
  • Offline Offline
  • Posts: 16

Я буквально вчера сделал перевод галереи в кодировку 1251 на одном сайте, при этом таблицу пользователей не трогал совсем и файл usermgr не правил, все работает. Сделайте шаг назад, верните таблицу пользователей из бекапа и оригинальный файл. Попробуйте зайти в галерею, если не получится, пробуйте создать пользователя с русским именем и англ. паролем и т.д. О результатах напишите.
таблицу пользователей возращал не раз, оставлял оригинальный файл, зайти могу под собой как админ т.к. у меня и логин и пароль англ. но другие(русские) Логины отображаются корявками всякими, думал просто поправить их, но после исправления логина он не пускает те логины у которых пароль был на русском а те у кого пароль на англ. те логины пускает! но ведь наверняка много у кого из пользователей пароль состоит из русских букв, так вот тогда они не смогут войти! 
« Last Edit: April 03, 2009, 11:57:14 pm by Makc666 »
Logged

Alex Revo

  • Moderator
  • Coppermine addict
  • ****
  • Offline Offline
  • Posts: 637
  • Инженер человеческих душ
    • Фото Ростова-на-Дону

Этот вопрос можно решить волевым решением администратора.
Заведи пользователя с паролем "newpass" (к примеру), посмотри в базе его md5-код, поставь это значение всем пользователям.
Потом следай рассылку на мыло - в связи с обновлением галерелеи ваш пароль был сброшен до "newpass", пожалуйста зайдите в свой профиль галереи и назначьте новый АНГЛИЙСКИЙ пароль. Также в языковой файл стоит добавить примечение при регистрации, что нужно использовать только латиницу.
В общем это не решение, но выход.

Еще можешь попробовать вот что. В файле function.inc.php после:
function cpg_db_connect()
{
        global $CONFIG;
        $result = @mysql_connect($CONFIG['dbserver'], $CONFIG['dbuser'], $CONFIG['dbpass']);
        if (!$result) {
                return false;
        }

добавь:
     $queryString = "SET NAMES cp1251";
     mysql_query($queryString);         

Может это поможет.
« Last Edit: April 03, 2009, 11:57:01 pm by Makc666 »
Logged

Andrey

  • Coppermine newbie
  • Offline Offline
  • Posts: 16

да вроде у меня там это есть, только код чуть другой: 
Code: [Select]
function cpg_db_connect()
{
        global $CONFIG;
        $result = @mysql_connect($CONFIG['dbserver'], $CONFIG['dbuser'], $CONFIG['dbpass']);
mysql_query("SET NAMES cp1251", $result);
        if (!$result) {
                return false;
        }
        if (!mysql_select_db($CONFIG['dbname']))
                return false;
        return $result;
}
Ааа но неужели больше нет способов? а то у меня 150 пользователей как то опасно рассылать всем одинаковый пароль :o :(
Странно всё таки md5-код абсолютно одинаковый но если пароль на русском то не пускает а на англ. пускает(10 раз пробовал), где логика??
« Last Edit: April 03, 2009, 11:59:29 pm by Makc666 »
Logged

Alex Revo

  • Moderator
  • Coppermine addict
  • ****
  • Offline Offline
  • Posts: 637
  • Инженер человеческих душ
    • Фото Ростова-на-Дону

Сложно сказать где логика, либо в базе, либо в файлах.
Если говорить не о решении, а возможном выходе, то посмотри еще раз своих юзеров. Я когда интегрировал галерею с сайтом сначала выкосил все мертвые души из галереи (все у кто не появлялся на сайте полгода или не загрузил ни одного фото), что значительно сократило их список. Потом на сайте повесь объявление, если у кого проблемы со входом, пусть пишут тебе и ты сбросишь пароль. 
« Last Edit: April 03, 2009, 11:56:32 pm by Makc666 »
Logged

Andrey

  • Coppermine newbie
  • Offline Offline
  • Posts: 16

а реально ли с помощью charsetmgr конвертнуть не всю базу а только базу cpg14*_users? т.е. выбрать только её. Когда чарсет запускаю и прошу с UTF на win то он корректно видит все имена в табличке. Когда пробую конвертнуть он говорит что "Произошла ошибка при обращении к базе данных" но в этом способе он пробует ВСЮ базу конвертнуть. Нельзя ли как то у чарсета попросить конвернуть ТОЛЬКО базу users и может тогда он конвертнет и не скажет "Произошла ошибка при обращении к базе данных"??
P.S. Alex Revo как успехи по выпуску, в скором времени, своей сборки галереи специально в кодировке 1251  с настроеным бриджем к Джумла?  ;) Уж очень мечтаю настроить бридж: жумла-копер-пхпбб!  ::)
« Last Edit: April 03, 2009, 11:56:18 pm by Makc666 »
Logged

Andrey

  • Coppermine newbie
  • Offline Offline
  • Posts: 16

да, нашел как попросить чарсет конвертнуть только users тоже самое говорит "Произошла ошибка при обращении к базе данных" :( 
« Last Edit: April 03, 2009, 11:56:09 pm by Makc666 »
Logged

LeaX

  • Coppermine regular visitor
  • **
  • Offline Offline
  • Posts: 96
    • Lost Jack and Kate

О ну надо же зря я тогда оказывается успокоилась (поскорее бы уже нормальная версия была, достало, откровенно говоря, в этих кодах рыться)
Quote
С помощью менеджера альбомов можно заменить названия:)
Менеджер альбомов меняет только названия альбомов, а я говорила про дерево категорий.
Уж не знаю кто как, а я так поняла, что там категории намертво вбиваются - никакой возможности редактирования именно категорий я не нашла.

Quote
Для этого нужно сделать бекап и спрятать подальше, потом запустить charsetmgr.php и попробовать переконвертировать значения c UTF-8 в Win-1251

Я эту pma абсолютно не понимаю и вообще боюсь трогать - если там еще что-нибудь перекосит... (((  :(

Там хоть бы кто 1 раз по-человечески написал какая все-таки кодировка, а то там чего-то все сразу понаписано
MySQL-кодировка:  UTF-8 Unicode (utf8)
А база данных cp1251_general_ci

При этом данные в таблицах открываются utf8, хотя забиты были в win-1251.
Но читается все нормально, русскими буквами и снаружи в внутри.
Фиг поймешь...

Вот например в прошлый раз я почему успокоилась с Галереей? После проделанных шагов  я тут же для проверки вбила один комментарий.
Он у меня нормально отобразился, в кодировке win-1251 снаружи, а в базе почему-то в UTF-8, но тоже нормальными русскими буквами, не крякозябрами.

Загружаю одну фотку. Пока я в админке Галереи, там нормальное название.
Открываю phpMyAdmin - ситуация повторяется как и с комментарием - тоже по-русски, но уже в UTF-8
Смотрю название сайта в разделе-альбоме - крякозябры.

Может раз оно внешне нормально отображается, то и не трогать? Загружать все фотки английскими буквами, пользователей тоже заставить (в правилах указать, что ник только латиницей)
Ну а комментарии нормально и идут - и слава Богу.
Зачем нужно все это ворошить?

Quote
В скором будущем я планирую выпустить свою сборку галереи специально в кодировке 1251  с настроеным бриджем к Джумла.
А на эту штуку можно будет с нынешней перейти?



« Last Edit: April 03, 2009, 11:55:57 pm by Makc666 »
Logged

LeaX

  • Coppermine regular visitor
  • **
  • Offline Offline
  • Posts: 96
    • Lost Jack and Kate

В скором будущем я планирую выпустить свою сборку галереи специально в кодировке 1251  с настроеным бриджем к Джумла.
Позвольте полюбопытствовать, а скоро это уже наступило или... когда?  :) Планируется это дело все еще?
И еще... у меня вот Joostina. Там этот бриджик интересно будет подходить? Там ведь тоже 1251, но например с мостом в SMF кое-какие проблемы возникли. Интересно как тут оно наладится...   
« Last Edit: April 03, 2009, 11:55:52 pm by Makc666 »
Logged

awf

  • Coppermine regular visitor
  • **
  • Offline Offline
  • Posts: 69

немного не в тему..
Общемировая тенденция, это переход на utf8. Таким образом, я хочу и сайт перевести на utf8.
« Last Edit: April 03, 2009, 11:55:43 pm by Makc666 »
Logged
Pages: 1 [2] 3   Go Up
 

Page created in 0.04 seconds with 21 queries.