Проблема с проверкой электронной почты: неверный вызов процедуры или аргумент: 'Mid' - PullRequest
2 голосов
/ 13 марта 2010

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

Ошибка выполнения Microsoft VBScript '800a0005'

Недопустимый вызов процедуры или аргумент: 'Mid'

Не могу сравнить Mid (REVIEWEREMAIL, InStr (1, REVIEWEREMAIL, "@", 1), 1) с "@"?

  If Len(REVIEWERNAME) < 2 Then
   with response
    .write "Error! Please fill in valid name. <br />"
   end with
  ElseIf Len(REVIEWEREMAIL) < 3 Then
   with response
    .write "Error! Please fill in valid email address. <br />"
   end with
  ElseIf Mid(REVIEWEREMAIL, InStr(1, REVIEWEREMAIL, "@", 1), 1) <> "@" Then
   with response
    .write "Error! Please fill in valid email address. <br />"
   end with
  Else

               insert...

End If

Ответы [ 2 ]

1 голос
/ 14 марта 2010

Вероятная причина в том, что REVIEWEREMAIL имеет значение null - в этом случае ваше первое условие IF не будет ловить его, как предполагалось. Len () со значением NULL не возвращает целое число 0.

"Классический" чит ASP для этого состоит в том, чтобы заменить переменную NULL на пустую строку с чем-то вроде

REVIEWEREMAIL = REVIEWEREMAIL  & ""

, который вернет LEN = 0

Кроме того, вы можете поискать в Интернете регулярное выражение, которое проверит допустимые значения электронной почты.

1 голос
/ 13 марта 2010

Вы можете упростить этот последний ElseIf, например:

ElseIf InStr(REVIEWEREMAIL, "@", vbTextCompare) = 0 Then

Потому что, как написано, вы проверяете, есть ли @ в указанном адресе электронной почты.

Если вы обеспокоены дальнейшей проверкой получаемых вами адресов электронной почты, очень много написано об использовании регулярных выражений для проверки адресов электронной почты. Один пример: http://www.codetoad.com/asp_email_reg_exp.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...