Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/109: Рейтинг темы: голосов - 109, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 24.07.2012
Сообщений: 16

Организация авторизации пользователей

24.07.2012, 13:31. Показов 22107. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день уважаемые программисты форума.

У меня проблема

Создал 2 формы

форма авторизация a.cs
login и password + 2 кнопки (выход и ок)

форма программы APM.cs

создал БД и в ней таблицу user где имеются логин и пароль для формы авторизации. Ввожу логин и пароль мне пишет, что нет такого логина и пароля. Хотя он в БД присутствует.

Должно работать если пароль верный, то переходит на следующею форму, если нет то пишет ошибку.
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
52
53
54
55
56
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace APM
{
    public partial class a : Form
    {
        public a()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Close ();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            SqlConnection connection = new SqlConnection();
            SqlCommand comand = new SqlCommand();
            SqlDataAdapter adaptor = new SqlDataAdapter();
            DataSet dataset = new DataSet();
 
            connection.ConnectionString = (@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\db_APM.mdf;Integrated Security=True;User Instance=True");
            comand.CommandText = @"SELECT * FROM [User] WHERE user=admin'" + textBox1.Text + "'AND password=123456'" + textBox2.Text + "';";
            connection.Open();
 
            comand.Connection = connection;
 
            adaptor.SelectCommand = comand;
            adaptor.Fill(dataset, "0");
            int count = dataset.Tables[0].Rows.Count;
 
            if (count > 0)
            {
                APM f2 = new APM();
                this.Hide();
            }
            else
            {
                
                MessageBox.Show("Не коректный логен или пароль","", MessageBoxButtons.OK, MessageBoxIcon.Error);
                textBox1.Clear();
                textBox2.Clear();
            }
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.07.2012, 13:31
Ответы с готовыми решениями:

Организация авторизации для приложения
Здравствуйте! Организую вход в приложение. Авторизация должна происходит по юзерам созданным на MS SQL-Server. Посоветуйте готовые...

Код для авторизации и регистрации пользователей
Пишу прогу для диплома на C#, нужно код для авторизации и регистрации пользователей! А как это написать я не знаю!:sorry::'(

Организация авторизации в MVC3 приложении
Дано: удаленная БД MySQL; соединение с БД сделал. теперь необходимо организовать авторизацию в приложении MVC3 и связать ее...

36
47 / 47 / 7
Регистрация: 09.06.2012
Сообщений: 148
24.07.2012, 13:47
Какой-то странный у Вас запрос, кавычки как-то хаотично расставлены, плюс непонятно зачем открывается коннекшен, когда для адаптера это не требуется, он сам все открывает. И таблицу адаптером Вы заполняете уж совсем непонятным способом: неужто таблица в ДатаСете у Вас хранится с названием "0"?
0
 Аватар для Creative
22 / 8 / 0
Регистрация: 13.07.2012
Сообщений: 66
24.07.2012, 13:49
Может я чего не понимаю, но по моему в SQL запросе нужно писать просто WHERE user = textBox1.Text AND pasword = textBox2.Text
0
25 / 25 / 5
Регистрация: 21.10.2009
Сообщений: 95
Записей в блоге: 1
24.07.2012, 14:03
C#
1
@"SELECT * FROM [User] WHERE user=admin'" + textBox1.Text + "'AND password=123456'" + textBox2.Text + "';"
А зачем тут "admin" и "123456"?

Плюс я бы проверял строки, вводимые пользователем, на предмет наличия всякой дряни. Например, если в поле ввода пароля ввести "123' OR 1=1--" то вы пройдете авторизацию под каким-то юзером даже не зная его пароля
0
1 / 1 / 0
Регистрация: 24.07.2012
Сообщений: 16
24.07.2012, 14:06  [ТС]
Цитата Сообщение от Besnywka Посмотреть сообщение
Какой-то странный у Вас запрос, кавычки как-то хаотично расставлены, плюс непонятно зачем открывается коннекшен, когда для адаптера это не требуется, он сам все открывает. И таблицу адаптером Вы заполняете уж совсем непонятным способом: неужто таблица в ДатаСете у Вас хранится с названием "0"?
А как более просто сделать?

Спасибо заранее...

Добавлено через 40 секунд
Цитата Сообщение от IgorTsapko Посмотреть сообщение
C#
1
@"SELECT * FROM [User] WHERE user=admin'" + textBox1.Text + "'AND password=123456'" + textBox2.Text + "';"
А зачем тут "admin" и "123456"?

Плюс я бы проверял строки, вводимые пользователем, на предмет наличия всякой дряни. Например, если в поле ввода пароля ввести "123' OR 1=1--" то вы пройдете авторизацию под каким-то юзером даже не зная его пароля
Да я просто экспериментировал, можно на это не обращать внимания
0
25 / 25 / 5
Регистрация: 21.10.2009
Сообщений: 95
Записей в блоге: 1
24.07.2012, 14:08
Цитата Сообщение от Wiktor591 Посмотреть сообщение
Да я просто экспериментировал, можно на это не обращать внимания
Так может в этом проблемка?
0
1 / 1 / 0
Регистрация: 24.07.2012
Сообщений: 16
24.07.2012, 14:11  [ТС]
Так может в этом проблемка?
Я уже как не пробовал, все запускается. Но не хочет считывать данные с таблицы, как я понял.

А он тупо переходит на условие вот это:
C#
1
2
3
4
5
6
7
 else
            {
                
                MessageBox.Show("Не коректный логен или пароль","", MessageBoxButtons.OK, MessageBoxIcon.Error);
                textBox1.Clear();
                textBox2.Clear();
            }
0
47 / 47 / 7
Регистрация: 09.06.2012
Сообщений: 148
24.07.2012, 14:17
Для начала откорректируйте запрос и попробуйте его выполнить не из кода, а средствами студии, допустим, чтобы исключить возможность ошибки в нем.
Далее, если уж создаете ДатаСет и хотите его заполнить адаптером, прикрепите к ДатаСету табличку
C#
1
dataset.Tables.Add("User");
и заполняйте
C#
1
adaptor.Fill(dataset, "User");
а открытие коннекшна вообще уберите, не нужен оно. Но если уж его открываете, то не забывайте его ЗАКРЫТЬ после выполнения операции!
C#
1
connection.Close()
0
1 / 1 / 0
Регистрация: 24.07.2012
Сообщений: 16
24.07.2012, 14:28  [ТС]
а что значит вот это ошибка

Необработанное исключение типа "System.Data.DuplicateNameException" произошло в System.Data.dll

Дополнительные сведения: DataTable с именем "user" уже принадлежит этому DataSet.
0
25 / 25 / 5
Регистрация: 21.10.2009
Сообщений: 95
Записей в блоге: 1
24.07.2012, 14:36
Цитата Сообщение от Wiktor591 Посмотреть сообщение
Я уже как не пробовал, все запускается. Но не хочет считывать данные с таблицы, как я понял.
Я так понимаю, что здесь ноль
C#
1
int count = dataset.Tables[0].Rows.Count;
А это значит, что запрос выполнен, вот только в результате нет ни одной строки.
0
47 / 47 / 7
Регистрация: 09.06.2012
Сообщений: 148
24.07.2012, 14:37
Так Вы табличку добавили после заполнения адаптером?
напишите так:
C#
1
2
3
dataset.Tables.Add("User");
adaptor.Fill(dataset, "User");
int count = dataset.Tables["User"].Rows.Count; //в принципе можно и dataset.Tables[0].Rows.Count, потому что других таблиц в датасете нет
Ну или еще проще
C#
1
2
adaptor.Fill(dataset);
int count = dataset.Tables[0].Rows.Count;
0
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,246
24.07.2012, 14:52
чтот вы тут понагородили. Можно так сделать:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int count=0;
            
            using (SqlCommand command = new SqlCommand("select * from user where user=? and password=?", connection))
            {
                command.Parameters.AddWithValue("par1", textBox1.Text);
                command.Parameters.AddWithValue("par2", textBox2.Text);
                connection.Open();
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                        count += 1;
                }
                connection.Close();
            }
            if (count == 0)
            {
                MessageBox.Show("Пароль неверен!");
                return;
            }
this.Hide();
Form2 frm2=new Form2();
frm2.Show();
0
1 / 1 / 0
Регистрация: 24.07.2012
Сообщений: 16
24.07.2012, 15:00  [ТС]
Цитата Сообщение от Besnywka
напишите так:
Я так и сделал, ошибку написал вам.

Добавлено через 4 минуты
Цитата Сообщение от Монфрид
чтот вы тут понагородили. Можно так сделать:
Попробовал ваш метод, все работает но при вводе в форму выскакивает ошибка

Необработанное исключение типа "System.InvalidOperationException" произошло в System.Data.dll

Дополнительные сведения: Свойство ConnectionString не инициализировано.
0
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,246
24.07.2012, 15:11
Цитата Сообщение от Wiktor591 Посмотреть сообщение
Я так и сделал, ошибку написал вам.

Добавлено через 4 минуты


Попробовал ваш метод, все работает но при вводе в форму выскакивает ошибка

Необработанное исключение типа "System.InvalidOperationException" произошло в System.Data.dll

Дополнительные сведения: Свойство ConnectionString не инициализировано.
ну вам по-русски написали, что строка подключения задана неверно.
Попробуйте так
C#
1
SqlConnection connection=new SqlConnection(строка подключения);
0
 Аватар для Creative
22 / 8 / 0
Регистрация: 13.07.2012
Сообщений: 66
24.07.2012, 15:16
конечно нет ни одной строчки потому что она ищет поле с именем admin + "textBox1.Text" и тп. 100% в запросе проблема
0
1 / 1 / 0
Регистрация: 24.07.2012
Сообщений: 16
24.07.2012, 15:24  [ТС]
Цитата Сообщение от Монфрид Посмотреть сообщение
ну вам по-русски написали, что строка подключения задана неверно.
Попробуйте так
C#
1
SqlConnection connection=new SqlConnection(строка подключения);
Ввожу строку подключения, выводит другую ошибку

вот эту

Формат строки инициализации не соответствует спецификации, начиная с индекса 0.

вроде понятно написано, а все равно не могу решить проблему.
0
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,246
24.07.2012, 15:31
Wiktor591, у вас строка подключения неверная значит
0
1 / 1 / 0
Регистрация: 24.07.2012
Сообщений: 16
24.07.2012, 17:16  [ТС]
Цитата Сообщение от Монфрид
Wiktor591, у вас строка подключения неверная значит
Исправил

Теперь выдает

Необработанное исключение типа "System.Data.SqlClient.SqlException" произошло в System.Data.dll
Дополнительные сведения: Неправильный синтаксис около ключевого слова "user".

Добавлено через 1 час 32 минуты
Парни выручайте, 2 день сижу уже.

Переделал по новому способу, спасибо Монфриду

НО

Опять тоже самое...

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
        private void button2_Click(object sender, EventArgs e)
        {
            int count = 0;
            using (SqlConnection connection = new SqlConnection(@"Data Source=prodenis\SQLEXPRESS;AttachDbFilename=|DataDirectory|\db_APM.mdf;Integrated Security=True;user Instance=True"))
            using (SqlCommand command = new SqlCommand("select * from [user] where user=' and password='", connection))
            {
                command.Parameters.AddWithValue("par1", textBox1.Text);
                command.Parameters.AddWithValue("par2", textBox2.Text);
                connection.Open();
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                        count += 1;
                }
                connection.Close();
            }
            if (count == 0)
            {
                MessageBox.Show("Пароль неверен!");
                return;
            }
            this.Hide();
            APM frm2 = new APM();
            frm2.Show();
        }
    }
}
Открывается форма, ввожу логин и пароль(даже тот который у меня в таблице) переходит на условие вот это

C#
1
2
3
4
{
                MessageBox.Show("Пароль неверен!");
                return;
            }
пожалуйста помогите решить проблему
0
47 / 47 / 7
Регистрация: 09.06.2012
Сообщений: 148
24.07.2012, 17:36
Запрос опять не доделали:
SQL
1
"select * from [user] where user=' and password='"
где параметры потеряли?
0
1 / 1 / 0
Регистрация: 24.07.2012
Сообщений: 16
24.07.2012, 17:40  [ТС]
Цитата Сообщение от Besnywka Посмотреть сообщение
Запрос опять не доделали:
SQL
1
"select * from [user] where user=' and password='"
где параметры потеряли?
Честно не пойму, что еще добавлять.
Пожалуйста объясните, буду признателен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.07.2012, 17:40
Помогаю со студенческими работами здесь

Организация авторизации в клиент-серверном приложении
Доброе утро. Пишу приложение - есть tcp-сервер и tcp-клиент. Нужно реализовать авторизацию клиента на сервере. Вот есть на стороне...

Система авторизации пользователей
Доброго времени суток дамы и господа. Написал сайт на котором работает система авторизации. Но вот беда. Я не знаю как правильно настроить...

Кампонент авторизации пользователей
Подскажите кампонент для регистрации пользователей, чтобы можно было добавлять новости, стандартный стоит, в нём ничего не понятно, при...

Запрос авторизации пользователей в Skype
Собственно вопрос, как это сделать массово, скажем переезжаю на другой акк, и тяну всех пользователей за собой, как им дать массово запрос...

Настройка авторизации пользователей на сайте
Хочу добавить к интернет магазину авторизацию для пользователей и админа. Я создал отдельно от своего проекта чистый проект и указал...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru