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

Наиболее безболезненный переход с 2.2 std на 2.3 plus

Страницы: 1  |  2
10.04.2006, 13:34
urix

Зарегистрирован:
2006-04-06
Сообщений: 30

Подскажите, пожалуйста, _правильный_ способ перенести уже существующие сайты с 2.2 стд на 2.3 плюс.
Дамп sql базы уже есть.

urix
10.04.2006, 14:07
Гость

Зарегистрирован:
1970-01-01
Сообщений: 665

Легкого способа вообще нет. Есть возможность установить обновления, но они обновят вам только до 2.3 Стандарт. Дальше можно поставить недостающие модули, которые имеются в Плюс... Ну а потом разбираться с многоязычным интерфейсом административной части, поскольку его патчинга не происходит.
10.04.2006, 14:40
urix

Зарегистрирован:
2006-04-06
Сообщений: 30

ЗайдЈм с другой стороны - при установке 2.3 плюс я могу попытаться импортировать старый сайт? Там есть такая опция...
Либо попробовать создать через админку тестовый сайт, а потом перелить mysql?

urix
10.04.2006, 14:55
Гость
Гость

Мне кажется, должен сработать такой вариант
1. Обновляете патчами 2.2 до 2.3.8
2. Если надо, обновляете Plus до 2.3.8
3. БерЈте из Plus таблицы Modules и Patch и вставляете их в дамп Standard
4. Заливаете дамп стандарда и на всякий случай устанавливаете все плюсовые патчи.

Если у вас всЈ более или менее стандартно, никакой глубокой кастомизации не было, то проблем быть не должно. У меня плюса нет, но с 2.2 St на 2.3 St + модули я переходил примерно так. Правда оказалось, что проще пересобрать сайт с нуля (что я и сделал, благо время не поджимало). В любом случае, данные на качественно подготовленную пустую базу и при сохранении структуры шаблонов, перекидываются без проблем.
12.04.2006, 13:53
urix

Зарегистрирован:
2006-04-06
Сообщений: 30

Хм... то ли мне не везЈт...
Перекидываю шаблоны (тупо copy-paste, не трогая базы руками)
Захожу на сайт как посетитель - и здрасссьте
Код:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/webd/netcat/require/s_loadenv.inc.php on line 220
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/webd/netcat/require/s_loadenv.inc.php on line 221

И так далее...

urix
13.04.2006, 10:56
Гость

Зарегистрирован:
1970-01-01
Сообщений: 665

Цитата:
$res = mysql_query ("SELECT * FROM Class WHERE ".$class_cond,$LinkID);
$class_env = mysql_fetch_assoc($res);
mysql_free_result($res);


Что-то вы непонятно перекидываете, раз такой простой запрос не может выполниться.
13.04.2006, 14:01
urix

Зарегистрирован:
2006-04-06
Сообщений: 30

Почему не создаЈтся таблица `Message`?
И если она должна существовать (подтверждение чему не было найдено в инсталляционных sql-дампах), какая у неЈ должна быть структура?
Почему не идЈт проверка на валидность sql-запросов?
Кому интересно смотреть на все предупреждения? Конечно - их можно отключить, но это не решение.
Ошибок с неэкранированными значениями в запросах я нашЈл ещЈ достаточно.

urix
13.04.2006, 13:12
urix

Зарегистрирован:
2006-04-06
Сообщений: 30

НашЈл.
файл s_loadenv.inc.php, строка 206.
Кто вас учил писать в mysql-запросах значения БЕЗ КАВЫЧЕК?!!!!!!!!!
Вы вообще программировать умеете? улыбка
Неправильно, то есть как у вас
Код:
$class_cond = "Class_ID=".$Array["Class_ID"];

Правильно
Код:
$class_cond = "Class_ID='".$Array["Class_ID"]."'";


Лентяи. Честно говоря, я не ожидал от конторы, которая занимается продажей своего программного продукта, такого сырого кода, и грешил на наши настройки системы... вместо того, чтобы внимательно отладить ваши же ошибки.
Shame on you.


urix
13.04.2006, 14:50
Гость
Гость

urix писал(а):
Кто вас учил писать в mysql-запросах значения БЕЗ КАВЫЧЕК?!!!!!!!!!
Вы вообще программировать умеете? улыбка

А Вы?! И кто Вам сказал, что в mysql-запросах значения нужно писать в кавычках?!
Тут суть проблемы в возможности произвести sql-инъекцию в запрос к БД.
Все переменные из внешнего окружения при необходимости экранируются, проверяются на соответствующее наличие тех или иных "недопустимых" символов. Переменные из внутреннего окружения в большинстве случаях не проверяются из-за ненадобности.

По Вашему примеру: в переменную $Array["Class_ID"] записывается ID таблицы, который имеет ТОЛЬКО численное значение (иного тут и быть не может) и сделать тут какую-либо sql-инъекцию не получится!

urix писал(а):
Лентяи. Честно говоря, я не ожидал от конторы, которая занимается продажей своего программного продукта, такого сырого кода, и грешил на наши настройки системы... вместо того, чтобы внимательно отладить ваши же ошибки.

Я считаю, что Ваши обвинения и тем более оскорбления по большому счету не обоснованы и неуместны. Вы похожи скорее на юзера (а никак не на разработчика и специалиста), который при возникновении проблемы сразу начинает орать и махать руками и обвинять всех и вся. Такой путь решения Вас ни к чему хорошему не приведет...

urix писал(а):
Почему не создаЈтся таблица `Message`?
И если она должна существовать (подтверждение чему не было найдено в инсталляционных sql-дампах), какая у неЈ должна быть структура?

А такой таблицы вообще нет. Если бы Вы хоть немного разобрались в движке системы, то имели бы представление о том, что в существуют только таблицы MessageXX, где ХХ - это ИД шаблона. Первые несколько полей - являются системными и присутсвуют в каждой такой таблице. Остальные поля Вы задаете сами.

urix писал(а):
Ошибок с неэкранированными значениями в запросах я нашЈл ещЈ достаточно.
Поздравляю! Но вот если бы Вы смогли использовать эти неэкранированные значения, скажем, для взлома сайта - то я лично бы Вам памятник поставил и медаль вручил.

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

Удачи!
14.04.2006, 11:13
Гость

Зарегистрирован:
1970-01-01
Сообщений: 665

urix
С таким отношением к окружающим вам предстоит разбираться в проблемах самостоятельно.

Вы что-то там делаете неведомое, а потом обвиняете разработчиков.

1. Описывайте то, что вы пытаетесь сделать.
2. Не надо делать того, о чем вы не имеете представления, в том числе и о последствиях вашего действия.
17.04.2006, 17:04
urix

Зарегистрирован:
2006-04-06
Сообщений: 30

Файл s_loadenv.inc.php
Исправил строчки

206:$class_cond = "Class_ID='".$Array["Class_ID"]."'";

212:$class_cond = "System_Table_ID='".$user_table_id."'";

262:$res = mysql_query("SELECT ".$fields." FROM Catalogue WHERE Catalogue_ID='".$Array["Catalogue_ID"]."'",$LinkID);

223:if (gettype($class_env)=="array") while (list($key, $val) = each($class_env))

На 223 строке $class_env передаЈтся иногда как FALSE (что является отдельным предметом разговора, ибо проверку на валидность sql-запроса сделать было сложнее, нежели ввести это условие) - что вызывает законное недоумение функции each, которая потребляет в себя либо объекты, либо массивы

Файл s_list.inc.php
Исправил строчки

97:$res = mysql_query("SELECT Field_ID, Field_Name, TypeOfData_ID, Format".(!$user_table_mode?", DoSearch":", 1 AS DoSearch")." FROM Field WHERE ".($user_table_mode?"System_Table_ID='".$userTableID."'":"Class_ID='".$classID."'")." ORDER BY Priority", $LinkID);

181:if (!$admin_mode && !$ignore_check) $cond_mod = " AND a.Checked='1'";
Тут - неэкранированы значения в sql-запросе, что вызывает ошибку mysql "you have syntax error near" и проч.

201:if (!mysql_error ()) if ($cond_group) $totRows = mysql_num_rows($res); else list($totRows) = mysql_fetch_row($res);
Тут пришлось ввести проверку на ошибку mysql. Ибо предыдущий запрос тупо формировался вне зависимости от валидности входящих в него переменных (определена она, строка она, или булева), что вызывало иногда ошибки.

302: if (gettype($res)=="resource") $rowCount = mysql_num_rows($res);

380:if (gettype($res)=="resource") mysql_free_result($res);
Та же ситуация - если запрос выполнялся с ошибками, $res имел значение FALSE


Если интересно - конфигурация машины, на которой всЈ это вылезло
Linux inciter 2.6.11-gentoo
Mysql 4.1.12
Php - 4.4.0


urix
198 196 2006-04-21 23:46:15 7939
Страницы: 1  |  2
Описание проекта