Есть html-форма, через неё методом POST передаются значения полей, которые заполнил пользователь. Вот код формы: HTML: <form action="ldapadd.php" method=post> <table border=0> <tr bgcolor=#cccccc> <td width=150>Item</td> <td width=15>Entire</td> </tr> <tr> <td>CN</td> <td align=left><input type="text" name="id_cn" size=120 maxlength=120></td> </tr> <tr> <td>SN</td> <td align=left><input type="text" name="id_sn" size=120 maxlength=120></td> </tr> <tr> <td>EMAIL</td> <td align=left><input type="text" name="id_mail" size=120 maxlength=120></td> </tr> <tr> <td colspan=2 align=center><input type=submit value="Submit Order"></td> </tr> </table> </form> А вот код ldapadd.php PHP: <? // create short variable names $id_cn = $_POST['id_cn']; $id_sn = $_POST['id_sn']; $id_mail = $_POST['id_mail']; //$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; $ldaphost='ldap://10.0.3.185'; $ldapport='389'; $ldapuser='cn=book_rw,ou=people,dc=domain,dc=lin'; $ldappassword='book_rw'; $dc='ou=addressbook,dc=domain,dc=lin'; $attr = array('cn','mail','sn'); $filter='(&(objectclass=*))'; $ldapconn = ldap_connect($ldaphost, $ldapport) or die("Could not connect to $ldaphost" . ldap_error($ldapconn)); if (ldap_set_option($ldapconn,LDAP_OPT_PROTOCOL_VERSION,3)) { echo "Using LDAP v3"; }else{ echo "Failed to set version to protocol 3"; } if ($bind=ldap_bind($ldapconn, $ldapuser, $ldappassword)) { echo("Login correct"); } else { echo("Unable to bind to server.</br>"); echo("msg:'".ldap_error($bind)."'</br>"); } $info["cn"] = $id_cn; $info["sn"] = $id_sn; $info["mail"] = $id_mail; $info["objectclass"] = "inetOrgPerson"; ldap_add($ldapconn,"cn=$id_cn,$dc",$info) or die("Could not add new entry!" . ldap_error($ldapconn)); ldap_unbind($ldapconn); ?> Проблема заключается в том, что если пользователь вводит текст на кирилице, то вылазит ошибка (если латиницей, то всё нормально): Код (Text): Warning: ldap_add() [function.ldap-add]: Add: Invalid DN syntax in /var/www/localhost/htdocs/ldapadd.php on line 69 Could not add new entry!Invalid DN syntax Сервер локализирован под UTF-8. Если в самом ldapadd.php написать ручками на русском значения то отрабатывает нормально. Если выводить передаваемые от формы значения, то тоже выводится нормально. Подскажите, как можно решить эту проблему?
skeletor можете пока просто удалить аватарку, отредактировать первый пост, заменить теги [code ][ /code] на html и php (я не придираюсь просто читать неудобно ) зы: так что это за пингвин?)
jenya777777 фууух, я тут на линуксойда наткнулся хотел пообщаться) все малину .... испортил ) skeletor а если в html документ поставить <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> а в ldapadd.php такой же хедер?
Попробую. в ldapadd.php хедера вообще нет. Он там нужен? ПС. Я вообще-то FreeBSD'шник Просто аватарка осталась от линукса
Так же ругаается. Проблема кроется в строке "cn=$id_cn,$dc". Видимо русские символы неправильно передаются или оно как-то их изменяет.
Да, спасибо оно. Пару экспериментов с iconv и заработало. В итоге блок Код (Text): $id_cn = $_POST['id_cn']; $id_sn = $_POST['id_sn']; $id_mail = $_POST['id_mail']; заменить на такой Код (Text): $id_cn = iconv("utf-8","utf-8",$_POST['id_cn']); $id_sn = iconv("utf-8","utf-8",$_POST['id_sn']); $id_mail = iconv("utf-8","utf-8",$_POST['id_mail']); Странно, но именно такой вариант заработал. Не могу понять почему.