Пароли на скачивание файлов в Member Area меняются автоматически каждый день
Если вам нужно скачать какой то скрипт, за паролем ко мне в ЛС
привет какирам
kerk
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Не можете скачать вложение? Изменения в правах групп пользователей внимательно читаемэту и эту темы Короткая версия - тут
Перевод форума с 1251 на UTF8 - старые ссылки на форум и ошибки базы
0
Всем вечер добрый!
Возник вот такой интересный вопрос. Несколько дней назад форум на вобле 3.8.0 был перенесён на новый сервер. Под переезд был запланирован давно уже откладываемый переход на UTF8 (ранее форум был в 1251).
Собственно форум успешно переехал, кодировка успешно изменена и всё крутится нормально, но возникла интересная проблемка: периодически на админскую почту сыпятся ошибки БД вида:
Code:
Ошибка базы данных в vBulletin 3.8.0:
Invalid SQL:
SELECT *
FROM vb_tag
WHERE tagtext = '???????????? ????';
Ошибка MySQL : Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
Номер ошибки : 1267
Возникает как при простом поиске по форуму, так и при поиске по имени юзера и поиске по тегам. Разумеется, сами по себе все поиски работают нормально, такое происходит, когда на форум приходят по старой ссылке, содержащей русские символы в 1251. Чаще всего приходят таким образом даже не люди - поисковые роботы.
Внимание, вопрос: нет ли идей, как без большого геморроя эти грабли побороть? Уж очень не хочется поисковикам в течение энного времени страничку с ошибкой показывать.
нужно переписать все теги
в БД они хранились в cp1251, а сейчас UTF-8
посмотри так же другие таблицы, как данные выглядят в самой базе (через панель акк. или майадмин)
так же могут быть проблемы с входом узера в свой кабинет, если этот пользователь создавал свои папки для ЛС на русском языке (я писал скрипт для решения этой проблемы, где то лежит на форуме)
@Vovan
Специалист
Join Date: Jan 2006
Location: 127.0.0.1
Posts: 226
Версия vB: 4.1.x
Reputation:
Professional 428
Репутация в разделе: 136
0
Не, вы меня не поняли. Форум работает абсолютно нормально, и теги и поиск и всё остальное, в базе всё ок, можно не сомневаться, уж в этом-то была не одна собака съедена ;)
Проблема возникает только со старыми ссылками, которые хранятся в кэше поисковиков. Т.е. на форум приходит запрос например вида "/tags.php?tag=%EC%EB%F8%E0_и_т.д." (содержащий в URL русские символы кодировки 1251). Запрос идёт в БД, а там UTF8, в итоге имеем ошибку 1267.
@zCarot
zМарковь
Хочет третью строчку =)
Join Date: May 2005
Location: Лольск
Posts: 2,884
Версия vB: 3.8.x
Reputation:
Гуру 7452
Репутация в разделе: 5099
0
Vovan, сделай в tags.php конвертацию в utf8 при получении похожего на cp1251 (можно, допустим, получить номер символа и сравнить с диапазоном для cp1251)
@Vovan
Специалист
Join Date: Jan 2006
Location: 127.0.0.1
Posts: 226
Версия vB: 4.1.x
Reputation:
Professional 428
Репутация в разделе: 136
2
zCarot, как вариант - да, уже думал об этом. Но как минимум тоже самое придётся делать и с search.php и с memberlist.php, и наверняка где-то ещё вылезет. И так при каждом обновлении движка. Это и получится геморрой ;)
Собственно потому и спросил, вдруг кто-то сталкивался и нашёл более изящный вариант. Не я же первый меняю кодировку форума. ;)
Vovan добавил 02.02.2009 в 15:23
Ну что же, пока решил эту проблему так (пока исправление только для tags.php, по мере возникновения ругани на другие скрипты добавлю исправление и для них):
Ищем в tags.php текст
Code:
$tag = $db->query_first("
SELECT *
FROM " . TABLE_PREFIX . "tag
WHERE tagtext = '" . $db->escape_string($vbulletin->GPC['tag']) . "'
");
И добавляем ДО него строчку
Code:
if (!preg_match('//u',$vbulletin->GPC['tag'])) $vbulletin->GPC['tag'] = iconv("windows-1251", "UTF-8", $vbulletin->GPC['tag']);
Красным выделена предыдущая кодировка форума.
Last edited by Vovan : 02-02-2009 at 04:23 PM.
Reason: Добавлено сообщение
@Dimitrij
Простоузер
Join Date: Sep 2013
Posts: 63
Версия vB: 5.x.x
Reputation:
Novice 3
Репутация в разделе: 2
0
Переводил таблицы БД (vb 5.30) в utf8_general_ci.
Почему-то перевелись все, но кроме двух таблиц: words и phrase
команда SQL "ALTER TABLE `имя_БД`.`phrase` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;"
выдала ошибку
Quote:
#1062 - Дублирующаяся запись 'common.langDirRTL-4' по ключу 'name_lang_type'
а команда
Quote:
ALTER TABLE `имя_БД`.`phrase` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
выдала ошибку:
Quote:
#1062 - Дублирующаяся запись 'всё' по ключу 'word'
Подскажите, как решить эту проблему. Или может быть можно оставить эти две таблицы в cp1251_general_ci и это не вызовет никаких проблем?
Dimitrij добавил 09.05.2017 в 21:37
в сообщении выше ошибка: вторая комманда, естественно
ALTER TABLE `имя_БД`.`words` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Last edited by Dimitrij : 05-09-2017 at 10:37 PM.
Reason: Добавлено сообщение
@AleX
vBManiac
Join Date: May 2007
Location: Украина, Киев
Награды в конкурсах:
Posts: 5,944
Версия vB: 1.x.x
Пол:
Reputation:
Мастер 3438
Репутация в разделе: 1073
0
@Dimitrij, если база небольшая, то можно сделать это и ручками в редакторе.