在 ASP 中将输入留空时出错

Error when leaving input blank in ASP

我正在开发一个允许用户写入 Active Directory 的脚本。问题是,当我将字段留空时,会导致错误。然而,当我输入一个值时,即使是 space,它似乎也很高兴。我有以下代码:

 <%@LANGUAGE="VBScript">
%>
<%
if isEmpty(request.form("subval")) then

response.write("You did not submit the form, please <a href='ldap.asp'>go back</a>")

else
'If the subval field is empty, we know the form has been submitted OK
dim firstname, lastname, email, telephonenumber, mobile, description
ADUser = "LDAP://OU=Staff,OU=Users,DC=example,DC=internal"
' Make AD connection and run query

subval = request.querystring("account_name")
'This value held the CN earlier, it is now overwriten here

Set objCon = Server.CreateObject("ADODB.Connection")
objCon.provider ="ADsDSOObject"
objCon.Properties("User ID") = "EXAMPLE\Exampe"
objCon.Properties("Password") = "TestPassword"
objCon.Properties("Encrypt Password") = TRUE
objCon.open "Active Directory Provider"

Set objCom = CreateObject("ADODB.Command")
Set objCom.ActiveConnection = objCon
objCom.CommandText ="select sAMAccountName, distinguishedName FROM '"+ ADUser +"' where sAMAccountname='"& subval &"'"
Set objRS = objCom.Execute
distinguishedName = objRS.Fields("distinguishedName")    
objRS.Close
objCon.Close
Set objRS = Nothing
Set objCom = Nothing
'We select the distinguishedName from AD

firstname = request.form("firstname")
lastname = request.form("lastname")
email = request.form("email")
telephonenumber = request.form("telephonenumber")
mobile = request.form("mobile")
description = request.form("description")
Const ADS_PROPERTY_UPDATE = 2 

Set objUser = GetObject _  ("LDAP://" & distinguishedName) 
if (IsNull(firstname)) Then
    firstname = "  "
end if

if (IsNull(lastname)) Then
    lastname = "  "
end if

if (IsNull(email)) Then
    email = "  "
end if

if (IsNull(telephonenumber)) Then
    telephonenumber = "  "
end if

if (IsNull(mobile)) Then
    mobile = "  "
end if

if (IsNull(description)) Then
    description = "  "
end if

   objUser.Put "givenName", firstname
   objUser.Put "mail", email
   objUser.Put "sn", lastname
   objUser.Put "mobile", mobile
   objUser.Put "description", description
   objUser.Put "telephoneNumber", telephonenumber
   objUser.SetInfo
   Response.Write("User data for "& subval &" has been modified")
   end if
%>

每当我将字段留空时出现的错误就是我尝试将 spaces 注入变量的原因,因为这似乎适用于我的表单。

我得到的错误是在 SetInfo 行

error '8007200b' /updateldap.asp, line 68

我不确定我可以尝试什么,因为我已经做了我能想到的所有事情

8007200b = LDAP_INVALID_SYNTAX(指定给目录服务的属性语法无效)

我会说你已经解决了问题所在。 LDAP 属性不能为 NULL。您可能甚至不需要空格,空字符串也可以。

例如

if (IsNull(firstname)) Then
    firstname = ""
end if