情報を収集し、データを LDAP に挿入しようとする cgi に送信する Web フォームがあります。問題は、::ldap::add で変数を使用しようとしていて、それが機能しないことです。コードは次のとおりです。
if {[string length env(QUERY_STRING)] != 0} {
set handle [::ldap::connect localhost]
set dn "cn=admin,dc=mycompany,dc=com"
set pw "myPassword"
::ldap::bind $handle $dn $pw
set dn "cn=[ncgi::value givenName] [ncgi::value sn],ou=people,dc=mycompany,dc=com"
set formValues [
puts "cn {{[ncgi::value givenName] [ncgi::value sn]}}"
puts "displayName [ncgi::value givenName] [ncgi::value sn]"
foreach {key value} [ncgi::nvlist] {
if {[string length $value] != 0} {
puts "$key $value"
}
}
puts "objectClass top"
puts "objectClass person"
puts "objectClass organizationalPerson"
puts "objectClass inetOrgPerson"
]
::ldap::add $handle $dn {
$formValues
}
ldap::unbind $handle
}
ただし、$formValues を LDAP に挿入する実際のエントリに置き換えると、問題なく追加されます。
私は TCL を初めて使用するので、このスニペットに明らかなエラーがあったとしても驚かないでしょう。
前もって感謝します!