У меня есть веб-форма, которая собирает информацию и отправляет ее в cgi, который пытается вставить данные в LDAP. Проблема в том, что я пытаюсь использовать переменную с :: ldap :: add, и она просто не работает. Вот код:Добавление объектов в LDAP через CGI
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, поэтому я не удивлюсь, если в этом фрагменте были некоторые вопиющие ошибки.
Заранее благодарен!
спасибо! Я планирую проверить входные данные; Я не включил этот код в этот пример, потому что думал, что это уберет от проблемы, которую я пытался решить. Еще раз спасибо!! – musashiXXX
Я внес изменения, и у меня все еще есть проблемы, но теперь я понимаю, что я делаю неправильно. После исправления кода я вставил следующую строку, чтобы увидеть, правильно ли построена команда: puts $ formValues Он выплевывает соответствующую информацию, и я проверил ее полностью, чтобы убедиться, что она правильная формате, но по какой-то причине запись не вставлена. Я ценю вашу помощь! – musashiXXX
Не могу сказать из описания сейчас. Попробуйте остановить #tcl на freenode. Там есть много знающих людей, которые смогут помочь, а некоторые вещи просто легче отлаживать с более прямым взаимодействием ... –