|
|
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
|