Не работает валидатор

Программирование Web-приложений и Web-сервисов.

Модератор: Ramzes

katt99
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 16.10.2008 (Чт) 15:19

Не работает валидатор

Сообщение katt99 » 16.10.2008 (Чт) 15:24

Здравствуйте. Скажите пожалуйста, в чем закралась ошибка?

Есть форма регистрации, на ней TextBox:

<asp:TextBox ID="BoxLogin" runat="server"></asp:TextBox>

Для прорверки индивидуальности логина есть валидатор: <asp:CustomValidator ID="CustomValidatorLogin" runat="server" ErrorMessage="Этот Логин занят" ControlToValidate="BoxLogin" OnServerValidate="CustomValidatorLogin_ServerValidate"></asp:CustomValidator>

Подпрограмма проверки:
Protected Sub CustomValidatorLogin_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidatorLogin.ServerValidate
Dim dbConn As OleDbConnection
Dim dCmd As OleDbCommand
Dim dr As OleDbDataReader
Dim strConnection As String
Dim strSQL As String
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\auth.mdb;Persist Security Info=False"
dbConn = New OleDb.OleDbConnection(strConnection)
dbConn.Open()

strSQL = "SELECT login FROM AppUser WHERE login=" + args.Value + ""
dCmd = New OleDbCommand(strSQL, dbConn)

dCmd.Parameters.Add(New OleDbParameter("login", args.Value))
dr = dCmd.ExecuteReader()

If (dr.Read()) Then
args.IsValid = False
End If
dr.Close()
dbConn.Close()
End Sub

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Re: Не работает валидатор

Сообщение Sebas » 16.10.2008 (Чт) 19:08

не отвечу на вопрос, но скажу, что при такой реализации, пара юзеров могут "нагнуть" сервер.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

katt99
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 16.10.2008 (Чт) 15:19

Re: Не работает валидатор

Сообщение katt99 » 17.10.2008 (Пт) 8:56

А почему они его загнут? какой еще способ есть проверки индивидуальности пароля?

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Re: Не работает валидатор

Сообщение Sebas » 17.10.2008 (Пт) 9:10

У Тебя на каждый вводимый символ в ТекстБоксе идет запрос к базе данный. Что будет, если я тупо зажму кнопку? Сервер скажет - ой!
используй кнопку "проверить имя". Как реализовано на большинстве сайтов. Только используй аякс контейнер, что бы не перегружать страницу.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

katt99
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 16.10.2008 (Чт) 15:19

Re: Не работает валидатор

Сообщение katt99 » 17.10.2008 (Пт) 9:24

Я тоже сначала кнопку поставила "Проверить имя", с ней и подпрограмма работала. Но что будет если пользователь введет Логин, который уже есть в базе, а кнопку "Проверить логин" нажимать не станет? То есть подпрограмму прверки нужно ставить и на кнопку Проверить логин и на кнопку Зарегестрироваться?
А что такое аякс контейнер? с чем его едят? я новичек :oops:

katt99
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 16.10.2008 (Чт) 15:19

Re: Не работает валидатор

Сообщение katt99 » 17.10.2008 (Пт) 11:48

Я поставила кнопку Проверить логин, и при положительном ответе блокирую ввод в чекбокс.
А при отправке формы проверяю наличие блокировки на чекбоксе

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Re: Не работает валидатор

Сообщение Sebas » 21.10.2008 (Вт) 12:02

katt99 писал(а):Я тоже сначала кнопку поставила "Проверить имя", с ней и подпрограмма работала. Но что будет если пользователь введет Логин, который уже есть в базе, а кнопку "Проверить логин" нажимать не станет? То есть подпрограмму прверки нужно ставить и на кнопку Проверить логин и на кнопку Зарегестрироваться?


А вот тут и поставь валидатор, который будет смотреть на итог проверки

katt99 писал(а):А что такое аякс контейнер? с чем его едят? я новичек :oops:


Ajax - читай.
Вкратце: панель которая обновляет внутренний контент(контролы) без обновления всей страницы
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Не работает валидатор

Сообщение Williams » 24.10.2008 (Пт) 20:29

Аякс действительно полезная вещь. При помощи JavaScript в фоне производятся определенные операции. Например передаются данные, обновляется контент и прочее.

А вот так лучше не делать:

Код: Выделить всё
  strSQL = "SELECT login FROM AppUser WHERE login=" + args.Value + ""


Мало ли что в args :)
И вы думаете, что вас оставят в живых после прочтения этого поста?

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Не работает валидатор

Сообщение iGrok » 24.10.2008 (Пт) 20:52

Williams писал(а):А вот так лучше не делать:
Код: Выделить всё
  strSQL = "SELECT login FROM AppUser WHERE login=" + args.Value + ""

Это точно... )
Вложения
x_f5690f58.jpg
Иначе вот что бывает... )
x_f5690f58.jpg (31.87 Кб) Просмотров: 2373
label:
cli
jmp label

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Re: Не работает валидатор

Сообщение FaKk2 » 25.10.2008 (Сб) 5:46

Sebas писал(а):не отвечу на вопрос, но скажу, что при такой реализации, пара юзеров могут "нагнуть" сервер.

С какой это стати? Что-то я не вижу там AutoPostBack="True", а ServerValidate сработает только при постбэке.

Да и даже если бы AutoPostBack был включен, постбэк произойдет только после потери фокуса.(http://msdn.microsoft.com/en-us/library ... tback.aspx)

Автор, обьясни какая ошибка.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

ASD
Модератор
Модератор
Аватара пользователя
 
Сообщения: 1758
Зарегистрирован: 07.12.2001 (Пт) 21:08
Откуда: Russia

Re: Не работает валидатор

Сообщение ASD » 26.10.2008 (Вс) 0:30

Я б сделал dCmd.ExecuteScalar и проверил есть ли значение.
Тебе по любому нужно знать есть ли такой или нет.. Зачем тащить reader
По поводу валидатора использовал стандартный логин компонент.. там есть валидатор и (по пямяти) вернути validate=true или false и формочка сама все отобразит.
Плюс пихаем это в UpdatePanel ил все работает через Ajax.
Да и у тебя же добавляется параметр к запросу... накой это изврат +бла-бла+? Так и пиши login=@имя параметра. Да и вообще для контактации строк & както удобнее чем +
Moderator VBStreets
---------------------------


Вернуться в ASP.NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29

    TopList