Posts
265
Comments
80
Trackbacks
4
Ausfüllen der Benutzerdaten automatisieren

Häufig werden in elektronischen Workflow-Prozeßen auf Intranetbasis die Daten eines Benutzers oder des Antragstellers benötigt. So z.B. wenn ein Mitarbeiter für seinen Antrag ein elektronisches Formular ausfüllen muss.

Um auf der einen Seite dem Benutzer die Eingabe seiner Benutzerdaten wie Name, Vorname, E-Mail-Adresse, Telefonnummer und Abteilung etc zu ersparen und auf der anderen Seite Schreibfehler zu vermeiden können diese Benutzerdaten im Intranet aus dem Exchange-Sever ausgelesen und in das Formular übertragen werden.

Das folgende kleine Beispiel soll dies verdeutlichen. Wir gehen hierbei davon aus, dass das Verzeichnis auf dem Webserver zum einen NT-authentifiziert ist und zum anderen die notwendigen Rechte besitzt um auf den Exchange-Server lesend zugreifen zu können. Der Zugriff auf Exchange selbst erfolgt über LDAP (siehe hierzu auch den Artikel …).

Beim Aufruf der Seite Benutzerdaten_beispiel.asp wird mit „Request.ServerVariables("AUTH_USER")“ die UserID ermittelt, per Javascript ein neues Fenster geöffnet und dem Skript Benutzerdaten_ermitteln.asp die UserID übergeben.

<script language="javascript">
window.open('Benutzerdaten_ermitteln.asp?uid=<%=uid%>','fenster','width=300,height=200')
</script>

 

Das Skript Benutzerdaten_ermitteln.asp überprüft zunächst ob diese UserID in Exchange existiert. Wenn ja werden die Felder Name, Vorname, E-Mail-Adresse und Telefonnummer aus Exchange ausgelesen und per Javascript in das Formular übertragen und das Javascript-Fenster wieder automatisch geschlossen. Wenn diese UserID in Exchange nicht gefunden werden konnte wird ein entsprechender Hinweis ausgegeben.

<%
option explicit

dim strServerName
dim strUID
dim oConn
dim oCommand
dim strQuery
dim ors

response.write "<b>Ihre Benutzerdaten werden ermittelt</b><BR><BR>"

'***Variablen und Konstanten
strServerName     = "Exchange-Server"
strUID         = Request.QueryString("UID")

set oConn = CreateObject("ADODB.Connection")
set oCommand = CreateObject("ADODB.Command")

oConn.Provider = "ADsDSOObject"
oConn.Open "Ads Provider"

set oCommand.ActiveConnection = oConn


'***Select-String zusammensetzen
strQuery = "<LDAP://" & strServername & ">;(&(objectClass=*)(uid=" & strUID & "));ADsPath,mail,department,telephonenumber,sn,givenname,uid;subtree"


oCommand.CommandText = strQuery
set oRS = oCommand.Execute

if not ors.eof then

    '*** UserID wurde in Exchange gefunden

    Response.Write "Ihre Userdaten wurden gefunden!" & vbcrlf    

    '***die Textfelder im aufrufenden Fenster ausfüllen    
    Response.Write "<script language=""JavaScript"">" & vbcrlf
    Response.Write "window.opener.formular.name.value=""" & oRS.Fields("sn") &", " & oRS.Fields("givenname") & """;" & vbcrlf
    Response.Write "window.opener.formular.vorname.value=""" & oRS.Fields("sn") &", " & oRS.Fields("givenname") & """;" & vbcrlf    
    Response.Write "window.opener.formular.email.value=""" & oRS.Fields("mail") & """;" & vbcrlf
    Response.Write "window.opener.formular.telefon.value=""" & oRS.Fields("telephonenumber") & """;" & vbcrlf
    Response.Write "window.close();" & vbcrlf
    Response.Write "</script>" & vbcrlf

else

'*** UserID wurde in Exchange nicht gefunden

    Response.Write ""
    Response.Write "<font color=""red""><b>Diese Benutzerkennung existiert in Exchange nicht.<BR>" & vbcrlf
    Response.Write "Sie müssen die Felder von Hand ausfüllen.</b></font><BR>" & vbcrlf

    Response.Write "<form>"
    Response.Write "<input type=""button"" value="" OK "" onclick=""window.close()"">"
    Response.Write "</form>"
    
end if

oConn.close
set oCommand = nothing
set ors         = nothing
%>

 

Die beiden Skripts findet man in der Datei benutzer.zip

benutzer.zip (1,78 KB)
posted on Monday, October 17, 2005 6:52 PM Print
Comments
No comments posted yet.

Post Comment

Title *
Name *
Email
Url
Comment *  
Please add 2 and 8 and type the answer here: