Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/121: Рейтинг темы: голосов - 121, средняя оценка - 4.91
0 / 0 / 1
Регистрация: 11.05.2015
Сообщений: 21
1

Регистрация пользователей

25.04.2016, 13:16. Показов 22233. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. У меня возник такой вопрос. У меня есть форма входа, которая уже знает 2 пользователей : Admin adc User. Для доступа к базам данных. Мне же необходимо создать отдельную форму для регистрации дополнительных User-ов.

Вот скрины формы:

Регистрация пользователей


Регистрация пользователей


Вот код по переходу для Admin:


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 else if (s == "Отец")
            {
                string adm = "";
                StreamReader ustreamReader = new StreamReader("Admin.txt");
                while (!ustreamReader.EndOfStream) //Цикл длиться пока не будет достигнут конец файла
                {
                    adm += ustreamReader.ReadLine(); //В переменную str по строчно записываем содержимое файла
                }
                ustreamReader.Close();
                String a = Convert.ToString(textBox2.Text);
                if (a == adm)
                {
                    Form1.ActiveForm.Hide();
                    Form3 f = new Form3();
                    f.ShowDialog();
                    Close();
                }
                else
                {
                    MessageBox.Show("Пароль для Admin неверный.");
                }
            }

То есть, как видите у меня пароли хранятся в отдельных txt файлах. И я столкнулся с проблемой того, что при регистрации мне необходимо не только просто создавать новые файлы, но и задавать им имя.

Вот то, до чего я допёр:


C#
1
2
3
4
5
6
7
8
9
private void button1_Click(object sender, EventArgs e)
        {
            FileInfo file = new FileInfo("vbbook.txt");
            if (file.Exists == false) //Если файл не существует
            {
                file.Create(); //Создаем
            }
            else MessageBox.Show("Файл уже создан!");
        }

Но так не то, что я хочу. Так как мне нужно, чтобы имя файла задавал именно сам пользователь. Вопрос: как? И нормально ли я всё это делаю или как обычно через жопу?)

Спасибо, если ответите и поможете)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2016, 13:16
Ответы с готовыми решениями:

Регистрация пользователей с администрацией
Нужно создать форму с авторизацией пользователей и регистрацией. И нужно создать раздел...

Регистрация новых пользователей
Здравствуйте. Здесь на форуме помогли с авторизацией пользователей через текстовый файл. Хочу...

Регистрация пользователей
Доброго времени суток.Хочу сделать приложение с регистрацией пользователей и входом в приложение...

Кастомная регистрация пользователей
Всем здравствуйте! Есть проблема: у меня в приложении есть 2 варианта регистрации (2 метода):...

1
Эксперт .NETАвтор FAQ
10410 / 5140 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
25.04.2016, 14:54 2
Цитата Сообщение от KennyDap Посмотреть сообщение
И нормально ли я всё это делаю или как обычно
Как обычно.

KennyDap,
1) Первое. Давайте сделаем объектную модель. У нас есть сущность - пользователь. Создадим класс для него:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    /// <summary>
    /// Пользователь
    /// </summary>
    [Serializable]
    class User
    {
        public string Login;
        public int PasswordHash;
 
        public User(string login, string password)
        {
            Login = login;
            PasswordHash = password.GetHashCode();
        }
    }
Класс User хранит логин пользователя и его пароль. Пароль хранится в виде хеша. Хранение паролей в открытом виде - недопустимо.
К классу применен атрибут Serializable, для того, что бы класс мог сохраняться в файл.

2) Далее, поскольку пользователей у нас будет много, нужен класс, хранящий их. Для этого создадим класс Users:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    /// <summary>
    /// Пользователи
    /// </summary>
    [Serializable]
    class Users : List<User>
    {
        /// <summary>
        /// Вход пользователя
        /// </summary>
        public bool SignIn(string login, string password)
        {
            //ищем юзера по логину
            var user = this.FirstOrDefault(u=>u.Login == login);
            if (user == null) throw new Exception("User login is unknown.");
 
            //проверяем пароль
            if (user.PasswordHash != password.GetHashCode()) throw new Exception("User password is incorrect.");
 
            return true;
        }
 
        /// <summary>
        /// Регистрация нового пользователя
        /// </summary>
        public void SignupNewUser(string login, string password)
        {
            //проверяем, нет ли такого пользователя
            if (this.Any(u => u.Login == login))
                throw new Exception("User with same name exists already.");
 
            Add(new User(login, password));
        }
    }
Этот класс хранит список пользователей, а также имеет два метода для регистрации и входа пользователей. Суть методов описана в комментариях.

3) После того, как объектная модель создана, создадим форму логина/регистрации:
Название: Скриншот 2016-04-25 14.27.16.png
Просмотров: 1452

Размер: 13.9 Кб

Код формы будет следующим:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
    public partial class Form1 : Form
    {
        private Users users;
        private string fileName;
 
        public Form1()
        {
            InitializeComponent();
 
            //получаем папку, где хранятся данные
            var fileDir = AppDomain.CurrentDomain.BaseDirectory;
 
            //получаем имя файла
            fileName = Path.Combine(fileDir, "users.bin");
 
            //если файл существует - загружаем его, если нет - создаем новый объект Users
            if (File.Exists(fileName))
                using (var fs = File.OpenRead(fileName))
                    users = (Users)new BinaryFormatter().Deserialize(fs);
            else
                users = new Users();
        }
 
        private void btEnter_Click(object sender, EventArgs e)
        {
            try
            {
                if(cbSignup.Checked)
                {
                    //регстрация нового юзера
                    users.SignupNewUser(tbUser.Text, tbPassword.Text);
                    //сохраняем юзеров в файл
                    using (var fs = File.OpenWrite(fileName))
                        new BinaryFormatter().Serialize(fs, users);
                }else
                {
                    //вход существующего юзера
                    users.SignIn(tbUser.Text, tbPassword.Text);
                }
            }catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;//выходим из метода, не открыв главную форму приложения
            }
 
            //открываем главную форму приложения...
            Hide();
            new Form().ShowDialog(this);
            Close();
        }
    }
В конструкторе форма загружает файл пользователей, если он есть. При регистрации нового пользователя - сохраняет файл. При успешном входе пользователя - открывает главную форму приложения.

Весь проект целиком: WindowsFormsApplication339 (2).zip.
3
25.04.2016, 14:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2016, 14:54
Помогаю со студенческими работами здесь

Регистрация и создание пользователей
при регистрации, если с таким логином имеется пользователь не произашло регистрация... на asp.net...

Регистрация и авторизация пользователей
Поделитесь опытом, как лучше организовать регистрация и авторизацию пользователей на сайте. Может у...

Регистрация пользователей => запись в файл.
Привет гуру. Подскажите пожалуйста, как сделать регистрацию юзера, так, чтобы информация которую он...

Грамотная структура БД (Регистрация пользователей)
Задание такое: Регистрация пользователей. Настройка персональной информации. «Друзья» пользователя....

После переноса сайта на сервер хостинга, не работает регистрация новых пользователей
После переноса сайта на сервер хостинга, не работает регистрация новых пользователей. Заодно не...

Как удалить пользователей из массива пользователей?
Мне нужно удалить всех 5-ти пользователей из кода. Я так понял нужно null использовать? using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru