Connection string

Обсуждение Stimulsoft Reports.PHP
Ответить
Slava
Сообщения: 20
Зарегистрирован: 25 май 2010, 09:49
Откуда: Ukraine, Kyiv

Connection string

Сообщение Slava »

Нашел один довольно неприятный проблем:
на хостинге для доступа к MySQL базе стоит пароль, который содержит символы = и ; + имя хоста содержит точки. Соответственно подключения к базе не происходит, как я понимаю именно из-за = и ; в пароле. Выдает Connection error. Хотя откуда это сообщение появляется понять не могу. Ни в одном из php файлов не нашел. Может в database.php в функции parseMySqlConnectionString стоит учесть это и разбирать не просто разделители = и ; , а и учесть кавычки, в которые можно заключить значения параметров в строке подключения, если они содержат эти самые разделители = и ; ?

А может я не прав и просто что-то не так делаю? Просветите, плиз.
Аватара пользователя
Vladimir
Сообщения: 415
Зарегистрирован: 06 авг 2008, 09:48
Откуда: Earth

Connection string

Сообщение Vladimir »

Здравствуйте,

Да, всё верно, это является ошибкой (нужно учитывать случай, если какой-либо параметр заключён в кавычки). Это должен делать метод parseMySqlConnectionString(). Мы добавили реализацию этой возможности в наш to-do лист.

Спасибо.
Slava
Сообщения: 20
Зарегистрирован: 25 май 2010, 09:49
Откуда: Ukraine, Kyiv

Connection string

Сообщение Slava »

Чисто как вариант:

Код: Выделить всё

$parameters = split(";", $connectionString);
меняем на

Код: Выделить всё

$parameters = split("';", $connectionString);
и

Код: Выделить всё

$parts = split("=", $parameter);
заменяем на

Код: Выделить всё

$parts = split("='", $parameter);
После этого пишем строку соединения в виде параметр='значение'; и знаки = в пароле нормально воспринимаются.



Аватара пользователя
Vladimir
Сообщения: 415
Зарегистрирован: 06 авг 2008, 09:48
Откуда: Earth

Connection string

Сообщение Vladimir »

Здравствуйте,

Этот код очень упрощён и охватывает только Ваш случай. Нужно учитывать случаи ввода параметров без кавычек, ввода только некоторых параметров в кавычках, параметров содержащих кавычки, пробелы и переводы строк между параметрами и некоторые другие варианты. До официального релиза мы планируем реализовать такой парсер параметров.

Спасибо.
Slava
Сообщения: 20
Зарегистрирован: 25 май 2010, 09:49
Откуда: Ukraine, Kyiv

Connection string

Сообщение Slava »

Для каждого языка программирования есть определенная формализация операторов, конструкций и т.п.
Аналогично для вашего продукта: зачем учитывать
Vladimir писал(а):случаи ввода параметров без кавычек, ввода только некоторых параметров в кавычках, параметров содержащих кавычки, пробелы и переводы строк между параметрами и некоторые другие варианты.
Если всего лишь нужно написать хелп, где четко указать в каком виде задавать строку подключения. Вот написано как писать строку - так и пиши, другие варианты не пройдут, а в данный момент приходится только догадываться, как эту строку писать. Пока не посмотришь database.php, где идет разбор строки подключения - не напишешь. Если в хелпе будет написано, что строка подключения пишется в виде параметр='значение'; или через двойные кавычки (как вам будет угодно), то необходимость в придумывании учитывающего всевозможные косяки пользователя (ввел параметр в кавычках, в двойных кавычках или вовсе без кавычек) отпадет сама собой. А переводы строк или пробелы между параметрами в строке подключения элементарно убираются чем то типа str_replace("\n", строка_подключения) и все. Зачем придумывать велосипед и тратить усилия на то, чтобы учесть ВСЕ варианты, когда пользователь, не зная что делает (нормального хелпа то нет), и пишет что попало в строке подключения? Я не думаю, что вы пишете парсеры для разбора всевозможной галиматьи, которую можно ввести в другие поля отчета. А таких мест множество. Вот где написал неправильно (не соответствует заданной вами формализации в отчете) - не работает. Повторюсь: зачем придумывать универсальный для всех случаев жизни велосипед, если просто нужно дать пользователю правила, которых нужно придерживаться?

Аватара пользователя
Vladimir
Сообщения: 415
Зарегистрирован: 06 авг 2008, 09:48
Откуда: Earth

Connection string

Сообщение Vladimir »

Здравствуйте,

Дело в том, что есть стандарт написания Connection String: Wiki: Строка подключения

Если уйти от этих правил написания и придумать свои - это будет некорректно, т.к. большинство пользователей (к примеру) не используют спецсимволы в параметрах строки соединения, и кавычки обязательными не являются. Так же, пользователи могут просто скопировать строку соединения, созданную в String Builder-е, который по умолчанию не ставит параметры в кавычки. Подробнее о вариантах написания строки соединения так же можно прочитать на сайте www.connectionstrings.com

Спасибо.
Slava
Сообщения: 20
Зарегистрирован: 25 май 2010, 09:49
Откуда: Ukraine, Kyiv

Connection string

Сообщение Slava »

Vladimir писал(а):Здравствуйте,

Дело в том, что есть стандарт написания Connection String: Wiki: Строка подключения

Если уйти от этих правил написания и придумать свои - это будет некорректно, т.к. большинство пользователей (к примеру) не используют спецсимволы в параметрах строки соединения, и кавычки обязательными не являются. Так же, пользователи могут просто скопировать строку соединения, созданную в String Builder-е, который по умолчанию не ставит параметры в кавычки. Подробнее о вариантах написания строки соединения так же можно прочитать на сайте www.connectionstrings.com

Спасибо.
Владимир, я ни в одном месте не предлагал вам уйти от общепринятых правил. Но только вы сами прочтите внимательно первую ссылку, которую вы мне предложили прочесть. Именно там отражено все то, что я излагал своими словами. Озвучу еще раз:
1. ни один из генераторов паролей не использует одинарные или двойные кавычки. Поэтому если встречаются кавычки в строке соединения- значит они открывают/закрывают значение параметра.
2. Из той же вики: если в строке встречается точка с запятой, то ВСЕ значение параметра должно быть заключено в кавычки.

А тот парсинг строки подключения, о котором вы говорили, заключается в strpos и все. И понятно, что split, который используется сейчас проблему не решит.


Вопрос в догонку: когда поле с текстом, у которого указано wordwrap=true будет расширяться вниз.
Andrew
Сообщения: 586
Зарегистрирован: 09 июн 2006, 12:22

Connection string

Сообщение Andrew »

Здравствуйте,
Вопрос в догонку: когда поле с текстом, у которого указано wordwrap=true будет расширяться вниз.
Это будет доступно в релизе в сентябре.

Спасибо.
Ответить