在ASP

时间:2015-06-10 09:12:13

标签: asp-classic active-directory

我正在开发一个允许用户写入Active Directory的脚本。问题是,当我将字段留空时,会导致错误。然而,当我把价值放入某个空间时,它看起来很开心。我有以下代码:

 <%@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
%>

每当我将字段留空时我得到的错误是为什么我试图在变量中注入空格,因为这似乎在我的表单中起作用。

我得到的错误是在SetInfo行

  

错误'8007200b'   /updateldap.asp,第68行

我不确定我能做什么,因为我已经完成了所有我能想到的事情

1 个答案:

答案 0 :(得分:0)

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

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

e.g。

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