Каждому пользователю - свой пароль
|
|
Semen_Semenych | Дата: Воскресенье, 06 Декабря 2009, 21:20 | Сообщение # 1 |
Новый участник
Группа: Проверенные
Сообщений: 20
Репутация: 0
Награды: 0
Статус: Offline
| Просмотрев похожие темы форума, своей болячки так и не нашёл. В основном всех интересует, как защитить свою программу паролем. Это можно сделать и инсталлятором. (есть такой на сайте) Мне бы хотелось, чтобы пользователь на входе в программу имел возможность установить свой пароль и менять его в любое время. Тем самым оберегая свою информацию от посторонних. При чём желательно, чтобы была поддержка разных пользователей. Если у кого то есть возможность мне помочь, не думайте, что я дока в ММБ, подоходчивей объясните пожалуйста. Буду Вам признателен.
На его месте, должен быть я...
|
|
| |
DEMBEL | Дата: Воскресенье, 06 Декабря 2009, 22:30 | Сообщение # 2 |
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
| Вначале Вам необходимо в уме составить цепочку логических действий, необходимых для реализации вашей потребности. Как обычно, это и является узким местом большинства страждущих. А уже потом, руководствуясь справкой, интерпретировать эту цепочку языком команд ммб. 1. При старте вашей программы (далее "прога") необходимо вывести диалоговое окно, содержащее поля ввода имени и пароля. Реализация: состряпать самому из графических элементов ммб или нарисовать в фотошопе, вставить туда два обьекта "поле ввода" (EditBox). Можно сделать как на отдельной странице проекта, так и при старте программы. 2. Пользователь вводит имя/пароль в окно, а прога проверяет входящие данные на соответствие нужным значениям, если они не соответствуют, то выходим из проги, иначе продолжаем выполнение. Реализация: Присваиваем значения логина/пароля в переменные (user$, pass$) и производим сравнение оператором If... Then с введенными значениями (in_user$, in_pass$). При несовпадении каких-либо значений выходим из скрипта (команды Return или Break). При совпадении всех значений переходим на нужную страницу (команда Page в конце скрипта) Это мы рассмотрели простейший случай. Пример проекта см. в прикреплениях, пользователь - test, пароль - testpass. Скрипт в кнопке Вход. Организовать поддержку (и регистрацию) многих пользователей, возможность менять пароль, напоминать о забытом пароле реализовать также просто. Достаточно записывать куда-то и считывать в проге данные пользователя и сравнивать с введенными значениями. Записывать можно в реестр или текстовый файл (можно в шифрованном виде, для этого пользоваться плагином). Команды записи/считывания в реестр - SaveVariable/LoadVariable, в файл - несколько разных, см. справку. Сложно? Нет.
Win7x64 SP1 Neobook v5.70 (Trial) WinXP SP3 Neobook v5.62
|
|
| |
Semen_Semenych | Дата: Понедельник, 07 Декабря 2009, 21:44 | Сообщение # 3 |
Новый участник
Группа: Проверенные
Сообщений: 20
Репутация: 0
Награды: 0
Статус: Offline
| Большое спасибо Вам, что Вы откликнулись на мой вопрос. Ваш пример проэкта пришёлся ко двору. И хотя я использовал другой пример (тоже с Вашего сайта), этот мне понравился больше, по сему жить ему в моём проекте (если Вы непротив). Ваши объяснения подсказали мне место поиска нужной информации, проштудирую ещё раз Справку, надеюсь поможет. (Переменные, это моё слабое место.) Стоит сказать, что это всего лишь четвёртый мой проект, ну откуда же у меня будет опыт. Хотя запросы: - как у Гитлера... )))) По поводу цепочки логических действий, судите сами... В прикреплённом файле то, что я вижу на первой странице своего проекта. (ложу в архив, иначе рисунок теряет читабельность)
На его месте, должен быть я...
|
|
| |
DEMBEL | Дата: Вторник, 08 Декабря 2009, 00:49 | Сообщение # 4 |
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
| Quote (Semen_Semenych) В прикреплённом файле то, что я вижу на первой странице своего проекта. Ладно уж, раз вы постарались так все изобразить, помогу вам еще... Вот все бы так делали, а то палками приходится выбивать что человек хочет Quote (Semen_Semenych) иначе рисунок теряет читабельность нет не теряет, при прикреплении рисунка на форум он выводится в уменьшенном виде, а по щелчку открывается полностью. Добавлено (07 Декабрь 2009, 23:25) --------------------------------------------- Я вам позже покажу примерный проект как все должно работать, а пока могу сказать что все где вы отметили желтым маркером должно быть реализовано путем чтения/записи параметров в реестр и последующей их проверке. Либо чтении/записи в файл настроек. Например, "появляется разово при первом запуске и исчезает навсегда". Допустим, при первом запуске покажем окно и запишем в реестр какой-нибудь параметр. Затем проверяем его наличие в реестре - если он есть, то запуск не первый, и окно не показываем. А при первом запуске его не будет (т.к. мы еще его не записали), и окно появится. Мысль понятна? Итак, вам потребуется изучить команды чтения/записи в реестр или файл, а также оператор сравнения условий If... Then. Добавлено (08 Декабрь 2009, 00:49) --------------------------------------------- Я только не понял, как будет происходить регистрация новых пользователей? Они сами будут это делать (тогда нужно предусмотреть отдельную форму регистрации) или вы сами заранее укажете имена всех доступных пользователей при создании проекта (т.е. новых пользователей не будет)? Или же идентификация будет происходить только по паролю (без указания логина)?
Win7x64 SP1 Neobook v5.70 (Trial) WinXP SP3 Neobook v5.62
|
|
| |
Semen_Semenych | Дата: Вторник, 08 Декабря 2009, 18:55 | Сообщение # 5 |
Новый участник
Группа: Проверенные
Сообщений: 20
Репутация: 0
Награды: 0
Статус: Offline
| Добрый вечер. Начну по порядку. Quote (DEMBEL) при прикреплении рисунка на форум он выводится в уменьшенном виде, а по щелчку открывается полностью. Рисунок был больше дозволенного сайтом формата (500х400) при уменьшении потерял читабельность. Пример с реестром очень понятен, спасибо. Понятно и то что, если с логикой последующих действий у меня вроде всё впоряде, то со знанием команд Реестра и с алгоритмом написания скрипта огромный пробел. Надо хорошенько изучить эту тему. Чем сейчас и намерен заняться. Quote (DEMBEL) как будет происходить регистрация новых пользователей? Отдельная форма регистрации уже создана, она обозначена на рис. зелёным цветом. Комп, на котором предполагается установка программы - общего пользования. Вполне логично, что его используют разные пользователи. Было бы неплохо, если бы прога считывала данные о пользователе вошедшего в Оп. Ситему и выбирала что именно выводить на своей первой странице: 1.Новый пользователь программы - предложить установить пароль или не использовать его. Сюда же можно вывести имя пользов. вошедшего в ОС - как логин ( с правом или без права замены, как проще). 2.Старый пользователь с паролем - предложить ввести пароль для проверки. 3.Старый пользователь без пароля - открыть рабочее окно проги (станица 2) Именно пользователь должен решить паролить свою информацию или нет. Программа только распознаёт новый или старый пользователь, с паролем или без него.
На его месте, должен быть я...
|
|
| |
DEMBEL | Дата: Вторник, 08 Декабря 2009, 19:50 | Сообщение # 6 |
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
| Quote (Semen_Semenych) Было бы неплохо, если бы прога считывала данные о пользователе вошедшего в Оп. Ситему и выбирала что именно выводить на своей первой странице: Это можно. только предлагаю вам сделать одно-единственное окно при старте программы. Это будет и приветствие, и окно ввода пароля, и форма регистрации и все остальное, т.к. принципиальных отличий нет. Какие обьекты нужно показать на окне, а какие спрятать - составляйте сами, команды Show/Hide помогут. так вы уменьшите себе геморроя, поверьте.
Win7x64 SP1 Neobook v5.70 (Trial) WinXP SP3 Neobook v5.62
|
|
| |
Semen_Semenych | Дата: Суббота, 12 Декабря 2009, 22:15 | Сообщение # 7 |
Новый участник
Группа: Проверенные
Сообщений: 20
Репутация: 0
Награды: 0
Статус: Offline
| DEMBEL, Согласен с Вами. Я до этого не додумался, слепил хоть и на одной странице, но в разных окнах. Переделаю! Спасибо за совет.Добавлено (12 Декабрь 2009, 22:15) --------------------------------------------- С одним окном при старте, вопрос закрыт(переделал). Изучение тоже дало свои результаты. Все пункты отмеченные маркером поборол, за исключением привязки к новому пользователю(ещё и не брался). Ни как не удаётся записать значение переменной "NovPassword$" в реестр. И хотя сам параметр в реестре создаётся, при вводе нового пароля, в него ни чего не записывается. Соответственно при новом старте проги, на приглашение ввести пароль(новый), реакция однозначная - "не верный пароль" Если вас не затруднит, дайте пример записи кода строковой переменной в реестр, для сравнения. Я использовал пример из Help-а, может чего напутал...
На его месте, должен быть я...
|
|
| |
DEMBEL | Дата: Суббота, 12 Декабря 2009, 22:50 | Сообщение # 8 |
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
| Я начал делать подобный проект для примера, но гораздо более сложный (с шифрованием пароля, системой регистрации пользователей и еще массой всякого). Я бы дал вам посмотреть что я наделал, но боюсь запутать вас еще больше. А закончить его полностью и выложить на сайте смогу видимо только после Нового года, т.к. занялся другим. Если дело не горит, то можете потом его использовать. Quote (Semen_Semenych) Если вас не затруднит, дайте пример записи кода строковой переменной в реестр, для сравнения. in_pass$ - убедитесь, что в свойствах поля ввода назначили запись в ту же самую переменную, которую будем сохранять. Возможно тут вы ошиблись, и сохраняете несуществующую пустую переменную. Также проверьте регистр букв: In_pass$ и in_pass$ - разные вещи. При сохранении пароля пишем SaveVariable("Password","in_pass$") - сохраняем переменную in_pass$ в ключе Password При старте проекта после введения пароля проверяем его LoadVariable("Password","proverka$") - загружаем в переменную proverka$ значение ключа Password, и сравниваем с ним пароль введенный в поле ввода: If (in_pass$ = proverka$) Then Message ("Пароль принят", "") ... Else Message ("Пароль неверный", "") End
Win7x64 SP1 Neobook v5.70 (Trial) WinXP SP3 Neobook v5.62
|
|
| |
Semen_Semenych | Дата: Воскресенье, 13 Декабря 2009, 17:41 | Сообщение # 9 |
Новый участник
Группа: Проверенные
Сообщений: 20
Репутация: 0
Награды: 0
Статус: Offline
| Quote (DEMBEL) Я начал делать подобный проект для примера Очень любопытно было бы на него посмотреть. Конечно время есть, меня ни кто не подгоняет, тем более (если всё получится...) это бескорыстная помощь другу. Однако, останавливатся и ждать готовенького не буду, буду продолжать (это болото так затягивает...). Столько уже нового для себя открыл, а вопросы только добавляются. Quote (DEMBEL) Возможно тут вы ошиблись, и сохраняете несуществующую пустую переменную. Именно так всё и было. Спасибо. Теперь сохраняет как положено. Но возникла новая проблемма, нужно чтобы прога стартовала с дополнительным условием (по счётчику она уже стартует). При применении пароля мне не нужно, чтобы при старте на первой странице были видны объекты (сменить пароль и кнопка перехода далее), нужно только объект(проверки пароля и кн. вход) и в тоже время, при возврате со второй стр. на первую - на оборот. У меня же выходит - или все объекты видны или ни одного. По поводу старта думаю так(поправьте если ошибаюсь), нужно придать кн. "применить" (новый пароль) два статуса - да/нет, скажем: нажал "применить", статус - Да нажал "не использовать", статус - Нет ввести проверку состояния кн. "применить", и тогда с учётом статуса записать дополнительное условие при старте. If ..... Then Только как это реализовать ума не приложу, возможно опять через реестр. Тогда как их обнулять эти статусы в реестре ... Если первая часть вопроса хоть как то прослеживается, вторая вообще тёмный лес. Добавлено (13 Декабрь 2009, 17:41) --------------------------------------------- Хотя она может отпасть сама собой при решении первой.
На его месте, должен быть я...
|
|
| |
DEMBEL | Дата: Воскресенье, 13 Декабря 2009, 17:53 | Сообщение # 10 |
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
| Сгруппируйте (выделите обьекты и Ctrl+G или меню Arrange) нужные обьекты в группы (Group objects), тогда вы сможете показывать/прятать группы сразу со всеми нужными обьектами одной командой, где в качестве обьекта укажете имя группы. Quote (Semen_Semenych) При применении пароля мне не нужно, чтобы при старте на первой странице были видны объекты Логика такая - если пароль применен, то пишем в реестр числовую (без $) переменную со значением 1. При старте читаем значение в переменную, сравниваем если оно = 1, то не показываем группу обьектов (сменить пароль и кнопка перехода далее) Quote (Semen_Semenych) и в тоже время, при возврате со второй стр. на первую - на оборот. При возврате опять читайте значение переменной и поставьте условие, что если она равна =1 то показывать уже другую группу (сменить пароль и кнопка перехода далее). На всякий случай, посмотрите команду Invert - по моему вам как раз пригодится. А для скрытия/показа обьектов на других страницах можно явно указать страницу, в таком синтаксисе: Show("Page 2::Text") Для "обнуления" значений в реестре просто пишите пустую переменную (или равную 0, вы же уже "прокололись" на этом ранее ). В общем, все делается в полном соответствии как вы и написали, надо только перевести с русского на скрипты, все очень просто.
Win7x64 SP1 Neobook v5.70 (Trial) WinXP SP3 Neobook v5.62
|
|
| |
Semen_Semenych | Дата: Понедельник, 14 Декабря 2009, 23:15 | Сообщение # 11 |
Новый участник
Группа: Проверенные
Сообщений: 20
Репутация: 0
Награды: 0
Статус: Offline
| Ну вроде одолел... Правда по своему. Обнулять значения в реестре не стал, просто задал конкретную цифру и в условии, тоже конкретно, прописал что-когда выполнять. Была заморочка с вводом пароля на проверку. Введённый пароль не сравнивался с переменной из реестра(переменная грузилась,проверял командой Message). Очистка EditBox-а была в самом верху скрипта, перенёс в самый низ - Начал сравнивать, но только со второй попытки. Из положения вышел тем, что назначил ещё одну очистку только раньше(на старте страницы). Теперь нормально сравнивает значение и пускает в прогу. Другого способа не придумал. С переходом со траницы на страницу ни чего не вышло. Замкнутый круг получается. Если покажу группу с привязкой к реестру, пользователь может выйти раньше из проги не нажав запирающую кнопку и прога запускается открытой даже если и запоролена. Этот переход мне был нужен для смены пароля, решил что создам кнопку и продублирую форму на второй странице, а переход сниму.
На его месте, должен быть я...
|
|
| |
Oleg | Дата: Понедельник, 21 Декабря 2009, 15:11 | Сообщение # 12 |
Любопытный
Группа: Пользователи
Сообщений: 39
Репутация: 0
Награды: 0
Статус: Offline
| Может и на мой вопрос найдётся ответ Мне кажется если программа под паролем, то на разные компы нужны разные ключи. Я думаю надо дописать в код чтото уникальное из компютера (вроди серииника винды), но как считать и записать в переменную? А можеть есть чёнибуд проще? Что уникального есть компе.?
|
|
| |